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
Example #5
0
    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')
Example #8
0
 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'
Example #11
0
 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')
Example #12
0
 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')
Example #13
0
 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'
Example #14
0
 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')
Example #15
0
    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')
Example #16
0
 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')
Example #17
0
 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')
        ])
Example #20
0
    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')
        ])
Example #21
0
 def setUp(self):
     helpers.patch(self, ['clusterfuzz.commands.reproduce.execute'])
Example #22
0
 def setUp(self):
     helpers.patch(self, ['__builtin__.raw_input'])
Example #23
0
 def setUp(self):
     helpers.patch(self, ['__builtin__.raw_input'])
     self.mock.raw_input.side_effect = [
         'wrong', 'still wrong', 'very wrong', 'correct'
     ]
Example #24
0
 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'
     ])
Example #26
0
 def setUp(self):
     helpers.patch(self, ['webbrowser.open', 'clusterfuzz.common.ask'])
     self.mock.ask.return_value = '12345'
Example #27
0
 def setUp(self):
     helpers.patch(self, ['clusterfuzz.common.execute'])
Example #28
0
 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'])