def setUp(self): self.chrome_src = '/usr/local/google/home/user/repos/chromium/src' self.mock_os_environment({'V8_SRC': '/v8/src'}) helpers.patch(self, [ 'clusterfuzz.commands.reproduce.get_testcase_info', 'clusterfuzz.testcase.Testcase', 'clusterfuzz.commands.reproduce.ensure_goma', 'clusterfuzz.binary_providers.V8DownloadedBinary', 'clusterfuzz.binary_providers.V8Builder', 'clusterfuzz.commands.reproduce.reproduce_crash' ]) self.response = { 'id': 1234, 'crash_type': 'Bad Crash', 'crash_state': ['halted'], 'crash_revision': '123456', 'metadata': { 'build_url': 'chrome_build_url' }, 'crash_stacktrace': { 'lines': ['Line 1', 'Line 2'] } } self.testcase = mock.Mock(id=1234, build_url='chrome_build_url', revision=123456) self.mock.get_testcase_info.return_value = self.response self.mock.Testcase.return_value = self.testcase self.mock.ensure_goma.return_value = '/goma/dir'
def setUp(self): helpers.patch(self, [ 'clusterfuzz.common.get_stored_auth_header', 'clusterfuzz.common.store_auth_header', 'clusterfuzz.commands.reproduce.get_verification_header', 'urlfetch.fetch' ])
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.V8DownloadedBinary.download_build_data' ]) self.setup_fake_filesystem() self.build_url = 'https://storage.cloud.google.com/abc.zip'
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.V8Builder.setup_gn_args', 'multiprocessing.cpu_count', 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.sha_from_revision' ]) self.mock.cpu_count.return_value = 12
def setUp(self): helpers.patch(self, ['clusterfuzz.common.execute']) self.setup_fake_filesystem() self.build_url = 'https://storage.cloud.google.com/abc.zip' self.provider = binary_providers.BinaryProvider( 1234, self.build_url, 'd8')
def setUp(self): helpers.patch(self, ['os.dup', 'os.open', 'os.close', 'os.dup2']) def dup(number): if number == 1: return 'out' elif number == 2: return 'err' self.mock.dup.side_effect = dup
def setUp(self): self.setup_fake_filesystem() helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.sha_from_revision' ]) self.testcase_dir = os.path.expanduser(os.path.join('~', 'test_dir')) self.builder = binary_providers.V8Builder(1234, '', '', False, '/goma/dir', '/chrome/source/dir')
def setUp(self): self.setup_fake_filesystem() helpers.patch(self, [ 'clusterfuzz.common.get_stored_auth_header', 'clusterfuzz.common.execute' ]) self.mock.get_stored_auth_header.return_value = 'Bearer 1a2s3d4f' self.testcase_dir = os.path.expanduser( os.path.join('~', '.clusterfuzz', 'testcases', '12345_testcase')) self.test = build_base_testcase()
def setUp(self): helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.common.check_confirm', 'clusterfuzz.binary_providers.sha_from_revision' ]) self.chrome_source = '/usr/local/google/home/user/repos/chromium/src' self.command = ('git fetch && git checkout 1a2s3d4f' ' in %s' % self.chrome_source) self.builder = binary_providers.V8Builder(1234, '', 12345, False, '', self.chrome_source) self.builder.git_sha = '1a2s3d4f'
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.V8Builder.download_build_data', 'clusterfuzz.binary_providers.sha_from_revision', 'clusterfuzz.binary_providers.V8Builder.checkout_source_by_sha', 'clusterfuzz.binary_providers.V8Builder.build_target', 'clusterfuzz.common.ask' ]) self.setup_fake_filesystem() self.build_url = 'https://storage.cloud.google.com/abc.zip'
def setUp(self): self.setup_fake_filesystem() helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.sha_from_revision' ]) self.testcase_dir = os.path.expanduser(os.path.join('~', 'test_dir')) testcase = mock.Mock(id=1234, build_url='', revision=54321) self.mock_os_environment({'V8_SRC': '/chrome/source/dir'}) binary_definition = mock.Mock(source_var='V8_SRC') self.builder = binary_providers.V8Builder(testcase, binary_definition, False, '/goma/dir')
def setUp(self): helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.sha_from_revision' ]) self.mock_os_environment({'V8_SRC': '/source/dir'}) self.sha = '1a2s3d4f5g6h' self.mock.sha_from_revision.return_value = self.sha testcase = mock.Mock(id=1234, build_url='', revision=54321) binary_definition = mock.Mock(source_var='V8_SRC') self.builder = binary_providers.V8Builder(testcase, binary_definition, False, '/goma/dir')
def setUp(self): helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.common.check_confirm', 'clusterfuzz.binary_providers.sha_from_revision' ]) self.chrome_source = '/usr/local/google/home/user/repos/chromium/src' self.command = ('git fetch && git checkout 1a2s3d4f' ' in %s' % self.chrome_source) testcase = mock.Mock(id=12345, build_url='', revision=4567) self.mock_os_environment({'V8_SRC': self.chrome_source}) binary_definition = mock.Mock(source_var='V8_SRC', binary_name='binary') self.builder = binary_providers.ChromiumBuilder( testcase, binary_definition, False, '/goma/dir') self.builder.git_sha = '1a2s3d4f'
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.PdfiumBuilder.setup_gn_args', 'clusterfuzz.common.execute', 'multiprocessing.cpu_count', 'clusterfuzz.binary_providers.sha_from_revision', 'clusterfuzz.binary_providers.get_pdfium_sha' ]) self.mock.cpu_count.return_value = 12 self.mock.sha_from_revision.return_value = 'chrome_sha' testcase = mock.Mock(id=1234, build_url='', revision=54321) self.mock_os_environment({'V8_SRC': '/chrome/source/dir'}) binary_definition = mock.Mock(source_var='V8_SRC') self.builder = binary_providers.PdfiumBuilder(testcase, binary_definition, False, '/goma/dir')
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.V8Builder.download_build_data', 'clusterfuzz.binary_providers.sha_from_revision', 'clusterfuzz.binary_providers.V8Builder.checkout_source_by_sha', 'clusterfuzz.binary_providers.V8Builder.build_target', 'clusterfuzz.common.ask', 'clusterfuzz.binary_providers.V8Builder.get_current_sha', 'clusterfuzz.common.execute' ]) self.setup_fake_filesystem() self.build_url = 'https://storage.cloud.google.com/abc.zip' self.mock.get_current_sha.return_value = '1a2s3d4f5g6h' self.mock.execute.return_value = [0, ''] self.chrome_source = os.path.join('chrome', 'src', 'dir')
def setUp(self): self.setup_fake_filesystem() helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.sha_from_revision', 'clusterfuzz.binary_providers.get_pdfium_sha' ]) self.sha = '1a2s3d4f5g' self.mock.sha_from_revision.return_value = 'chrome_sha' self.mock.get_pdfium_sha = self.sha testcase = mock.Mock(id=1234, build_url='', revision=54321) self.mock_os_environment({'V8_SRC': '/chrome/source/dir'}) binary_definition = mock.Mock(source_var='V8_SRC') self.builder = binary_providers.PdfiumBuilder(testcase, binary_definition, False, '/goma/dir') self.testcase_dir = os.path.expanduser(os.path.join('~', 'test_dir')) self.mock.execute.return_value = (0, '12345')
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.sha_from_revision', 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.ChromiumBuilder.setup_gn_args', 'clusterfuzz.binary_providers.ChromiumBuilder.get_build_directory', 'multiprocessing.cpu_count' ]) self.mock.cpu_count.return_value = 12 self.mock.sha_from_revision.return_value = '1a2s3d4f5g' self.mock.get_build_directory.return_value = '/chromium/build/dir' testcase = mock.Mock(id=12345, build_url='', revision=4567) self.mock_os_environment({'V8_SRC': '/chrome/src'}) binary_definition = mock.Mock(source_var='V8_SRC', binary_name='binary') self.builder = binary_providers.ChromiumBuilder( testcase, binary_definition, False, '/goma/dir') self.builder.build_directory = '/chrome/src/out/clusterfuzz_builds'
def test_download_no_defined_binary(self): """Test what happens when no binary name is defined.""" helpers.patch(self, ['clusterfuzz.commands.reproduce.get_binary_definition']) self.mock.get_binary_definition.return_value = mock.Mock( binary_name=None, sanitizer='ASAN') self.mock.DownloadedBinary.return_value = mock.Mock( symbolizer_path=('/path/to/symbolizer')) self.mock.DownloadedBinary.return_value.get_binary_path.return_value = ( '/path/to/binary') stacktrace = [{ 'content': 'incorrect' }, { 'content': '[Environment] A = b' }, { 'content': ('Running command: path/to/binary --args --arg2 ' '/path/to/testcase') }] testcase = mock.Mock(id=1234, build_url='chrome_build_url', revision=123456, job_type='linux_asan_d8', stacktrace_lines=stacktrace, reproducible=True) self.mock.Testcase.return_value = testcase reproduce.execute('1234', False, 'download') self.assert_exact_calls(self.mock.get_testcase_info, [mock.call('1234')]) self.assert_exact_calls(self.mock.ensure_goma, [mock.call()]) self.assert_exact_calls(self.mock.Testcase, [mock.call(self.response)]) self.assert_exact_calls( self.mock.DownloadedBinary.return_value.get_binary_path, [mock.call()]) self.assert_exact_calls( self.mock.DownloadedBinary, [mock.call(1234, 'chrome_build_url', 'binary')]) self.assert_exact_calls(self.mock.reproduce_crash, [ mock.call('/path/to/binary', '/path/to/symbolizer', testcase, 'ASAN') ])
def test_grab_data_standalone(self): """Ensures all method calls are made correctly when building locally.""" helpers.patch(self, ['clusterfuzz.commands.reproduce.get_binary_definition']) self.mock.get_binary_definition.return_value = mock.Mock( kwargs={}, source_var='V8_SRC', sanitizer='ASAN') (self.mock.get_binary_definition.return_value.builder.return_value. get_binary_path.return_value) = '/path/to/binary' (self.mock.get_binary_definition.return_value.builder.return_value. symbolizer_path) = '/path/to/symbolizer' testcase = mock.Mock(id=1234, build_url='chrome_build_url', revision=123456, job_type='linux_asan_d8', reproducible=True) self.mock.Testcase.return_value = testcase reproduce.execute('1234', False, 'standalone') self.assert_exact_calls(self.mock.get_testcase_info, [mock.call('1234')]) self.assert_exact_calls(self.mock.ensure_goma, [mock.call()]) self.assert_exact_calls(self.mock.Testcase, [mock.call(self.response)]) self.assert_exact_calls((self.mock.get_binary_definition.return_value. builder.return_value.get_binary_path), [mock.call()]) self.assert_exact_calls( self.mock.get_binary_definition.return_value.builder, [ mock.call(testcase, self.mock.get_binary_definition.return_value, False, '/goma/dir') ]) self.assert_exact_calls(self.mock.reproduce_crash, [ mock.call('/path/to/binary', '/path/to/symbolizer', testcase, 'ASAN') ])
def test_prebuild_steps(self): """Test the prebuild_steps method.""" helpers.patch(self, [ 'clusterfuzz.common.execute', 'clusterfuzz.binary_providers.sha_from_revision' ]) testcase = mock.Mock(id=12345, build_url='', revision=4567) self.mock_os_environment({'V8_SRC': '/chrome/src'}) binary_definition = mock.Mock(source_var='V8_SRC', binary_name='binary') builder = binary_providers.LibfuzzerMsanBuilder( testcase, binary_definition, False, '/goma/dir') builder.pre_build_steps() self.assert_exact_calls(self.mock.execute, [ mock.call( ("GYP_DEFINES='clang=1 component=static_library " "gomadir=/goma/dir msan=1 msan_track" "_origins=2 proprietary_codecs=1 target_arch=x64 use_goma=1" " use_prebuilt_instrumented_libraries=1' gclient runhooks"), '/chrome/src') ])
def setUp(self): helpers.patch(self, ['clusterfuzz.commands.reproduce.execute'])
def setUp(self): helpers.patch(self, ['__builtin__.raw_input'])
def setUp(self): helpers.patch(self, ['__builtin__.raw_input']) self.mock.raw_input.side_effect = [ 'wrong', 'still wrong', 'very wrong', 'correct' ]
def setUp(self): helpers.patch(self, ['subprocess.Popen']) self.lines = 'Line 1\nLine 2\nLine 3'
def setUp(self): helpers.patch(self, [ 'clusterfuzz.binary_providers.V8DownloadedBinary.get_build_directory' ])
def setUp(self): helpers.patch(self, ['webbrowser.open', 'clusterfuzz.common.ask']) self.mock.ask.return_value = '12345'
def setUp(self): helpers.patch(self, ['clusterfuzz.common.execute'])
def setUp(self): self.setup_fake_filesystem() self.mock_os_environment( {'GOMA_DIR': os.path.expanduser(os.path.join('~', 'goma'))}) helpers.patch(self, ['clusterfuzz.common.execute'])
def setUp(self): helpers.patch(self, ['urlfetch.fetch'])
def setUp(self): helpers.patch(self, ['os.path.dirname'])