def test_upload_without_component_revisions(self): """Log should contain message on empty component revisions.""" self.mock.get_component_range_list.return_value = [] mock_gsutil = mock.MagicMock() self.mock.write_data.return_value = mock_gsutil self.fs.create_file( self.testcase_path + '.stats2', contents='{"stat": 1000, "timestamp": 1472846341.017923, "kind": ' '"TestcaseRun", "job": "job", "fuzzer": "fuzzer", ' '"build_revision": 123}\n') crash_result = CrashResult(return_code=1, crash_time=5, output='fake output') log = testcase_manager.prepare_log_for_upload( crash_result.get_stacktrace(), crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) testcase_manager.upload_log(log, log_time) # Date and time below is derived from 1472846341 timestamp value. self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Not available.\n\n' b'Return code: 1\n\nfake output', 'gs://fake-gcs-logs/fuzzer/job/2016-09-02/19:59:01:017923.log')
def test_upload_with_hostname_and_serial(self): """Log name should be generated using current (mocked) timestamp value.""" mock_gsutil = mock.MagicMock() self.mock.write_data.return_value = mock_gsutil environment.set_value('BOT_NAME', 'hostname.company.com') environment.set_value('OS_OVERRIDE', 'ANDROID_KERNEL') environment.set_value('ANDROID_SERIAL', '123456789') self.fs.create_file( self.testcase_path + '.stats2', contents='{"stat": 1000, "kind": "TestcaseRun", "job": "job", ' '"fuzzer": "fuzzer", "build_revision": 123}\n') crash_result = CrashResult(return_code=None, crash_time=None, output=None) log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) testcase_manager.upload_log(log, log_time) self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Component: REVISION\nComponent2: REVISION2\n\n' b'Bot name: hostname.company.com\n' b'Device serial: 123456789\n' b'Return code: None\n\nNo output!', 'gs://fake-gcs-logs/fuzzer/job/2017-05-15/16:10:28:374119.log')
def test_upload_with_timestamp_from_stats(self): """Log name should be generated using timestamp value from the stats.""" mock_gsutil = mock.MagicMock() self.mock.write_data.return_value = mock_gsutil self.fs.create_file( self.testcase_path + '.stats2', contents='{"stat": 1000, "timestamp": 1472846341.017923, "kind": ' '"TestcaseRun", "job": "job", "fuzzer": "fuzzer", ' '"build_revision": 123}\n') environment.set_value('BOT_NAME', 'hostname.company.com') crash_result = CrashResult( return_code=1, crash_time=5, output='fake output') log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) testcase_manager.upload_log(log, log_time) # Date and time below is derived from 1472846341 timestamp value. self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Component: REVISION\nComponent2: REVISION2\n\n' b'Bot name: hostname.company.com\n' b'Return code: 1\n\nfake output', 'gs://fake-gcs-logs/fuzzer/job/2016-09-02/19:59:01:017923.log')
def test_upload_without_timestamp(self): """Log name should be generated using current (mocked) timestamp value.""" mock_gsutil = mock.MagicMock() self.mock.write_data.return_value = mock_gsutil self.fs.create_file( self.testcase_path + '.stats2', contents='{"stat": 1000, "kind": "TestcaseRun", "job": "job", ' '"fuzzer": "fuzzer", "build_revision": 123}\n') crash_result = CrashResult(return_code=None, crash_time=None, output=None) log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) testcase_manager.upload_log(log, log_time) self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Component: REVISION\nComponent2: REVISION2\n\n' b'Return code: None\n\nNo output!', 'gs://fake-gcs-logs/fuzzer/job/2017-05-15/16:10:28:374119.log')