@@ -915,11 +915,13 @@ def test_log_error_standard_log_sink(self, mock_stdout):
915
915
916
916
def test_log_error_framed_log_sink (self ):
917
917
with NamedTemporaryFile () as temp_file :
918
+ before = int (time .time_ns () / 1000 )
918
919
with bootstrap .FramedTelemetryLogSink (
919
920
os .open (temp_file .name , os .O_CREAT | os .O_RDWR )
920
921
) as log_sink :
921
922
err_to_log = bootstrap .make_error ("Error message" , "ErrorType" , None )
922
923
bootstrap .log_error (err_to_log , log_sink )
924
+ after = int (time .time_ns () / 1000 )
923
925
924
926
expected_logged_error = (
925
927
"[ERROR] ErrorType: Error message\n Traceback (most recent call last):"
@@ -934,7 +936,11 @@ def test_log_error_framed_log_sink(self):
934
936
length = int .from_bytes (content [4 :8 ], "big" )
935
937
self .assertEqual (length , len (expected_logged_error .encode ("utf8" )))
936
938
937
- actual_message = content [8 :].decode ()
939
+ timestamp = int .from_bytes (content [8 :16 ], "big" )
940
+ self .assertTrue (before <= timestamp )
941
+ self .assertTrue (timestamp <= after )
942
+
943
+ actual_message = content [16 :].decode ()
938
944
self .assertEqual (actual_message , expected_logged_error )
939
945
940
946
@patch ("sys.stdout" , new_callable = StringIO )
@@ -952,13 +958,15 @@ def test_log_error_indentation_standard_log_sink(self, mock_stdout):
952
958
953
959
def test_log_error_indentation_framed_log_sink (self ):
954
960
with NamedTemporaryFile () as temp_file :
961
+ before = int (time .time_ns () / 1000 )
955
962
with bootstrap .FramedTelemetryLogSink (
956
963
os .open (temp_file .name , os .O_CREAT | os .O_RDWR )
957
964
) as log_sink :
958
965
err_to_log = bootstrap .make_error (
959
966
"Error message" , "ErrorType" , [" line1 " , " line2 " , " " ]
960
967
)
961
968
bootstrap .log_error (err_to_log , log_sink )
969
+ after = int (time .time_ns () / 1000 )
962
970
963
971
expected_logged_error = (
964
972
"[ERROR] ErrorType: Error message\n Traceback (most recent call last):"
@@ -974,7 +982,11 @@ def test_log_error_indentation_framed_log_sink(self):
974
982
length = int .from_bytes (content [4 :8 ], "big" )
975
983
self .assertEqual (length , len (expected_logged_error .encode ("utf8" )))
976
984
977
- actual_message = content [8 :].decode ()
985
+ timestamp = int .from_bytes (content [8 :16 ], "big" )
986
+ self .assertTrue (before <= timestamp )
987
+ self .assertTrue (timestamp <= after )
988
+
989
+ actual_message = content [16 :].decode ()
978
990
self .assertEqual (actual_message , expected_logged_error )
979
991
980
992
@patch ("sys.stdout" , new_callable = StringIO )
@@ -989,13 +1001,15 @@ def test_log_error_empty_stacktrace_line_standard_log_sink(self, mock_stdout):
989
1001
990
1002
def test_log_error_empty_stacktrace_line_framed_log_sink (self ):
991
1003
with NamedTemporaryFile () as temp_file :
1004
+ before = int (time .time_ns () / 1000 )
992
1005
with bootstrap .FramedTelemetryLogSink (
993
1006
os .open (temp_file .name , os .O_CREAT | os .O_RDWR )
994
1007
) as log_sink :
995
1008
err_to_log = bootstrap .make_error (
996
1009
"Error message" , "ErrorType" , ["line1" , "" , "line2" ]
997
1010
)
998
1011
bootstrap .log_error (err_to_log , log_sink )
1012
+ after = int (time .time_ns () / 1000 )
999
1013
1000
1014
expected_logged_error = (
1001
1015
"[ERROR] ErrorType: Error message\n Traceback "
@@ -1011,12 +1025,17 @@ def test_log_error_empty_stacktrace_line_framed_log_sink(self):
1011
1025
length = int .from_bytes (content [4 :8 ], "big" )
1012
1026
self .assertEqual (length , len (expected_logged_error ))
1013
1027
1014
- actual_message = content [8 :].decode ()
1028
+ timestamp = int .from_bytes (content [8 :16 ], "big" )
1029
+ self .assertTrue (before <= timestamp )
1030
+ self .assertTrue (timestamp <= after )
1031
+
1032
+ actual_message = content [16 :].decode ()
1015
1033
self .assertEqual (actual_message , expected_logged_error )
1016
1034
1017
1035
# Just to ensure we are not logging the requestId from error response, just sending in the response
1018
1036
def test_log_error_invokeId_line_framed_log_sink (self ):
1019
1037
with NamedTemporaryFile () as temp_file :
1038
+ before = int (time .time_ns () / 1000 )
1020
1039
with bootstrap .FramedTelemetryLogSink (
1021
1040
os .open (temp_file .name , os .O_CREAT | os .O_RDWR )
1022
1041
) as log_sink :
@@ -1027,6 +1046,7 @@ def test_log_error_invokeId_line_framed_log_sink(self):
1027
1046
"testrequestId" ,
1028
1047
)
1029
1048
bootstrap .log_error (err_to_log , log_sink )
1049
+ after = int (time .time_ns () / 1000 )
1030
1050
1031
1051
expected_logged_error = (
1032
1052
"[ERROR] ErrorType: Error message\n Traceback "
@@ -1042,7 +1062,11 @@ def test_log_error_invokeId_line_framed_log_sink(self):
1042
1062
length = int .from_bytes (content [4 :8 ], "big" )
1043
1063
self .assertEqual (length , len (expected_logged_error ))
1044
1064
1045
- actual_message = content [8 :].decode ()
1065
+ timestamp = int .from_bytes (content [8 :16 ], "big" )
1066
+ self .assertTrue (before <= timestamp )
1067
+ self .assertTrue (timestamp <= after )
1068
+
1069
+ actual_message = content [16 :].decode ()
1046
1070
self .assertEqual (actual_message , expected_logged_error )
1047
1071
1048
1072
0 commit comments