@@ -1467,6 +1467,7 @@ def test_set_service_mapping(self):
14671467 self .set_service_mapping (new_service_mapping )
14681468 self .assertEqual (self .get_service_mapping (), new_service_mapping )
14691469
1470+ @patch ("datadog_lambda.config.Config.service" , None )
14701471 def test_determine_service_name (self ):
14711472 # Prepare the environment
14721473 os .environ ["DD_SERVICE_MAPPING" ] = "api1:service1,api2:service2"
@@ -1501,44 +1502,102 @@ def test_determine_service_name(self):
15011502 "default" ,
15021503 )
15031504
1504- # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED set to false
1505- os .environ ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" ] = "false"
1506- self .assertEqual (
1507- determine_service_name (
1508- self .get_service_mapping (), "api4" , "api4" , "extracted" , "fallback"
1509- ),
1510- "fallback" ,
1511- )
1512-
1513- # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED set to 0
1514- os .environ ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" ] = "0"
1515- self .assertEqual (
1516- determine_service_name (
1517- self .get_service_mapping (), "api4" , "api4" , "extracted" , "fallback"
1518- ),
1519- "fallback" ,
1520- )
1505+ # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED disabled
1506+ with patch (
1507+ "datadog_lambda.config.Config.aws_service_representation_enabled" , False
1508+ ):
1509+ self .assertEqual (
1510+ determine_service_name (
1511+ self .get_service_mapping (),
1512+ "api4" ,
1513+ "api4" ,
1514+ "extracted" ,
1515+ "fallback" ,
1516+ ),
1517+ "fallback" ,
1518+ )
15211519
1522- # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED not set (default behavior)
1523- if "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" in os .environ :
1524- del os .environ ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" ]
1525- self .assertEqual (
1526- determine_service_name (
1527- self .get_service_mapping (), "api4" , "api4" , "extracted" , "fallback"
1528- ),
1529- "extracted" ,
1530- )
1520+ # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED enabled (default)
1521+ with patch (
1522+ "datadog_lambda.config.Config.aws_service_representation_enabled" , True
1523+ ):
1524+ self .assertEqual (
1525+ determine_service_name (
1526+ self .get_service_mapping (),
1527+ "api4" ,
1528+ "api4" ,
1529+ "extracted" ,
1530+ "fallback" ,
1531+ ),
1532+ "extracted" ,
1533+ )
15311534
1532- # Test with empty extracted key
1533- self .assertEqual (
1534- determine_service_name (
1535- self .get_service_mapping (), "api4" , "api4" , " " , "fallback"
1536- ),
1537- "fallback" ,
1538- )
1535+ # Test with empty extracted key
1536+ self .assertEqual (
1537+ determine_service_name (
1538+ self .get_service_mapping (), "api4" , "api4" , " " , "fallback"
1539+ ),
1540+ "fallback" ,
1541+ )
15391542
15401543 del os .environ ["DD_SERVICE_MAPPING" ]
15411544
1545+ def test_determine_service_name_prefers_dd_service (self ):
1546+ # When DD_SERVICE is set, inferred spans always use the base service
1547+ # name (DD_SERVICE), regardless of any other configuration.
1548+ with patch ("datadog_lambda.config.Config.service" , "my-service" ):
1549+ self .assertEqual (
1550+ determine_service_name (
1551+ {}, "queue-name" , "lambda_sqs" , "queue-name" , "sqs"
1552+ ),
1553+ "my-service" ,
1554+ )
1555+
1556+ # DD_SERVICE takes precedence over an explicit service mapping.
1557+ self .assertEqual (
1558+ determine_service_name (
1559+ {"lambda_sqs" : "mapped-service" },
1560+ "queue-name" ,
1561+ "lambda_sqs" ,
1562+ "queue-name" ,
1563+ "sqs" ,
1564+ ),
1565+ "my-service" ,
1566+ )
1567+
1568+ # DD_SERVICE takes precedence over a disabled AWS service
1569+ # representation.
1570+ with patch (
1571+ "datadog_lambda.config.Config.aws_service_representation_enabled" ,
1572+ False ,
1573+ ):
1574+ self .assertEqual (
1575+ determine_service_name (
1576+ {}, "queue-name" , "lambda_sqs" , "queue-name" , "sqs"
1577+ ),
1578+ "my-service" ,
1579+ )
1580+
1581+ # When DD_SERVICE is not set, fall back to the existing behavior
1582+ # (service mapping, then AWS service representation / extracted key).
1583+ with patch ("datadog_lambda.config.Config.service" , None ):
1584+ self .assertEqual (
1585+ determine_service_name (
1586+ {"lambda_sqs" : "mapped-service" },
1587+ "queue-name" ,
1588+ "lambda_sqs" ,
1589+ "queue-name" ,
1590+ "sqs" ,
1591+ ),
1592+ "mapped-service" ,
1593+ )
1594+ self .assertEqual (
1595+ determine_service_name (
1596+ {}, "queue-name" , "lambda_sqs" , "queue-name" , "sqs"
1597+ ),
1598+ "queue-name" ,
1599+ )
1600+
15421601 def test_remaps_all_inferred_span_service_names_from_api_gateway_event (self ):
15431602 new_service_mapping = {"lambda_api_gateway" : "new-name" }
15441603 self .set_service_mapping (new_service_mapping )
0 commit comments