44import static org .junit .jupiter .api .Assertions .assertFalse ;
55import static org .junit .jupiter .api .Assertions .assertNull ;
66
7- import java . lang . reflect . Field ;
7+ import datadog . trace . test . util . ControllableEnvironmentVariables ;
88import java .util .ArrayList ;
99import java .util .Arrays ;
1010import java .util .HashMap ;
@@ -35,14 +35,16 @@ public class ConfigHelperTest {
3535 private static final String NEW_ALIAS_KEY_1 = "DD_NEW_ALIAS_KEY_1" ;
3636 private static final String NEW_ALIAS_KEY_2 = "DD_NEW_ALIAS_KEY_2" ;
3737
38+ private static ControllableEnvironmentVariables env ;
39+
3840 private static ConfigHelper .StrictnessPolicy strictness ;
3941 private static TestSupportedConfigurationSource testSource ;
4042
4143 @ BeforeAll
4244 static void setUp () {
45+ env = ControllableEnvironmentVariables .setup ();
46+
4347 // Set up test configurations using SupportedConfigurationSource
44- //
45- // ConfigInversionMetricCollectorProvider.register(ConfigInversionMetricCollectorImpl.getInstance());
4648 Set <String > testSupported =
4749 new HashSet <>(Arrays .asList (TEST_DD_VAR , TEST_OTEL_VAR , TEST_REGULAR_VAR ));
4850
@@ -73,13 +75,14 @@ static void tearDown() {
7375 @ AfterEach
7476 void reset () {
7577 ConfigHelper .get ().resetCache ();
78+ env .clear ();
7679 }
7780
7881 @ Test
7982 void testBasicConfigHelper () {
80- setEnvVar (TEST_DD_VAR , TEST_DD_VAR_VAL );
81- setEnvVar (TEST_OTEL_VAR , TEST_OTEL_VAR_VAL );
82- setEnvVar (TEST_REGULAR_VAR , TEST_REGULAR_VAR_VAL );
83+ env . set (TEST_DD_VAR , TEST_DD_VAR_VAL );
84+ env . set (TEST_OTEL_VAR , TEST_OTEL_VAR_VAL );
85+ env . set (TEST_REGULAR_VAR , TEST_REGULAR_VAR_VAL );
8386
8487 assertEquals (TEST_DD_VAR_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
8588 assertEquals (TEST_OTEL_VAR_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_OTEL_VAR ));
@@ -89,53 +92,38 @@ void testBasicConfigHelper() {
8992 assertEquals (TEST_DD_VAR_VAL , result .get (TEST_DD_VAR ));
9093 assertEquals (TEST_OTEL_VAR_VAL , result .get (TEST_OTEL_VAR ));
9194 assertEquals (TEST_REGULAR_VAR_VAL , result .get (TEST_REGULAR_VAR ));
92-
93- // Cleanup
94- setEnvVar (TEST_DD_VAR , null );
95- setEnvVar (TEST_OTEL_VAR , null );
96- setEnvVar (TEST_REGULAR_VAR , null );
9795 }
9896
9997 @ Test
10098 void testAliasSupport () {
101- setEnvVar (ALIAS_DD_VAR , ALIAS_DD_VAL );
99+ env . set (ALIAS_DD_VAR , ALIAS_DD_VAL );
102100
103101 assertEquals (ALIAS_DD_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
104102 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
105103 assertEquals (ALIAS_DD_VAL , result .get (TEST_DD_VAR ));
106104 assertFalse (result .containsKey (ALIAS_DD_VAR ));
107-
108- // Cleanup
109- setEnvVar (ALIAS_DD_VAR , null );
110105 }
111106
112107 @ Test
113108 void testMainConfigPrecedence () {
114109 // When both main variable and alias are set, main should take precedence
115- setEnvVar (TEST_DD_VAR , TEST_DD_VAR_VAL );
116- setEnvVar (ALIAS_DD_VAR , ALIAS_DD_VAL );
110+ env . set (TEST_DD_VAR , TEST_DD_VAR_VAL );
111+ env . set (ALIAS_DD_VAR , ALIAS_DD_VAL );
117112
118113 assertEquals (TEST_DD_VAR_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
119114 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
120115 assertEquals (TEST_DD_VAR_VAL , result .get (TEST_DD_VAR ));
121116 assertFalse (result .containsKey (ALIAS_DD_VAR ));
122-
123- // Cleanup
124- setEnvVar (TEST_DD_VAR , null );
125- setEnvVar (ALIAS_DD_VAR , null );
126117 }
127118
128119 @ Test
129120 void testNonDDAliases () {
130- setEnvVar (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
121+ env . set (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
131122
132123 assertEquals (NON_DD_ALIAS_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
133124 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
134125 assertEquals (NON_DD_ALIAS_VAL , result .get (TEST_DD_VAR ));
135126 assertFalse (result .containsKey (NON_DD_ALIAS_VAR ));
136-
137- // Cleanup
138- setEnvVar (NON_DD_ALIAS_VAR , null );
139127 }
140128
141129 @ Test
@@ -162,60 +150,34 @@ void testAliasWithEmptyList() {
162150
163151 @ Test
164152 void testAliasSkippedWhenBaseAlreadyPresent () {
165- setEnvVar (TEST_DD_VAR , TEST_DD_VAR_VAL );
166- setEnvVar (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
153+ env . set (TEST_DD_VAR , TEST_DD_VAR_VAL );
154+ env . set (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
167155
168156 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
169157 assertEquals (TEST_DD_VAR_VAL , result .get (TEST_DD_VAR ));
170158 assertFalse (result .containsKey (NON_DD_ALIAS_VAR ));
171-
172- // Cleanup
173- setEnvVar (TEST_DD_VAR , null );
174- setEnvVar (NON_DD_ALIAS_VAR , null );
175159 }
176160
177161 @ Test
178162 void testInconsistentAliasesAndAliasMapping () {
179- setEnvVar (NEW_ALIAS_KEY_2 , "some_value" );
163+ env . set (NEW_ALIAS_KEY_2 , "some_value" );
180164
181165 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
182166
183167 assertFalse (result .containsKey (NEW_ALIAS_KEY_2 ));
184168 assertFalse (result .containsKey (NEW_ALIAS_TARGET ));
185-
186- // Cleanup
187- setEnvVar (NEW_ALIAS_KEY_2 , null );
188169 }
189170
190- // TODO: Update to verify telemetry when implemented
191171 @ Test
192172 void testUnsupportedEnvWarningNotInTestMode () {
193173 ConfigHelper .get ().setConfigInversionStrict (ConfigHelper .StrictnessPolicy .TEST );
194174
195- setEnvVar ("DD_FAKE_VAR" , "banana" );
175+ env . set ("DD_FAKE_VAR" , "banana" );
196176
197177 // Should allow unsupported variable in TEST mode
198178 assertEquals ("banana" , ConfigHelper .get ().getEnvironmentVariable ("DD_FAKE_VAR" ));
199179
200180 // Cleanup
201- setEnvVar ("DD_FAKE_VAR" , null );
202181 ConfigHelper .get ().setConfigInversionStrict (ConfigHelper .StrictnessPolicy .STRICT );
203182 }
204-
205- // Copied from utils.TestHelper
206- @ SuppressWarnings ("unchecked" )
207- private static void setEnvVar (String envName , String envValue ) {
208- try {
209- Class <?> classOfMap = System .getenv ().getClass ();
210- Field field = classOfMap .getDeclaredField ("m" );
211- field .setAccessible (true );
212- if (envValue == null ) {
213- ((Map <String , String >) field .get (System .getenv ())).remove (envName );
214- } else {
215- ((Map <String , String >) field .get (System .getenv ())).put (envName , envValue );
216- }
217- } catch (Exception ex ) {
218- ex .printStackTrace ();
219- }
220- }
221183}
0 commit comments