Skip to content

Commit 4c924eb

Browse files
committed
responding to PR comments and refactoring ConfigHelperTest to utilize ControllableEnvironmentVariables
1 parent 5fe0a88 commit 4c924eb

File tree

3 files changed

+21
-57
lines changed

3 files changed

+21
-57
lines changed

utils/config-utils/src/main/java/datadog/trace/config/inversion/SupportedConfigurationSource.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.config.inversion;
22

3+
import java.util.ArrayList;
34
import java.util.List;
45

56
/**
@@ -15,7 +16,7 @@ public boolean supported(String env) {
1516

1617
/** @return List of aliases for an environment variable */
1718
public List<String> getAliases(String env) {
18-
return GeneratedSupportedConfigurations.ALIASES.getOrDefault(env, null);
19+
return GeneratedSupportedConfigurations.ALIASES.getOrDefault(env, new ArrayList<>());
1920
}
2021

2122
/** @return Primary environment variable for a queried alias */

utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java

Lines changed: 17 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import static org.junit.jupiter.api.Assertions.assertFalse;
55
import static org.junit.jupiter.api.Assertions.assertNull;
66

7-
import java.lang.reflect.Field;
7+
import datadog.trace.test.util.ControllableEnvironmentVariables;
88
import java.util.ArrayList;
99
import java.util.Arrays;
1010
import 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
}

utils/config-utils/src/test/java/datadog/trace/config/inversion/TestSupportedConfigurationSource.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.config.inversion;
22

3+
import java.util.ArrayList;
34
import java.util.List;
45
import java.util.Map;
56
import java.util.Set;
@@ -29,7 +30,7 @@ public boolean supported(String env) {
2930

3031
@Override
3132
public List<String> getAliases(String env) {
32-
return aliases.getOrDefault(env, null);
33+
return aliases.getOrDefault(env, new ArrayList<>());
3334
}
3435

3536
@Override

0 commit comments

Comments
 (0)