@@ -51,7 +51,9 @@ def patch(self, *args, **kwargs):
5151def reset_tracing_config (mocker ):
5252 Tracer ._reset_config ()
5353 # reset global cold start module
54- mocker .patch ("aws_lambda_powertools.tracing.tracer.is_cold_start" , return_value = True )
54+ mocker .patch (
55+ "aws_lambda_powertools.tracing.tracer.is_cold_start" , new_callable = mocker .PropertyMock (return_value = True )
56+ )
5557 yield
5658
5759
@@ -79,7 +81,7 @@ class InSubsegment(NamedTuple):
7981 yield in_subsegment
8082
8183
82- def test_tracer_lambda_handler (mocker , dummy_response , provider_stub , in_subsegment_mock ):
84+ def test_tracer_lambda_handler_subsegment (mocker , dummy_response , provider_stub , in_subsegment_mock ):
8385 # GIVEN Tracer is initialized with booking as the service name
8486 provider = provider_stub (in_subsegment = in_subsegment_mock .in_subsegment )
8587 tracer = Tracer (provider = provider , service = "booking" )
@@ -92,15 +94,13 @@ def handler(event, context):
9294 handler ({}, mocker .MagicMock ())
9395
9496 # THEN we should have a subsegment named handler
95- # annotate cold start, and add its response as trace metadata
97+ # add its response as trace metadata
9698 # and use service name as a metadata namespace
9799 assert in_subsegment_mock .in_subsegment .call_count == 1
98100 assert in_subsegment_mock .in_subsegment .call_args == mocker .call (name = "## handler" )
99101 assert in_subsegment_mock .put_metadata .call_args == mocker .call (
100102 key = "handler response" , value = dummy_response , namespace = "booking"
101103 )
102- assert in_subsegment_mock .put_annotation .call_count == 1
103- assert in_subsegment_mock .put_annotation .call_args == mocker .call (key = "ColdStart" , value = True )
104104
105105
106106def test_tracer_method (mocker , dummy_response , provider_stub , in_subsegment_mock ):
@@ -571,3 +571,22 @@ def greeting(name, message):
571571
572572 # THEN we should not add any metadata
573573 assert in_subsegment_mock .put_metadata .call_count == 0
574+
575+
576+ def test_tracer_lambda_handler_cold_start (mocker , dummy_response , provider_stub , in_subsegment_mock ):
577+ # GIVEN
578+ provider = provider_stub (in_subsegment = in_subsegment_mock .in_subsegment )
579+ tracer = Tracer (provider = provider , service = "booking" )
580+
581+ # WHEN
582+ @tracer .capture_lambda_handler
583+ def handler (event , context ):
584+ return dummy_response
585+
586+ handler ({}, mocker .MagicMock ())
587+
588+ # THEN
589+ assert in_subsegment_mock .put_annotation .call_args == mocker .call (key = "ColdStart" , value = True )
590+
591+ handler ({}, mocker .MagicMock ())
592+ assert in_subsegment_mock .put_annotation .call_args == mocker .call (key = "ColdStart" , value = False )
0 commit comments