Пример #1
0
    def _RunSymbolizationOnTrace(self, pre_symbolization, expectations,
                                 extra_options):
        trace_presymbolization_path = os.path.join(_THIS_DIR_PATH, 'data',
                                                   pre_symbolization)
        _DownloadFromCloudStorage(trace_presymbolization_path)
        self.assertTrue(os.path.exists(trace_presymbolization_path))

        temporary_fd, temporary_trace = tempfile.mkstemp(suffix='.json.gz')

        symbolization_options = [
            '--only-symbolize-chrome-symbols', '--no-backup',
            '--cloud-storage-bucket', cloud_storage.PARTNER_BUCKET,
            temporary_trace
        ]

        symbolization_options.extend(extra_options)

        # On windows, a pre-built version of addr2line-pdb is provided.
        if sys.platform == 'win32':
            addr2line_path = os.path.join(_THIS_DIR_PATH, 'data',
                                          'addr2line-pdb.exe')
            _DownloadFromCloudStorage(addr2line_path)
            self.assertTrue(os.path.exists(addr2line_path))
            symbolization_options += ['--addr2line-executable', addr2line_path]

        # Execute symbolization and compare results with the expected trace.
        try:
            shutil.copy(trace_presymbolization_path, temporary_trace)
            self.assertTrue(symbolize_trace.main(symbolization_options))
            self._ValidateTrace(temporary_trace, expectations)
        finally:
            os.close(temporary_fd)
            if os.path.exists(temporary_trace):
                os.remove(temporary_trace)
    def testMacv1(self):
        if sys.platform != 'darwin':
            return

        # The corresponding macOS Chrome symbols must be uploaded to
        # "gs://chrome-partner-telemetry/desktop-symbolizer-test/61.0.3135.4/mac64/"
        # "Google Chrome.dSYM.tar.bz2"
        # since the waterfall bots do not have access to the chrome-unsigned bucket.
        trace_presymbolization_path = os.path.join(
            _THIS_DIR_PATH, 'data', 'mac_trace_v1_presymbolization.json.gz')
        _DownloadFromCloudStorage(trace_presymbolization_path)

        trace_postsymbolization_path = os.path.join(
            _THIS_DIR_PATH, 'data', 'mac_trace_v1_postsymbolization.json.gz')
        _DownloadFromCloudStorage(trace_postsymbolization_path)

        _, temporary_trace = tempfile.mkstemp(suffix='.json.gz')
        try:
            shutil.copy(trace_presymbolization_path, temporary_trace)
            self.assertTrue(
                symbolize_trace.main([
                    '--only-symbolize-chrome-symbols', '--no-backup',
                    '--cloud-storage-bucket', cloud_storage.PARTNER_BUCKET,
                    temporary_trace
                ]))
            temporary_trace_crc = GetGzipCrc(temporary_trace)
            expected_crc = GetGzipCrc(trace_postsymbolization_path)
        finally:
            if os.path.exists(temporary_trace):
                os.remove(temporary_trace)
        self.assertEquals(temporary_trace_crc, expected_crc)