@@ -789,3 +789,113 @@ def lambda_handler(event, context):
789789 self .mock_asm_start_response .assert_not_called ()
790790
791791 assert lambda_handler .span .get_tag ("http.status_code" ) == "200"
792+
793+
794+ @patch ("datadog_lambda.config.Config.exception_replay_enabled" , True )
795+ def test_exception_replay_enabled (monkeypatch ):
796+ importlib .reload (wrapper )
797+
798+ original_SpanExceptionHandler_enable = wrapper .SpanExceptionHandler .enable
799+ SpanExceptionHandler_enable_calls = []
800+
801+ def SpanExceptionHandler_enable (* args , ** kwargs ):
802+ SpanExceptionHandler_enable_calls .append ((args , kwargs ))
803+ return original_SpanExceptionHandler_enable (* args , ** kwargs )
804+
805+ original_SignalUploader_periodic = wrapper .SignalUploader .periodic
806+ SignalUploader_periodic_calls = []
807+
808+ def SignalUploader_periodic (* args , ** kwargs ):
809+ SignalUploader_periodic_calls .append ((args , kwargs ))
810+ return original_SignalUploader_periodic (* args , ** kwargs )
811+
812+ monkeypatch .setattr (
813+ "datadog_lambda.wrapper.SpanExceptionHandler.enable" ,
814+ SpanExceptionHandler_enable ,
815+ )
816+ monkeypatch .setattr (
817+ "datadog_lambda.wrapper.SignalUploader.periodic" , SignalUploader_periodic
818+ )
819+
820+ expected_response = {
821+ "statusCode" : 200 ,
822+ "body" : "This should be returned" ,
823+ }
824+
825+ @wrapper .datadog_lambda_wrapper
826+ def lambda_handler (event , context ):
827+ return expected_response
828+
829+ response = lambda_handler ({}, get_mock_context ())
830+
831+ assert response == expected_response
832+ assert len (SpanExceptionHandler_enable_calls ) == 1
833+ assert len (SignalUploader_periodic_calls ) == 1
834+
835+
836+ @patch ("datadog_lambda.config.Config.profiling_enabled" , True )
837+ def test_profiling_enabled (monkeypatch ):
838+ importlib .reload (wrapper )
839+
840+ original_Profiler_start = wrapper .profiler .Profiler .start
841+ Profiler_start_calls = []
842+
843+ def Profiler_start (* args , ** kwargs ):
844+ Profiler_start_calls .append ((args , kwargs ))
845+ return original_Profiler_start (* args , ** kwargs )
846+
847+ monkeypatch .setattr ("datadog_lambda.wrapper.is_new_sandbox" , lambda : True )
848+ monkeypatch .setattr (
849+ "datadog_lambda.wrapper.profiler.Profiler.start" , Profiler_start
850+ )
851+
852+ expected_response = {
853+ "statusCode" : 200 ,
854+ "body" : "This should be returned" ,
855+ }
856+
857+ @wrapper .datadog_lambda_wrapper
858+ def lambda_handler (event , context ):
859+ return expected_response
860+
861+ response = lambda_handler ({}, get_mock_context ())
862+
863+ assert response == expected_response
864+ assert len (Profiler_start_calls ) == 1
865+
866+
867+ @patch ("datadog_lambda.config.Config.llmobs_enabled" , True )
868+ def test_llmobs_enabled (monkeypatch ):
869+ importlib .reload (wrapper )
870+
871+ original_LLMObs_enable = wrapper .LLMObs .enable
872+ LLMObs_enable_calls = []
873+
874+ def LLMObs_enable (* args , ** kwargs ):
875+ LLMObs_enable_calls .append ((args , kwargs ))
876+ return original_LLMObs_enable (* args , ** kwargs )
877+
878+ original_LLMObs_flush = wrapper .LLMObs .flush
879+ LLMObs_flush_calls = []
880+
881+ def LLMObs_flush (* args , ** kwargs ):
882+ LLMObs_flush_calls .append ((args , kwargs ))
883+ return original_LLMObs_flush (* args , ** kwargs )
884+
885+ monkeypatch .setattr ("datadog_lambda.wrapper.LLMObs.enable" , LLMObs_enable )
886+ monkeypatch .setattr ("datadog_lambda.wrapper.LLMObs.flush" , LLMObs_flush )
887+
888+ expected_response = {
889+ "statusCode" : 200 ,
890+ "body" : "This should be returned" ,
891+ }
892+
893+ @wrapper .datadog_lambda_wrapper
894+ def lambda_handler (event , context ):
895+ return expected_response
896+
897+ response = lambda_handler ({}, get_mock_context ())
898+
899+ assert response == expected_response
900+ assert len (LLMObs_enable_calls ) == 1
901+ assert len (LLMObs_flush_calls ) == 1
0 commit comments