8383 "java" : "trace_debug" ,
8484 "ruby" : "DD_TRACE_DEBUG" ,
8585 "python" : "DD_TRACE_DEBUG" ,
86- "golang" : "DD_TRACE_DEBUG " , # Before v2.5.0-dev, the telemetry name was "trace_debug_enabled" — see _mapped_telemetry_name
86+ "golang" : [ "trace_debug_enabled " , "DD_TRACE_DEBUG" ],
8787 },
8888 "tags" : {
8989 "java" : "trace_tags" ,
9898}
9999
100100
101- def _mapped_telemetry_name (apm_telemetry_name : str ):
101+ def _mapped_telemetry_name (apm_telemetry_name : str ) -> list [ str ] :
102102 if apm_telemetry_name in telemetry_name_mapping :
103103 mapped_name = telemetry_name_mapping [apm_telemetry_name ].get (context .library .name )
104104 if mapped_name is not None :
105- if (
106- apm_telemetry_name == "trace_debug_enabled"
107- and context .library .name == "golang"
108- and context .
library <= "[email protected] " 109- ):
110- return "trace_debug_enabled"
111- return mapped_name
112- return apm_telemetry_name
105+ if isinstance (mapped_name , list ):
106+ return mapped_name
107+ return [mapped_name ]
108+ return [apm_telemetry_name ]
113109
114110
115111def _find_configuration_by_origin (config_list : list [dict ], origin : str ) -> dict | None :
@@ -225,22 +221,26 @@ def test_library_settings(self, library_env: dict[str, str], test_agent: TestAge
225221 if context .library == "python" and apm_telemetry_name in ("trace_sample_rate" ,):
226222 # DD_TRACE_SAMPLE_RATE is not supported in ddtrace>=3.x
227223 continue
228- mapped_apm_telemetry_name = _mapped_telemetry_name (apm_telemetry_name )
224+ mapped_apm_telemetry_names = _mapped_telemetry_name (apm_telemetry_name )
229225
230- cfg_item = test_agent .get_telemetry_config_by_origin (
231- configuration_by_name , mapped_apm_telemetry_name , "default"
232- )
226+ cfg_item = None
227+ for mapped_name in mapped_apm_telemetry_names :
228+ cfg_item = test_agent .get_telemetry_config_by_origin (
229+ configuration_by_name , mapped_name , "default"
230+ )
231+ if cfg_item is not None :
232+ break
233233 assert (
234234 cfg_item is not None
235- ), f"No configuration found for ' { mapped_apm_telemetry_name } ' with origin 'default'"
235+ ), f"No configuration found for any of ' { mapped_apm_telemetry_names } ' with origin 'default'"
236236 assert isinstance (cfg_item , dict )
237237 if isinstance (value , tuple ):
238238 assert (
239239 cfg_item .get ("value" ) in value
240- ), f"Unexpected value for '{ mapped_apm_telemetry_name } ' ('{ context .library } ')"
240+ ), f"Unexpected value for '{ mapped_apm_telemetry_names } ' ('{ context .library } ')"
241241 else :
242- assert cfg_item .get ("value" ) == value , f"Unexpected value for '{ mapped_apm_telemetry_name } '"
243- assert cfg_item .get ("origin" ) == "default" , f"Unexpected origin for '{ mapped_apm_telemetry_name } '"
242+ assert cfg_item .get ("value" ) == value , f"Unexpected value for '{ mapped_apm_telemetry_names } '"
243+ assert cfg_item .get ("origin" ) == "default" , f"Unexpected origin for '{ mapped_apm_telemetry_names } '"
244244
245245
246246@scenarios .parametric
@@ -438,17 +438,21 @@ def test_library_settings(self, library_env: dict[str, str], test_agent: TestAge
438438 # DD_TRACE_SAMPLE_RATE is not supported in ddtrace>=3.x
439439 continue
440440
441- mapped_apm_telemetry_name = _mapped_telemetry_name (apm_telemetry_name )
442- cfg_item = test_agent .get_telemetry_config_by_origin (
443- configuration_by_name , mapped_apm_telemetry_name , "env_var"
444- )
445- assert cfg_item is not None , f"Missing telemetry config item for '{ mapped_apm_telemetry_name } '"
441+ mapped_apm_telemetry_names = _mapped_telemetry_name (apm_telemetry_name )
442+ cfg_item = None
443+ for mapped_name in mapped_apm_telemetry_names :
444+ cfg_item = test_agent .get_telemetry_config_by_origin (
445+ configuration_by_name , mapped_name , "env_var"
446+ )
447+ if cfg_item is not None :
448+ break
449+ assert cfg_item is not None , f"Missing telemetry config item for any of '{ mapped_apm_telemetry_names } '"
446450 assert isinstance (cfg_item , dict )
447451 if isinstance (environment_value , tuple ):
448- assert cfg_item .get ("value" ) in environment_value , f"Unexpected value for '{ mapped_apm_telemetry_name } '"
452+ assert cfg_item .get ("value" ) in environment_value , f"Unexpected value for '{ mapped_apm_telemetry_names } '"
449453 else :
450- assert cfg_item .get ("value" ) == environment_value , f"Unexpected value for '{ mapped_apm_telemetry_name } '"
451- assert cfg_item .get ("origin" ) == "env_var" , f"Unexpected origin for '{ mapped_apm_telemetry_name } '"
454+ assert cfg_item .get ("value" ) == environment_value , f"Unexpected value for '{ mapped_apm_telemetry_names } '"
455+ assert cfg_item .get ("origin" ) == "env_var" , f"Unexpected origin for '{ mapped_apm_telemetry_names } '"
452456
453457 @missing_feature (context .library == "dotnet" , reason = "Not implemented" )
454458 @missing_feature (context .library == "java" , reason = "Not implemented" )
@@ -694,13 +698,17 @@ def test_stable_configuration_origin(
694698 # The Go tracer does not support logs injection.
695699 if context .library == "golang" and cfg_name == "logs_injection_enabled" :
696700 continue
697- apm_telemetry_name = _mapped_telemetry_name (cfg_name )
698- telemetry_item = test_agent .get_telemetry_config_by_origin (
699- configuration_by_name , apm_telemetry_name , expected_origin
700- )
701+ apm_telemetry_names = _mapped_telemetry_name (cfg_name )
702+ telemetry_item = None
703+ for apm_name in apm_telemetry_names :
704+ telemetry_item = test_agent .get_telemetry_config_by_origin (
705+ configuration_by_name , apm_name , expected_origin
706+ )
707+ if telemetry_item is not None :
708+ break
701709 assert (
702710 telemetry_item is not None
703- ), f"No configuration found for ' { apm_telemetry_name } ' with origin '{ expected_origin } '"
711+ ), f"No configuration found for any of ' { apm_telemetry_names } ' with origin '{ expected_origin } '"
704712 assert isinstance (telemetry_item , dict )
705713 assert telemetry_item ["origin" ] == expected_origin , f"wrong origin for { telemetry_item } "
706714 assert telemetry_item ["value" ]
@@ -755,25 +763,33 @@ def test_stable_configuration_config_id(
755763 test_library .dd_start_span ("test" )
756764 configuration_by_name = test_agent .wait_for_telemetry_configurations ()
757765 # Configuration set via fleet config should have the config_id set
758- apm_telemetry_name = _mapped_telemetry_name ("trace_debug_enabled" )
759- telemetry_item = test_agent .get_telemetry_config_by_origin (
760- configuration_by_name , apm_telemetry_name , "fleet_stable_config"
761- )
766+ apm_telemetry_names = _mapped_telemetry_name ("trace_debug_enabled" )
767+ telemetry_item = None
768+ for apm_name in apm_telemetry_names :
769+ telemetry_item = test_agent .get_telemetry_config_by_origin (
770+ configuration_by_name , apm_name , "fleet_stable_config"
771+ )
772+ if telemetry_item is not None :
773+ break
762774 assert (
763775 telemetry_item is not None
764- ), f"No configuration found for ' { apm_telemetry_name } ' with origin 'fleet_stable_config'"
776+ ), f"No configuration found for any of ' { apm_telemetry_names } ' with origin 'fleet_stable_config'"
765777 assert isinstance (telemetry_item , dict )
766778 assert telemetry_item ["origin" ] == "fleet_stable_config"
767779 assert telemetry_item ["config_id" ] == fleet_config_id
768780
769781 # Configuration set via local config should not have the config_id set
770- apm_telemetry_name = _mapped_telemetry_name ("dynamic_instrumentation_enabled" )
771- telemetry_item = test_agent .get_telemetry_config_by_origin (
772- configuration_by_name , apm_telemetry_name , "local_stable_config"
773- )
782+ apm_telemetry_names = _mapped_telemetry_name ("dynamic_instrumentation_enabled" )
783+ telemetry_item = None
784+ for apm_name in apm_telemetry_names :
785+ telemetry_item = test_agent .get_telemetry_config_by_origin (
786+ configuration_by_name , apm_name , "local_stable_config"
787+ )
788+ if telemetry_item is not None :
789+ break
774790 assert (
775791 telemetry_item is not None
776- ), f"No configuration found for ' { apm_telemetry_name } ' with origin 'local_stable_config'"
792+ ), f"No configuration found for any of ' { apm_telemetry_names } ' with origin 'local_stable_config'"
777793 assert isinstance (telemetry_item , dict )
778794 assert telemetry_item ["origin" ] == "local_stable_config"
779795 assert "config_id" not in telemetry_item or telemetry_item ["config_id" ] is None
@@ -842,13 +858,17 @@ def test_stable_configuration_origin_extended_configs_good_use_case(
842858 test_library .dd_start_span ("test" )
843859 configuration_by_name = test_agent .wait_for_telemetry_configurations ()
844860 for cfg_name , expected_origin in expected_origins .items ():
845- apm_telemetry_name = _mapped_telemetry_name (cfg_name )
846- telemetry_item = test_agent .get_telemetry_config_by_origin (
847- configuration_by_name , apm_telemetry_name , expected_origin
848- )
861+ apm_telemetry_names = _mapped_telemetry_name (cfg_name )
862+ telemetry_item = None
863+ for apm_name in apm_telemetry_names :
864+ telemetry_item = test_agent .get_telemetry_config_by_origin (
865+ configuration_by_name , apm_name , expected_origin
866+ )
867+ if telemetry_item is not None :
868+ break
849869 assert (
850870 telemetry_item is not None
851- ), f"No configuration found for ' { apm_telemetry_name } ' with origin '{ expected_origin } '. Full configuration_by_name: { configuration_by_name } "
871+ ), f"No configuration found for any of ' { apm_telemetry_names } ' with origin '{ expected_origin } '. Full configuration_by_name: { configuration_by_name } "
852872
853873 assert isinstance (telemetry_item , dict )
854874 actual_origin = telemetry_item .get ("origin" , "<missing>" )
@@ -929,13 +949,17 @@ def test_stable_configuration_origin_extended_configs_temporary_use_case(
929949 elif cfg_name == "tags" and context .library .name in ["ruby" ]:
930950 continue
931951 else :
932- apm_telemetry_name = _mapped_telemetry_name (cfg_name )
933- telemetry_item = test_agent .get_telemetry_config_by_origin (
934- configuration_by_name , apm_telemetry_name , expected_origin
935- )
952+ apm_telemetry_names = _mapped_telemetry_name (cfg_name )
953+ telemetry_item = None
954+ for apm_name in apm_telemetry_names :
955+ telemetry_item = test_agent .get_telemetry_config_by_origin (
956+ configuration_by_name , apm_name , expected_origin
957+ )
958+ if telemetry_item is not None :
959+ break
936960 assert (
937961 telemetry_item is not None
938- ), f"No configuration found for ' { apm_telemetry_name } ' with origin '{ expected_origin } '. Full configuration_by_name: { configuration_by_name } "
962+ ), f"No configuration found for any of ' { apm_telemetry_names } ' with origin '{ expected_origin } '. Full configuration_by_name: { configuration_by_name } "
939963 assert isinstance (telemetry_item , dict )
940964 actual_origin = telemetry_item .get ("origin" , "<missing>" )
941965 assert (
@@ -1087,11 +1111,15 @@ def test_injection_enabled(
10871111 test_agent .wait_for_telemetry_configurations ()
10881112
10891113 configuration_by_name = test_agent .wait_for_telemetry_configurations (service = "service_test" )
1090- ssi_enabled_telemetry_name = _mapped_telemetry_name ("ssi_injection_enabled" )
1091- inject_enabled = test_agent .get_telemetry_config_by_origin (
1092- configuration_by_name , ssi_enabled_telemetry_name , "env_var" , fallback_to_first = (expected_value is None )
1093- )
1094- assert inject_enabled is not None , f"No configuration found for '{ ssi_enabled_telemetry_name } '"
1114+ ssi_enabled_telemetry_names = _mapped_telemetry_name ("ssi_injection_enabled" )
1115+ inject_enabled = None
1116+ for ssi_name in ssi_enabled_telemetry_names :
1117+ inject_enabled = test_agent .get_telemetry_config_by_origin (
1118+ configuration_by_name , ssi_name , "env_var" , fallback_to_first = (expected_value is None )
1119+ )
1120+ if inject_enabled is not None :
1121+ break
1122+ assert inject_enabled is not None , f"No configuration found for any of '{ ssi_enabled_telemetry_names } '"
10951123 assert isinstance (inject_enabled , dict )
10961124 assert inject_enabled .get ("value" ) == expected_value
10971125 if expected_value is not None :
@@ -1138,11 +1166,15 @@ def test_inject_force(
11381166 test_agent .wait_for_telemetry_configurations ()
11391167 configuration_by_name = test_agent .wait_for_telemetry_configurations (service = "service_test" )
11401168 # # Check that the tags name match the expected value
1141- inject_force_telemetry_name = _mapped_telemetry_name ("ssi_forced_injection_enabled" )
1142- inject_force = test_agent .get_telemetry_config_by_origin (
1143- configuration_by_name , inject_force_telemetry_name , "env_var" , fallback_to_first = (expected_value == "none" )
1144- )
1145- assert inject_force is not None , f"No configuration found for '{ inject_force_telemetry_name } '"
1169+ inject_force_telemetry_names = _mapped_telemetry_name ("ssi_forced_injection_enabled" )
1170+ inject_force = None
1171+ for inject_force_name in inject_force_telemetry_names :
1172+ inject_force = test_agent .get_telemetry_config_by_origin (
1173+ configuration_by_name , inject_force_name , "env_var" , fallback_to_first = (expected_value == "none" )
1174+ )
1175+ if inject_force is not None :
1176+ break
1177+ assert inject_force is not None , f"No configuration found for any of '{ inject_force_telemetry_names } '"
11461178 assert isinstance (inject_force , dict )
11471179 assert str (inject_force .get ("value" )).lower () == expected_value
11481180 if expected_value != "none" :
@@ -1160,14 +1192,18 @@ def test_instrumentation_source_non_ssi(
11601192 test_agent .wait_for_telemetry_configurations ()
11611193 configuration_by_name = test_agent .wait_for_telemetry_configurations (service = "service_test" )
11621194 # Check that the tags name match the expected value
1163- instrumentation_source_telemetry_name = _mapped_telemetry_name ("instrumentation_source" )
1195+ instrumentation_source_telemetry_names = _mapped_telemetry_name ("instrumentation_source" )
11641196 # Take any configuration (origin doesn't matter for this test)
1165- instrumentation_source = test_agent .get_telemetry_config_by_origin (
1166- configuration_by_name , instrumentation_source_telemetry_name , "default" , fallback_to_first = True
1167- )
1197+ instrumentation_source = None
1198+ for instrumentation_source_name in instrumentation_source_telemetry_names :
1199+ instrumentation_source = test_agent .get_telemetry_config_by_origin (
1200+ configuration_by_name , instrumentation_source_name , "default" , fallback_to_first = True
1201+ )
1202+ if instrumentation_source is not None :
1203+ break
11681204 assert (
11691205 instrumentation_source is not None
1170- ), f"No configuration found for ' { instrumentation_source_telemetry_name } '"
1206+ ), f"No configuration found for any of ' { instrumentation_source_telemetry_names } '"
11711207 assert isinstance (instrumentation_source , dict )
11721208 value : str | None = instrumentation_source .get ("value" )
11731209 assert value is not None
0 commit comments