Index: tracing/tracing/extras/symbolizer/symbolize_trace_end_to_end_test_slow.py |
diff --git a/tracing/tracing/extras/symbolizer/symbolize_trace_end_to_end_test_slow.py b/tracing/tracing/extras/symbolizer/symbolize_trace_end_to_end_test_slow.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..cb88cb946cac09963b5116db20c97525ce015c4a |
--- /dev/null |
+++ b/tracing/tracing/extras/symbolizer/symbolize_trace_end_to_end_test_slow.py |
@@ -0,0 +1,74 @@ |
+#!/usr/bin/env python |
+# Copyright 2017 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import os |
+import shutil |
+import subprocess |
+import sys |
+import tempfile |
+import unittest |
+ |
+from tracing.extras.symbolizer import symbolize_trace |
+ |
+_THIS_DIR_PATH = os.path.abspath(os.path.dirname(__file__)) |
+_TRACING_DIR = os.path.abspath( |
+ os.path.join(_THIS_DIR_PATH, '..', '..', '..')) |
+_PY_UTILS_PATH = os.path.abspath(os.path.join( |
+ _TRACING_DIR, |
+ '..', |
+ 'common', |
+ 'py_utils')) |
+sys.path.append(_PY_UTILS_PATH) |
+# pylint: disable=import-error |
+import py_utils.cloud_storage as cloud_storage |
+ |
+ |
+def _DownloadFromCloudStorage(path): |
+ print 'Downloading %s from gcs.' % (path) |
+ cloud_storage.GetIfChanged(path, cloud_storage.PARTNER_BUCKET) |
+ |
+ |
+def GetGzipCrc(path): |
+ args = 'gzip -v -l ' + path + ' | awk \'{print $2}\' | tail -n 1' |
+ p = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE) |
+ output, _ = p.communicate() |
+ return output |
+ |
+ |
+class SymbolizeTraceEndToEndTest(unittest.TestCase): |
+ 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) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |