Skip to content

Commit f69e043

Browse files
authored
Update Strictness of Config Tests to Fix Flaky Test (#9857)
* updating strictness of config tests * adding subclass
1 parent 10f7869 commit f69e043

File tree

4 files changed

+226
-175
lines changed

4 files changed

+226
-175
lines changed

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

Lines changed: 190 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLING_OPERATION_RUL
137137
import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLING_SERVICE_RULES
138138
import static datadog.trace.api.config.TracerConfig.TRACE_X_DATADOG_TAGS_MAX_LENGTH
139139
import static datadog.trace.api.config.TracerConfig.WRITER_TYPE
140+
import datadog.trace.config.inversion.ConfigHelper
140141

141142
class ConfigTest extends DDSpecification {
142143
private static final String PREFIX = "dd."
@@ -881,181 +882,6 @@ class ConfigTest extends DDSpecification {
881882
config.serviceName == "what actually wants"
882883
}
883884

884-
def "verify rule config #name"() {
885-
setup:
886-
environmentVariables.set("DD_TRACE_TEST_ENABLED", "true")
887-
environmentVariables.set("DD_TRACE_TEST_ENV_ENABLED", "true")
888-
environmentVariables.set("DD_TRACE_DISABLED_ENV_ENABLED", "false")
889-
890-
System.setProperty("dd.trace.test.enabled", "false")
891-
System.setProperty("dd.trace.test-prop.enabled", "true")
892-
System.setProperty("dd.trace.disabled-prop.enabled", "false")
893-
894-
expect:
895-
Config.get().isRuleEnabled(name) == enabled
896-
897-
where:
898-
// spotless:off
899-
name | enabled
900-
"" | true
901-
"invalid" | true
902-
"test-prop" | true
903-
"Test-Prop" | true
904-
"test-env" | true
905-
"Test-Env" | true
906-
"test" | false
907-
"TEST" | false
908-
"disabled-prop" | false
909-
"Disabled-Prop" | false
910-
"disabled-env" | false
911-
"Disabled-Env" | false
912-
// spotless:on
913-
}
914-
915-
def "verify integration jmxfetch config"() {
916-
setup:
917-
environmentVariables.set("DD_JMXFETCH_ORDER_ENABLED", "false")
918-
environmentVariables.set("DD_JMXFETCH_TEST_ENV_ENABLED", "true")
919-
environmentVariables.set("DD_JMXFETCH_DISABLED_ENV_ENABLED", "false")
920-
921-
System.setProperty("dd.jmxfetch.order.enabled", "true")
922-
System.setProperty("dd.jmxfetch.test-prop.enabled", "true")
923-
System.setProperty("dd.jmxfetch.disabled-prop.enabled", "false")
924-
925-
expect:
926-
Config.get().isJmxFetchIntegrationEnabled(integrationNames, defaultEnabled) == expected
927-
928-
where:
929-
// spotless:off
930-
names | defaultEnabled | expected
931-
[] | true | true
932-
[] | false | false
933-
["invalid"] | true | true
934-
["invalid"] | false | false
935-
["test-prop"] | false | true
936-
["test-env"] | false | true
937-
["disabled-prop"] | true | false
938-
["disabled-env"] | true | false
939-
["other", "test-prop"] | false | true
940-
["other", "test-env"] | false | true
941-
["order"] | false | true
942-
["test-prop", "disabled-prop"] | false | true
943-
["disabled-env", "test-env"] | false | true
944-
["test-prop", "disabled-prop"] | true | false
945-
["disabled-env", "test-env"] | true | false
946-
// spotless:on
947-
948-
integrationNames = new TreeSet<>(names)
949-
}
950-
951-
def "verify integration trace analytics config"() {
952-
setup:
953-
environmentVariables.set("DD_ORDER_ANALYTICS_ENABLED", "false")
954-
environmentVariables.set("DD_TEST_ENV_ANALYTICS_ENABLED", "true")
955-
environmentVariables.set("DD_DISABLED_ENV_ANALYTICS_ENABLED", "false")
956-
// trace prefix form should take precedence over the old non-prefix form
957-
environmentVariables.set("DD_ALIAS_ENV_ANALYTICS_ENABLED", "false")
958-
environmentVariables.set("DD_TRACE_ALIAS_ENV_ANALYTICS_ENABLED", "true")
959-
960-
System.setProperty("dd.order.analytics.enabled", "true")
961-
System.setProperty("dd.test-prop.analytics.enabled", "true")
962-
System.setProperty("dd.disabled-prop.analytics.enabled", "false")
963-
// trace prefix form should take precedence over the old non-prefix form
964-
System.setProperty("dd.alias-prop.analytics.enabled", "false")
965-
System.setProperty("dd.trace.alias-prop.analytics.enabled", "true")
966-
967-
expect:
968-
Config.get().isTraceAnalyticsIntegrationEnabled(integrationNames, defaultEnabled) == expected
969-
970-
where:
971-
// spotless:off
972-
names | defaultEnabled | expected
973-
[] | true | true
974-
[] | false | false
975-
["invalid"] | true | true
976-
["invalid"] | false | false
977-
["test-prop"] | false | true
978-
["test-env"] | false | true
979-
["disabled-prop"] | true | false
980-
["disabled-env"] | true | false
981-
["other", "test-prop"] | false | true
982-
["other", "test-env"] | false | true
983-
["order"] | false | true
984-
["test-prop", "disabled-prop"] | false | true
985-
["disabled-env", "test-env"] | false | true
986-
["test-prop", "disabled-prop"] | true | false
987-
["disabled-env", "test-env"] | true | false
988-
["alias-prop", "disabled-prop"] | false | true
989-
["disabled-env", "alias-env"] | false | true
990-
["alias-prop", "disabled-prop"] | true | false
991-
["disabled-env", "alias-env"] | true | false
992-
// spotless:on
993-
994-
integrationNames = new TreeSet<>(names)
995-
}
996-
997-
def "test getFloatSettingFromEnvironment(#name)"() {
998-
setup:
999-
environmentVariables.set("DD_ENV_ZERO_TEST", "0.0")
1000-
environmentVariables.set("DD_ENV_FLOAT_TEST", "1.0")
1001-
environmentVariables.set("DD_FLOAT_TEST", "0.2")
1002-
1003-
System.setProperty("dd.prop.zero.test", "0")
1004-
System.setProperty("dd.prop.float.test", "0.3")
1005-
System.setProperty("dd.float.test", "0.4")
1006-
System.setProperty("dd.garbage.test", "garbage")
1007-
System.setProperty("dd.negative.test", "-1")
1008-
1009-
expect:
1010-
Config.get().configProvider.getFloat(name, defaultValue) == (float) expected
1011-
1012-
where:
1013-
name | expected
1014-
// spotless:off
1015-
"env.zero.test" | 0.0
1016-
"prop.zero.test" | 0
1017-
"env.float.test" | 1.0
1018-
"prop.float.test" | 0.3
1019-
"float.test" | 0.4
1020-
"negative.test" | -1.0
1021-
"garbage.test" | 10.0
1022-
"default.test" | 10.0
1023-
// spotless:on
1024-
1025-
defaultValue = 10.0
1026-
}
1027-
1028-
def "test getDoubleSettingFromEnvironment(#name)"() {
1029-
setup:
1030-
environmentVariables.set("DD_ENV_ZERO_TEST", "0.0")
1031-
environmentVariables.set("DD_ENV_FLOAT_TEST", "1.0")
1032-
environmentVariables.set("DD_FLOAT_TEST", "0.2")
1033-
1034-
System.setProperty("dd.prop.zero.test", "0")
1035-
System.setProperty("dd.prop.float.test", "0.3")
1036-
System.setProperty("dd.float.test", "0.4")
1037-
System.setProperty("dd.garbage.test", "garbage")
1038-
System.setProperty("dd.negative.test", "-1")
1039-
1040-
expect:
1041-
Config.get().configProvider.getDouble(name, defaultValue) == (double) expected
1042-
1043-
where:
1044-
// spotless:off
1045-
name | expected
1046-
"env.zero.test" | 0.0
1047-
"prop.zero.test" | 0
1048-
"env.float.test" | 1.0
1049-
"prop.float.test" | 0.3
1050-
"float.test" | 0.4
1051-
"negative.test" | -1.0
1052-
"garbage.test" | 10.0
1053-
"default.test" | 10.0
1054-
// spotless:on
1055-
1056-
defaultValue = 10.0
1057-
}
1058-
1059885
def "verify mapping configs on tracer for #mapString"() {
1060886
setup:
1061887
System.setProperty(PREFIX + HEADER_TAGS + ".legacy.parsing.enabled", "true")
@@ -2813,4 +2639,193 @@ class ConfigTest extends DDSpecification {
28132639
"datadoghq.eu" | "https://instrumentation-telemetry-intake.datadoghq.eu/api/v2/apmtelemetry"
28142640
"datad0g.com" | "https://all-http-intake.logs.datad0g.com/api/v2/apmtelemetry"
28152641
}
2642+
2643+
static class ConfigTestWithFakes extends ConfigTest {
2644+
2645+
def strictness
2646+
2647+
def setup(){
2648+
strictness = ConfigHelper.get().configInversionStrictFlag()
2649+
ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST)
2650+
}
2651+
2652+
def cleanup(){
2653+
ConfigHelper.get().setConfigInversionStrict(strictness)
2654+
}
2655+
2656+
def "verify rule config #name"() {
2657+
setup:
2658+
environmentVariables.set("DD_TRACE_TEST_ENABLED", "true")
2659+
environmentVariables.set("DD_TRACE_TEST_ENV_ENABLED", "true")
2660+
environmentVariables.set("DD_TRACE_DISABLED_ENV_ENABLED", "false")
2661+
2662+
System.setProperty("dd.trace.test.enabled", "false")
2663+
System.setProperty("dd.trace.test-prop.enabled", "true")
2664+
System.setProperty("dd.trace.disabled-prop.enabled", "false")
2665+
2666+
expect:
2667+
Config.get().isRuleEnabled(name) == enabled
2668+
2669+
where:
2670+
// spotless:off
2671+
name | enabled
2672+
"" | true
2673+
"invalid" | true
2674+
"test-prop" | true
2675+
"Test-Prop" | true
2676+
"test-env" | true
2677+
"Test-Env" | true
2678+
"test" | false
2679+
"TEST" | false
2680+
"disabled-prop" | false
2681+
"Disabled-Prop" | false
2682+
"disabled-env" | false
2683+
"Disabled-Env" | false
2684+
// spotless:on
2685+
}
2686+
2687+
def "verify integration jmxfetch config"() {
2688+
setup:
2689+
environmentVariables.set("DD_JMXFETCH_ORDER_ENABLED", "false")
2690+
environmentVariables.set("DD_JMXFETCH_TEST_ENV_ENABLED", "true")
2691+
environmentVariables.set("DD_JMXFETCH_DISABLED_ENV_ENABLED", "false")
2692+
2693+
System.setProperty("dd.jmxfetch.order.enabled", "true")
2694+
System.setProperty("dd.jmxfetch.test-prop.enabled", "true")
2695+
System.setProperty("dd.jmxfetch.disabled-prop.enabled", "false")
2696+
2697+
expect:
2698+
Config.get().isJmxFetchIntegrationEnabled(integrationNames, defaultEnabled) == expected
2699+
2700+
where:
2701+
// spotless:off
2702+
names | defaultEnabled | expected
2703+
[] | true | true
2704+
[] | false | false
2705+
["invalid"] | true | true
2706+
["invalid"] | false | false
2707+
["test-prop"] | false | true
2708+
["test-env"] | false | true
2709+
["disabled-prop"] | true | false
2710+
["disabled-env"] | true | false
2711+
["other", "test-prop"] | false | true
2712+
["other", "test-env"] | false | true
2713+
["order"] | false | true
2714+
["test-prop", "disabled-prop"] | false | true
2715+
["disabled-env", "test-env"] | false | true
2716+
["test-prop", "disabled-prop"] | true | false
2717+
["disabled-env", "test-env"] | true | false
2718+
// spotless:on
2719+
2720+
integrationNames = new TreeSet<>(names)
2721+
}
2722+
2723+
def "verify integration trace analytics config"() {
2724+
setup:
2725+
environmentVariables.set("DD_ORDER_ANALYTICS_ENABLED", "false")
2726+
environmentVariables.set("DD_TEST_ENV_ANALYTICS_ENABLED", "true")
2727+
environmentVariables.set("DD_DISABLED_ENV_ANALYTICS_ENABLED", "false")
2728+
// trace prefix form should take precedence over the old non-prefix form
2729+
environmentVariables.set("DD_ALIAS_ENV_ANALYTICS_ENABLED", "false")
2730+
environmentVariables.set("DD_TRACE_ALIAS_ENV_ANALYTICS_ENABLED", "true")
2731+
2732+
System.setProperty("dd.order.analytics.enabled", "true")
2733+
System.setProperty("dd.test-prop.analytics.enabled", "true")
2734+
System.setProperty("dd.disabled-prop.analytics.enabled", "false")
2735+
// trace prefix form should take precedence over the old non-prefix form
2736+
System.setProperty("dd.alias-prop.analytics.enabled", "false")
2737+
System.setProperty("dd.trace.alias-prop.analytics.enabled", "true")
2738+
2739+
expect:
2740+
Config.get().isTraceAnalyticsIntegrationEnabled(integrationNames, defaultEnabled) == expected
2741+
2742+
where:
2743+
// spotless:off
2744+
names | defaultEnabled | expected
2745+
[] | true | true
2746+
[] | false | false
2747+
["invalid"] | true | true
2748+
["invalid"] | false | false
2749+
["test-prop"] | false | true
2750+
["test-env"] | false | true
2751+
["disabled-prop"] | true | false
2752+
["disabled-env"] | true | false
2753+
["other", "test-prop"] | false | true
2754+
["other", "test-env"] | false | true
2755+
["order"] | false | true
2756+
["test-prop", "disabled-prop"] | false | true
2757+
["disabled-env", "test-env"] | false | true
2758+
["test-prop", "disabled-prop"] | true | false
2759+
["disabled-env", "test-env"] | true | false
2760+
["alias-prop", "disabled-prop"] | false | true
2761+
["disabled-env", "alias-env"] | false | true
2762+
["alias-prop", "disabled-prop"] | true | false
2763+
["disabled-env", "alias-env"] | true | false
2764+
// spotless:on
2765+
2766+
integrationNames = new TreeSet<>(names)
2767+
}
2768+
2769+
def "test getFloatSettingFromEnvironment(#name)"() {
2770+
setup:
2771+
environmentVariables.set("DD_ENV_ZERO_TEST", "0.0")
2772+
environmentVariables.set("DD_ENV_FLOAT_TEST", "1.0")
2773+
environmentVariables.set("DD_FLOAT_TEST", "0.2")
2774+
2775+
System.setProperty("dd.prop.zero.test", "0")
2776+
System.setProperty("dd.prop.float.test", "0.3")
2777+
System.setProperty("dd.float.test", "0.4")
2778+
System.setProperty("dd.garbage.test", "garbage")
2779+
System.setProperty("dd.negative.test", "-1")
2780+
2781+
expect:
2782+
Config.get().configProvider.getFloat(name, defaultValue) == (float) expected
2783+
2784+
where:
2785+
name | expected
2786+
// spotless:off
2787+
"env.zero.test" | 0.0
2788+
"prop.zero.test" | 0
2789+
"env.float.test" | 1.0
2790+
"prop.float.test" | 0.3
2791+
"float.test" | 0.4
2792+
"negative.test" | -1.0
2793+
"garbage.test" | 10.0
2794+
"default.test" | 10.0
2795+
// spotless:on
2796+
2797+
defaultValue = 10.0
2798+
}
2799+
2800+
def "test getDoubleSettingFromEnvironment(#name)"() {
2801+
setup:
2802+
environmentVariables.set("DD_ENV_ZERO_TEST", "0.0")
2803+
environmentVariables.set("DD_ENV_FLOAT_TEST", "1.0")
2804+
environmentVariables.set("DD_FLOAT_TEST", "0.2")
2805+
2806+
System.setProperty("dd.prop.zero.test", "0")
2807+
System.setProperty("dd.prop.float.test", "0.3")
2808+
System.setProperty("dd.float.test", "0.4")
2809+
System.setProperty("dd.garbage.test", "garbage")
2810+
System.setProperty("dd.negative.test", "-1")
2811+
2812+
expect:
2813+
Config.get().configProvider.getDouble(name, defaultValue) == (double) expected
2814+
2815+
where:
2816+
// spotless:off
2817+
name | expected
2818+
"env.zero.test" | 0.0
2819+
"prop.zero.test" | 0
2820+
"env.float.test" | 1.0
2821+
"prop.float.test" | 0.3
2822+
"float.test" | 0.4
2823+
"negative.test" | -1.0
2824+
"garbage.test" | 10.0
2825+
"default.test" | 10.0
2826+
// spotless:on
2827+
2828+
defaultValue = 10.0
2829+
}
2830+
}
28162831
}

0 commit comments

Comments
 (0)