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,17 @@ 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+ // Set up mock env variable component
46+ env = ControllableEnvironmentVariables .setup ();
47+
4348 // Set up test configurations using SupportedConfigurationSource
44- //
45- // ConfigInversionMetricCollectorProvider.register(ConfigInversionMetricCollectorImpl.getInstance());
4649 Set <String > testSupported =
4750 new HashSet <>(Arrays .asList (TEST_DD_VAR , TEST_OTEL_VAR , TEST_REGULAR_VAR ));
4851
@@ -73,13 +76,14 @@ static void tearDown() {
7376 @ AfterEach
7477 void reset () {
7578 ConfigHelper .get ().resetCache ();
79+ env .clear ();
7680 }
7781
7882 @ Test
7983 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 );
84+ env . set (TEST_DD_VAR , TEST_DD_VAR_VAL );
85+ env . set (TEST_OTEL_VAR , TEST_OTEL_VAR_VAL );
86+ env . set (TEST_REGULAR_VAR , TEST_REGULAR_VAR_VAL );
8387
8488 assertEquals (TEST_DD_VAR_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
8589 assertEquals (TEST_OTEL_VAR_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_OTEL_VAR ));
@@ -89,53 +93,38 @@ void testBasicConfigHelper() {
8993 assertEquals (TEST_DD_VAR_VAL , result .get (TEST_DD_VAR ));
9094 assertEquals (TEST_OTEL_VAR_VAL , result .get (TEST_OTEL_VAR ));
9195 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 );
9796 }
9897
9998 @ Test
10099 void testAliasSupport () {
101- setEnvVar (ALIAS_DD_VAR , ALIAS_DD_VAL );
100+ env . set (ALIAS_DD_VAR , ALIAS_DD_VAL );
102101
103102 assertEquals (ALIAS_DD_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
104103 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
105104 assertEquals (ALIAS_DD_VAL , result .get (TEST_DD_VAR ));
106105 assertFalse (result .containsKey (ALIAS_DD_VAR ));
107-
108- // Cleanup
109- setEnvVar (ALIAS_DD_VAR , null );
110106 }
111107
112108 @ Test
113109 void testMainConfigPrecedence () {
114110 // 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 );
111+ env . set (TEST_DD_VAR , TEST_DD_VAR_VAL );
112+ env . set (ALIAS_DD_VAR , ALIAS_DD_VAL );
117113
118114 assertEquals (TEST_DD_VAR_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
119115 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
120116 assertEquals (TEST_DD_VAR_VAL , result .get (TEST_DD_VAR ));
121117 assertFalse (result .containsKey (ALIAS_DD_VAR ));
122-
123- // Cleanup
124- setEnvVar (TEST_DD_VAR , null );
125- setEnvVar (ALIAS_DD_VAR , null );
126118 }
127119
128120 @ Test
129121 void testNonDDAliases () {
130- setEnvVar (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
122+ env . set (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
131123
132124 assertEquals (NON_DD_ALIAS_VAL , ConfigHelper .get ().getEnvironmentVariable (TEST_DD_VAR ));
133125 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
134126 assertEquals (NON_DD_ALIAS_VAL , result .get (TEST_DD_VAR ));
135127 assertFalse (result .containsKey (NON_DD_ALIAS_VAR ));
136-
137- // Cleanup
138- setEnvVar (NON_DD_ALIAS_VAR , null );
139128 }
140129
141130 @ Test
@@ -162,60 +151,34 @@ void testAliasWithEmptyList() {
162151
163152 @ Test
164153 void testAliasSkippedWhenBaseAlreadyPresent () {
165- setEnvVar (TEST_DD_VAR , TEST_DD_VAR_VAL );
166- setEnvVar (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
154+ env . set (TEST_DD_VAR , TEST_DD_VAR_VAL );
155+ env . set (NON_DD_ALIAS_VAR , NON_DD_ALIAS_VAL );
167156
168157 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
169158 assertEquals (TEST_DD_VAR_VAL , result .get (TEST_DD_VAR ));
170159 assertFalse (result .containsKey (NON_DD_ALIAS_VAR ));
171-
172- // Cleanup
173- setEnvVar (TEST_DD_VAR , null );
174- setEnvVar (NON_DD_ALIAS_VAR , null );
175160 }
176161
177162 @ Test
178163 void testInconsistentAliasesAndAliasMapping () {
179- setEnvVar (NEW_ALIAS_KEY_2 , "some_value" );
164+ env . set (NEW_ALIAS_KEY_2 , "some_value" );
180165
181166 Map <String , String > result = ConfigHelper .get ().getEnvironmentVariables ();
182167
183168 assertFalse (result .containsKey (NEW_ALIAS_KEY_2 ));
184169 assertFalse (result .containsKey (NEW_ALIAS_TARGET ));
185-
186- // Cleanup
187- setEnvVar (NEW_ALIAS_KEY_2 , null );
188170 }
189171
190- // TODO: Update to verify telemetry when implemented
191172 @ Test
192173 void testUnsupportedEnvWarningNotInTestMode () {
193174 ConfigHelper .get ().setConfigInversionStrict (ConfigHelper .StrictnessPolicy .TEST );
194175
195- setEnvVar ("DD_FAKE_VAR" , "banana" );
176+ env . set ("DD_FAKE_VAR" , "banana" );
196177
197178 // Should allow unsupported variable in TEST mode
198179 assertEquals ("banana" , ConfigHelper .get ().getEnvironmentVariable ("DD_FAKE_VAR" ));
199180
200- // Cleanup
201- setEnvVar ("DD_FAKE_VAR" , null );
181+ // Clean-up
202182 ConfigHelper .get ().setConfigInversionStrict (ConfigHelper .StrictnessPolicy .STRICT );
203183 }
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- }
221184}
0 commit comments