def test_log_error_invokeId_line_framed_log_sink(self): with NamedTemporaryFile() as temp_file: with bootstrap.FramedTelemetryLogSink(temp_file.name) as log_sink: err_to_log = bootstrap.make_error( "Error message", "ErrorType", ["line1", "", "line2"], "testrequestId", ) bootstrap.log_error(err_to_log, log_sink) expected_logged_error = ( "[ERROR] ErrorType: Error message\nTraceback " "(most recent call last):\nline1\n\nline2") with open(temp_file.name, "rb") as f: content = f.read() frame_type = int.from_bytes(content[:4], "big") self.assertEqual(frame_type, 0xA55A0001) length = int.from_bytes(content[4:8], "big") self.assertEqual(length, len(expected_logged_error)) actual_message = content[8:].decode() self.assertEqual(actual_message, expected_logged_error)
def test_log_error_indentation_framed_log_sink(self): with NamedTemporaryFile() as temp_file: with bootstrap.FramedTelemetryLogSink( os.open(temp_file.name, os.O_CREAT | os.O_RDWR)) as log_sink: err_to_log = bootstrap.make_error( "Error message", "ErrorType", [" line1 ", " line2 ", " "]) bootstrap.log_error(err_to_log, log_sink) expected_logged_error = ( "[ERROR] ErrorType: Error message\nTraceback (most recent call last):" "\n\xa0\xa0line1 \n\xa0\xa0line2 \n\xa0\xa0") with open(temp_file.name, "rb") as f: content = f.read() frame_type = int.from_bytes(content[:4], "big") self.assertEqual(frame_type, 0xA55A0001) length = int.from_bytes(content[4:8], "big") self.assertEqual(length, len(expected_logged_error.encode("utf8"))) actual_message = content[8:].decode() self.assertEqual(actual_message, expected_logged_error)
def test_log_error_indentation_standard_log_sink(self, mock_stdout): err_to_log = bootstrap.make_error("Error message", "ErrorType", [" line1 ", " line2 ", " "]) bootstrap.log_error(err_to_log, bootstrap.StandardLogSink()) expected_logged_error = "[ERROR] ErrorType: Error message\rTraceback (most recent call last):\r\xa0\xa0line1 \r\xa0\xa0line2 \r\xa0\xa0\n" self.assertEqual(mock_stdout.getvalue(), expected_logged_error)
def test_log_error_standard_log_sink(self, mock_stdout): err_to_log = bootstrap.make_error("Error message", "ErrorType", None) bootstrap.log_error(err_to_log, bootstrap.StandardLogSink()) expected_logged_error = ( "[ERROR] ErrorType: Error message\rTraceback (most recent call last):\n" ) self.assertEqual(mock_stdout.getvalue(), expected_logged_error)
def test_log_error_framed_log_sink(self): with NamedTemporaryFile() as temp_file: with bootstrap.FramedTelemetryLogSink(temp_file.name) as log_sink: err_to_log = bootstrap.make_error("Error message", "ErrorType", None) bootstrap.log_error(err_to_log, log_sink) expected_logged_error = "[ERROR] ErrorType: Error message" with open(temp_file.name, "rb") as f: content = f.read() frame_type = int.from_bytes(content[:4], "big") self.assertEqual(frame_type, 0xA55A0001) length = int.from_bytes(content[4:8], "big") self.assertEqual(length, len(expected_logged_error.encode("utf8"))) actual_message = content[8:].decode() self.assertEqual(actual_message, expected_logged_error)