|  | 
| 10 | 10 | from datadog_lambda.constants import SamplingPriority, TraceHeader, XraySubsegment | 
| 11 | 11 | from datadog_lambda.tracing import ( | 
| 12 | 12 |     extract_dd_trace_context, | 
|  | 13 | +    create_function_execution_span, | 
| 13 | 14 |     get_dd_trace_context, | 
| 14 | 15 |     set_correlation_ids, | 
| 15 | 16 |     _convert_xray_trace_id, | 
| 16 | 17 |     _convert_xray_entity_id, | 
| 17 | 18 |     _convert_xray_sampling, | 
| 18 | 19 | ) | 
| 19 | 20 | 
 | 
|  | 21 | +function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" | 
|  | 22 | + | 
|  | 23 | + | 
|  | 24 | +def get_mock_context( | 
|  | 25 | +    aws_request_id="request-id-1", | 
|  | 26 | +    memory_limit_in_mb="256", | 
|  | 27 | +    invoked_function_arn=function_arn, | 
|  | 28 | +    function_version="1", | 
|  | 29 | +): | 
|  | 30 | +    lambda_context = MagicMock() | 
|  | 31 | +    lambda_context.aws_request_id = aws_request_id | 
|  | 32 | +    lambda_context.memory_limit_in_mb = memory_limit_in_mb | 
|  | 33 | +    lambda_context.invoked_function_arn = invoked_function_arn | 
|  | 34 | +    lambda_context.function_version = function_version | 
|  | 35 | +    return lambda_context | 
|  | 36 | + | 
| 20 | 37 | 
 | 
| 21 | 38 | class TestExtractAndGetDDTraceContext(unittest.TestCase): | 
| 22 | 39 |     def setUp(self): | 
| @@ -195,3 +212,27 @@ def test_set_correlation_ids(self): | 
| 195 | 212 |         trace_id, span_id = get_correlation_ids() | 
| 196 | 213 |         self.assertEqual(trace_id, "123") | 
| 197 | 214 |         self.assertEqual(span_id, "456") | 
|  | 215 | + | 
|  | 216 | + | 
|  | 217 | +class TestFunctionSpanTags(unittest.TestCase): | 
|  | 218 | +    def test_function(self): | 
|  | 219 | +        ctx = get_mock_context() | 
|  | 220 | +        span = create_function_execution_span(ctx, "", False, {"source": ""}, False) | 
|  | 221 | +        self.assertEqual(span.get_tag("function_arn"), function_arn) | 
|  | 222 | +        self.assertEqual(span.get_tag("function_version"), "$LATEST") | 
|  | 223 | + | 
|  | 224 | +    def test_function_with_version(self): | 
|  | 225 | +        function_version = "1" | 
|  | 226 | +        ctx = get_mock_context( | 
|  | 227 | +            invoked_function_arn=function_arn + ":" + function_version | 
|  | 228 | +        ) | 
|  | 229 | +        span = create_function_execution_span(ctx, "", False, {"source": ""}, False) | 
|  | 230 | +        self.assertEqual(span.get_tag("function_arn"), function_arn) | 
|  | 231 | +        self.assertEqual(span.get_tag("function_version"), function_version) | 
|  | 232 | + | 
|  | 233 | +    def test_function_with_alias(self): | 
|  | 234 | +        function_alias = "alias" | 
|  | 235 | +        ctx = get_mock_context(invoked_function_arn=function_arn + ":" + function_alias) | 
|  | 236 | +        span = create_function_execution_span(ctx, "", False, {"source": ""}, False) | 
|  | 237 | +        self.assertEqual(span.get_tag("function_arn"), function_arn) | 
|  | 238 | +        self.assertEqual(span.get_tag("function_version"), function_alias) | 
0 commit comments