Skip to content

Commit 493be18

Browse files
committed
fixing tests pt 1
1 parent 36e4f62 commit 493be18

File tree

10 files changed

+121
-18
lines changed

10 files changed

+121
-18
lines changed

components/environment/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ sourceSets {
1717
dependencies {
1818
"generatorImplementation"("com.fasterxml.jackson.core:jackson-databind:2.15.2")
1919
"generatorImplementation"("org.slf4j:slf4j-api:1.7.36")
20+
implementation(project(":dd-trace-api"))
2021
}
2122

2223
apply(from = "$rootDir/gradle/java.gradle")

components/environment/src/generator/resources/supported-configurations.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
"DD_CIVISIBILITY_TRACE_SANITATION_ENABLED": ["A"],
106106
"DD_CODE_ORIGIN_FOR_SPANS_ENABLED": ["A"],
107107
"DD_CODE_ORIGIN_MAX_USER_FRAMES": ["A"],
108+
"DD_CONFIG_INVERSION_STRICT": ["A"],
108109
"DD_CRASHTRACKING_AGENTLESS": ["A"],
109110
"DD_CRASHTRACKING_PROXY_HOST": ["A"],
110111
"DD_CRASHTRACKING_PROXY_PASSWORD": ["A"],

components/environment/src/main/java/datadog/environment/ConfigHelper.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package datadog.environment;
22

3+
import datadog.trace.api.ConfigInversionStrictStyle;
34
import de.thetaphi.forbiddenapis.SuppressForbidden;
45
import java.util.LinkedHashMap;
56
import java.util.List;
67
import java.util.Map;
78

89
@SuppressForbidden
910
public class ConfigHelper {
10-
private static boolean configInversionStrict;
11+
private static ConfigInversionStrictStyle configInversionStrict;
1112

1213
// Default to production source
1314
private static SupportedConfigurationSource configSource = new SupportedConfigurationSource();
1415

15-
public static void setConfigInversionStrict(boolean configInversionStrict) {
16+
public static void setConfigInversionStrict(ConfigInversionStrictStyle configInversionStrict) {
1617
ConfigHelper.configInversionStrict = configInversionStrict;
1718
}
1819

19-
public static boolean isConfigInversionStrict() {
20+
public static ConfigInversionStrictStyle configInversionStrictFlag() {
2021
return configInversionStrict;
2122
}
2223

@@ -28,7 +29,7 @@ static void setConfigurationSource(SupportedConfigurationSource testSource) {
2829
/** Reset all configuration data to the generated defaults. Useful for cleaning up after tests. */
2930
static void resetToDefaults() {
3031
configSource = new SupportedConfigurationSource();
31-
configInversionStrict = false;
32+
configInversionStrict = ConfigInversionStrictStyle.WARNING;
3233
}
3334

3435
public static Map<String, String> getEnvironmentVariables() {
@@ -73,9 +74,14 @@ public static String getEnvironmentVariable(String name) {
7374
if ((name.startsWith("DD_") || name.startsWith("OTEL_"))
7475
&& !configSource.getAliasMapping().containsKey(name)
7576
&& !configSource.getSupportedConfigurations().contains(name)) {
76-
System.err.println(
77-
"Warning: Missing environment variable " + name + " from supported-configurations.json.");
78-
if (configInversionStrict) {
77+
if (configInversionStrict != ConfigInversionStrictStyle.TEST) {
78+
System.err.println(
79+
"Warning: Missing environment variable "
80+
+ name
81+
+ " from supported-configurations.json.");
82+
}
83+
84+
if (configInversionStrict == ConfigInversionStrictStyle.STRICT) {
7985
return null; // If strict mode is enabled, return null for unsupported configs
8086
}
8187
}

components/environment/src/test/java/datadog/environment/ConfigHelperTest.java

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

7+
import datadog.trace.api.ConfigInversionStrictStyle;
78
import java.lang.reflect.Field;
89
import java.util.ArrayList;
910
import java.util.Arrays;
@@ -31,7 +32,7 @@ public class ConfigHelperTest {
3132
private static final String NON_DD_ALIAS_VAR = "TEST_CONFIG_ALIAS";
3233
private static final String NON_DD_ALIAS_VAL = "test_alias_val_non_dd";
3334

34-
private static boolean strictness;
35+
private static ConfigInversionStrictStyle strictness;
3536
private static TestSupportedConfigurationSource testSource;
3637

3738
@BeforeAll
@@ -52,8 +53,8 @@ static void setUp() {
5253
new TestSupportedConfigurationSource(
5354
testSupported, testAliases, testAliasMapping, new HashMap<>());
5455
ConfigHelper.setConfigurationSource(testSource);
55-
strictness = ConfigHelper.isConfigInversionStrict();
56-
ConfigHelper.setConfigInversionStrict(true);
56+
strictness = ConfigHelper.configInversionStrictFlag();
57+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.STRICT);
5758
}
5859

5960
@AfterAll
@@ -145,14 +146,14 @@ void testAliasesWithoutPresentAliases() {
145146

146147
@Test
147148
void testUnsupportedButNotStrict() {
148-
ConfigHelper.setConfigInversionStrict(false);
149+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.WARNING);
149150
setEnvVar(UNSUPPORTED_DD_VAR, "loose");
150151

151152
// Should fall through and return the env var even though it's unsupported
152153
assertEquals("loose", ConfigHelper.getEnvironmentVariable(UNSUPPORTED_DD_VAR));
153154

154155
// Cleanup
155-
ConfigHelper.setConfigInversionStrict(true);
156+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.STRICT);
156157
setEnvVar(UNSUPPORTED_DD_VAR, null);
157158
}
158159

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package datadog.trace.api;
2+
3+
import java.util.Locale;
4+
5+
/** Trace propagation styles for injecting and extracting trace propagation headers. */
6+
public enum ConfigInversionStrictStyle {
7+
STRICT,
8+
WARNING,
9+
TEST;
10+
11+
private String displayName;
12+
13+
ConfigInversionStrictStyle() {
14+
this.displayName = name().toLowerCase(Locale.ROOT);
15+
}
16+
17+
@Override
18+
public String toString() {
19+
if (displayName == null) {
20+
displayName = name().toLowerCase(Locale.ROOT);
21+
}
22+
return displayName;
23+
}
24+
}

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,7 +1199,7 @@ public static String getHostName() {
11991199

12001200
private final boolean telemetryDebugRequestsEnabled;
12011201

1202-
private final boolean configInversionStrict;
1202+
private final ConfigInversionStrictStyle configInversionStrict;
12031203

12041204
private final boolean agentlessLogSubmissionEnabled;
12051205
private final int agentlessLogSubmissionQueueSize;
@@ -1998,7 +1998,7 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
19981998
DEFAULT_TELEMETRY_DEPENDENCY_RESOLUTION_QUEUE_SIZE);
19991999
clientIpEnabled = configProvider.getBoolean(CLIENT_IP_ENABLED, DEFAULT_CLIENT_IP_ENABLED);
20002000

2001-
configInversionStrict = ConfigHelper.isConfigInversionStrict();
2001+
configInversionStrict = ConfigHelper.configInversionStrictFlag();
20022002

20032003
appSecReportingInband =
20042004
configProvider.getBoolean(APPSEC_REPORTING_INBAND, DEFAULT_APPSEC_REPORTING_INBAND);
@@ -3470,7 +3470,7 @@ public boolean isClientIpEnabled() {
34703470
return clientIpEnabled;
34713471
}
34723472

3473-
public boolean isConfigInversionStrict() {
3473+
public ConfigInversionStrictStyle isConfigInversionStrict() {
34743474
return configInversionStrict;
34753475
}
34763476

internal-api/src/main/java/datadog/trace/bootstrap/config/provider/ConfigProvider.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import datadog.environment.ConfigHelper;
77
import datadog.trace.api.ConfigCollector;
8+
import datadog.trace.api.ConfigInversionStrictStyle;
89
import datadog.trace.api.ConfigOrigin;
910
import de.thetaphi.forbiddenapis.SuppressForbidden;
1011
import java.io.File;
@@ -380,7 +381,10 @@ public static ConfigProvider createDefault() {
380381

381382
// TODO: Set default value to false before merging
382383
ConfigHelper.setConfigInversionStrict(
383-
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
384+
minimalProvider.getEnum(
385+
CONFIG_INVERSION_STRICT,
386+
ConfigInversionStrictStyle.class,
387+
ConfigInversionStrictStyle.STRICT));
384388

385389
Properties configProperties = loadConfigurationFile(minimalProvider);
386390
if (configProperties.isEmpty()) {
@@ -409,7 +413,10 @@ public static ConfigProvider withoutCollector() {
409413
false, new SystemPropertiesConfigSource(), new EnvironmentConfigSource());
410414
// TODO: Set default value to false before merging
411415
ConfigHelper.setConfigInversionStrict(
412-
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
416+
minimalProvider.getEnum(
417+
CONFIG_INVERSION_STRICT,
418+
ConfigInversionStrictStyle.class,
419+
ConfigInversionStrictStyle.STRICT));
413420

414421
Properties configProperties = loadConfigurationFile(minimalProvider);
415422
if (configProperties.isEmpty()) {
@@ -444,7 +451,10 @@ public static ConfigProvider withPropertiesOverride(Properties properties) {
444451

445452
// TODO: Set default value to false before merging
446453
ConfigHelper.setConfigInversionStrict(
447-
minimalProvider.getBoolean(CONFIG_INVERSION_STRICT, true));
454+
minimalProvider.getEnum(
455+
CONFIG_INVERSION_STRICT,
456+
ConfigInversionStrictStyle.class,
457+
ConfigInversionStrictStyle.STRICT));
448458

449459
Properties configProperties = loadConfigurationFile(minimalProvider);
450460
if (configProperties.isEmpty()) {

internal-api/src/test/groovy/datadog/trace/api/ConfigTest.groovy

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.api
22

3+
import datadog.environment.ConfigHelper
34
import datadog.trace.api.env.FixedCapturedEnvironment
45
import datadog.trace.bootstrap.config.provider.AgentArgsInjector
56
import datadog.trace.bootstrap.config.provider.ConfigConverter
@@ -896,9 +897,15 @@ class ConfigTest extends DDSpecification {
896897
System.setProperty("dd.trace.test-prop.enabled", "true")
897898
System.setProperty("dd.trace.disabled-prop.enabled", "false")
898899

900+
def strictness = ConfigHelper.configInversionStrictFlag()
901+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
902+
899903
expect:
900904
Config.get().isRuleEnabled(name) == enabled
901905

906+
cleanup:
907+
ConfigHelper.setConfigInversionStrict(strictness)
908+
902909
where:
903910
// spotless:off
904911
name | enabled
@@ -927,9 +934,15 @@ class ConfigTest extends DDSpecification {
927934
System.setProperty("dd.jmxfetch.test-prop.enabled", "true")
928935
System.setProperty("dd.jmxfetch.disabled-prop.enabled", "false")
929936

937+
def strictness = ConfigHelper.configInversionStrictFlag()
938+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
939+
930940
expect:
931941
Config.get().isJmxFetchIntegrationEnabled(integrationNames, defaultEnabled) == expected
932942

943+
cleanup:
944+
ConfigHelper.setConfigInversionStrict(strictness)
945+
933946
where:
934947
// spotless:off
935948
names | defaultEnabled | expected
@@ -969,9 +982,15 @@ class ConfigTest extends DDSpecification {
969982
System.setProperty("dd.alias-prop.analytics.enabled", "false")
970983
System.setProperty("dd.trace.alias-prop.analytics.enabled", "true")
971984

985+
def strictness = ConfigHelper.configInversionStrictFlag()
986+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
987+
972988
expect:
973989
Config.get().isTraceAnalyticsIntegrationEnabled(integrationNames, defaultEnabled) == expected
974990

991+
cleanup:
992+
ConfigHelper.setConfigInversionStrict(strictness)
993+
975994
where:
976995
// spotless:off
977996
names | defaultEnabled | expected
@@ -1011,9 +1030,15 @@ class ConfigTest extends DDSpecification {
10111030
System.setProperty("dd.garbage.test", "garbage")
10121031
System.setProperty("dd.negative.test", "-1")
10131032
1033+
def strictness = ConfigHelper.configInversionStrictFlag()
1034+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
1035+
10141036
expect:
10151037
Config.get().configProvider.getFloat(name, defaultValue) == (float) expected
10161038
1039+
cleanup:
1040+
ConfigHelper.setConfigInversionStrict(strictness)
1041+
10171042
where:
10181043
name | expected
10191044
// spotless:off
@@ -1042,9 +1067,15 @@ class ConfigTest extends DDSpecification {
10421067
System.setProperty("dd.garbage.test", "garbage")
10431068
System.setProperty("dd.negative.test", "-1")
10441069
1070+
def strictness = ConfigHelper.configInversionStrictFlag()
1071+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
1072+
10451073
expect:
10461074
Config.get().configProvider.getDouble(name, defaultValue) == (double) expected
10471075
1076+
cleanup:
1077+
ConfigHelper.setConfigInversionStrict(strictness)
1078+
10481079
where:
10491080
// spotless:off
10501081
name | expected
@@ -1383,13 +1414,19 @@ class ConfigTest extends DDSpecification {
13831414
System.setProperty("dd.alias-prop.analytics.sample-rate", "0.1")
13841415
System.setProperty("dd.trace.alias-prop.analytics.sample-rate", "0.2")
13851416
1417+
def strictness = ConfigHelper.configInversionStrictFlag()
1418+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
1419+
13861420
when:
13871421
String[] array = services.toArray(new String[0])
13881422
def value = Config.get().getInstrumentationAnalyticsSampleRate(array)
13891423
13901424
then:
13911425
value == expected
13921426
1427+
cleanup:
1428+
ConfigHelper.setConfigInversionStrict(strictness)
1429+
13931430
where:
13941431
// spotless:off
13951432
services | expected

internal-api/src/test/groovy/datadog/trace/api/InstrumenterConfigTest.groovy

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
package datadog.trace.api
22

3+
import datadog.environment.ConfigHelper
34
import datadog.trace.test.util.DDSpecification
45

56
class InstrumenterConfigTest extends DDSpecification {
67

8+
def strictness
9+
10+
def setup() {
11+
strictness = ConfigHelper.configInversionStrictFlag()
12+
ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
13+
}
14+
15+
def cleanup() {
16+
ConfigHelper.setConfigInversionStrict(strictness)
17+
}
18+
719
def "verify integration config"() {
820
setup:
921
environmentVariables.set("DD_INTEGRATION_ORDER_ENABLED", "false")

internal-api/src/test/groovy/datadog/trace/api/telemetry/OtelEnvMetricCollectorTest.groovy

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datadog.trace.api.telemetry
22

33
import datadog.trace.test.util.DDSpecification
4+
import datadog.environment.ConfigHelper
5+
import datadog.trace.api.ConfigInversionStrictStyle
46

57
// PLEASE READ
68
// When a metric is generated, it's duplicated in these tests. We call twice setupOteEnvironment() because of the separation of the configuration done in the rebuild function of DDSpecification between datadog/trace/api/InstrumenterConfig.java and internal-api/src/main/java/datadog/trace/api/Config.java.
@@ -10,6 +12,15 @@ import datadog.trace.test.util.DDSpecification
1012

1113

1214
class OtelEnvMetricCollectorTest extends DDSpecification {
15+
// def strictness
16+
// def setup() {
17+
// strictness = ConfigHelper.configInversionStrictFlag()
18+
// ConfigHelper.setConfigInversionStrict(ConfigInversionStrictStyle.TEST)
19+
// }
20+
//
21+
// def cleanup(){
22+
// ConfigHelper.setConfigInversionStrict(strictness)
23+
// }
1324

1425
def "otel disabled - no metric"() {
1526
setup:

0 commit comments

Comments
 (0)