@@ -137,6 +137,7 @@ import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLING_OPERATION_RUL
137137import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLING_SERVICE_RULES
138138import static datadog.trace.api.config.TracerConfig.TRACE_X_DATADOG_TAGS_MAX_LENGTH
139139import static datadog.trace.api.config.TracerConfig.WRITER_TYPE
140+ import datadog.trace.config.inversion.ConfigHelper
140141
141142class 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