示例#1
0
def upload_log(log, log_time):
    """Upload the output into corresponding GCS logs bucket."""
    fuzz_logs_bucket = environment.get_value('FUZZ_LOGS_BUCKET')
    if not fuzz_logs_bucket:
        return

    fuzzer_logs.upload_to_logs(fuzz_logs_bucket, log, time=log_time)
示例#2
0
def upload_testcase_output(crash_result, testcase_path):
    """Upload the output into corresponding GCS logs bucket."""
    fuzz_logs_bucket = environment.get_value('FUZZ_LOGS_BUCKET')
    if not fuzz_logs_bucket:
        return

    # Add revision information to the logs.
    app_revision = environment.get_value('APP_REVISION')
    job_name = environment.get_value('JOB_NAME')
    components = revisions.get_component_list(app_revision, job_name)
    component_revisions = (revisions.format_revision_list(components,
                                                          use_html=False)
                           or 'Not available.\n')

    revisions_header = (
        'Component revisions (build r{app_revision}):\n{component_revisions}\n'
        .format(app_revision=app_revision,
                component_revisions=component_revisions))
    return_code_header = 'Return code: %s\n\n' % crash_result.return_code
    symbolized_output = crash_result.get_stacktrace()

    # To provide consistency between stats and logs, we use timestamp taken
    # when the log has been parsed.
    log_time = _get_testcase_time(testcase_path)

    fuzzer_logs.upload_to_logs(fuzz_logs_bucket,
                               revisions_header + return_code_header +
                               symbolized_output,
                               time=log_time)
示例#3
0
 def test_upload_to_logs(self):
     """Test a simple call to upload_to_logs."""
     mock_gsutil = mock.MagicMock()
     self.mock.write_data.return_value = mock_gsutil
     fuzzer_logs.upload_to_logs('fake-gcs-bucket', 'fake content')
     self.mock.write_data.assert_called_once_with(
         'fake content',
         'gs://fake-gcs-bucket/fuzzer_1/fake_job/2017-03-21/11:15:13:666666.log'
     )
示例#4
0
def upload_testcase(testcase_path, log_time):
    """Uploads testcase so that a log file can be matched with it folder."""
    fuzz_logs_bucket = environment.get_value('FUZZ_LOGS_BUCKET')
    if not fuzz_logs_bucket:
        return

    with open(testcase_path, 'rb') as file_handle:
        testcase_contents = file_handle.read()

    fuzzer_logs.upload_to_logs(fuzz_logs_bucket,
                               testcase_contents,
                               time=log_time,
                               file_extension='.testcase')
示例#5
0
 def test_upload_to_logs_with_all_arguments(self):
     """Test a call to upload_to_logs with all arguments being passed."""
     mock_gsutil = mock.MagicMock()
     self.mock.write_data.return_value = mock_gsutil
     fuzzer_logs.upload_to_logs('gcs-bucket',
                                'fake content',
                                time=self.fake_log_time,
                                fuzzer_name='fuzzer_2',
                                job_type='another_job')
     self.mock.write_data.assert_called_once_with(
         'fake content',
         'gs://gcs-bucket/fuzzer_2/another_job/2017-04-22/12:16:14:777777.log'
     )