| #!/usr/bin/env vpython |
| # Copyright 2018 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 sys |
| import tempfile |
| import json |
| import unittest |
| |
| from core import path_util |
| sys.path.insert(1, path_util.GetTelemetryDir()) |
| sys.path.insert( |
| 1, os.path.join(path_util.GetTelemetryDir(), 'third_party', 'mock')) |
| |
| from telemetry import decorators |
| |
| import mock |
| |
| import process_perf_results as ppr_module |
| |
| |
| class _FakeLogdogStream(object): |
| |
| def write(self, data): |
| del data # unused |
| |
| def close(self): |
| pass |
| |
| def get_viewer_url(self): |
| return 'http://foobar.not.exit' |
| |
| |
| class ProcessPerfResultsIntegrationTest(unittest.TestCase): |
| def setUp(self): |
| self.test_dir = tempfile.mkdtemp() |
| self.output_json = os.path.join(self.test_dir, 'output.json') |
| self.service_account_file = os.path.join( |
| self.test_dir, 'fake_service_account.json') |
| with open(self.service_account_file, 'w') as f: |
| json.dump([1,2,3,4], f) |
| self.task_output_dir = os.path.join( |
| os.path.dirname(__file__), 'testdata', 'task_output_dir') |
| |
| m1 = mock.patch( |
| 'process_perf_results.logdog_helper.text', |
| return_value = 'http://foo.link') |
| m1.start() |
| self.addCleanup(m1.stop) |
| |
| m2 = mock.patch( |
| 'process_perf_results.logdog_helper.open_text', |
| return_value=_FakeLogdogStream()) |
| m2.start() |
| self.addCleanup(m2.stop) |
| |
| m3 = mock.patch('core.results_dashboard.SendResults') |
| m3.start() |
| self.addCleanup(m3.stop) |
| |
| |
| def tearDown(self): |
| shutil.rmtree(self.test_dir) |
| |
| @decorators.Disabled('chromeos') # crbug.com/865800 |
| @decorators.Disabled('win') # crbug.com/860677, mock doesn't integrate well |
| # with multiprocessing on Windows. |
| def testIntegration(self): |
| build_properties = json.dumps({ |
| 'perf_dashboard_machine_group': 'test-builder', |
| 'buildername': 'test-builder', |
| 'buildnumber': 777, |
| 'got_v8_revision': 'beef1234', |
| 'got_revision_cp': 'refs/heads/master@{#1234}', |
| 'got_webrtc_revision': 'fee123', |
| 'git_revision': 'deadbeef', |
| 'buildbucket': r"""{"build": |
| {"bucket": "master.tryserver.chromium.perf", |
| "created_by": "user:foo", |
| "created_ts": "1535490272757820", |
| "id": "8936915467712010816", |
| "project": "chrome", |
| "lease_key": "461228535", |
| "tags": ["builder:android-go-perf", "buildset:patch/1194825/3", |
| "cq_experimental:False", |
| "master:master.tryserver.chromium.perf", |
| "user_agent:cq"]}}""" |
| }) |
| return_code, benchmark_upload_result_map = ppr_module.process_perf_results( |
| self.output_json, configuration_name='test-builder', |
| service_account_file = self.service_account_file, |
| build_properties=build_properties, |
| task_output_dir=self.task_output_dir, |
| smoke_test_mode=False) |
| |
| self.assertEquals(return_code, 1) |
| self.assertEquals(benchmark_upload_result_map, |
| { |
| "power.desktop.reference": True, |
| "blink_perf.image_decoder": True, |
| "octane.reference": True, |
| "power.desktop": True, |
| "speedometer-future": True, |
| "blink_perf.owp_storage": True, |
| "memory.desktop": True, |
| "wasm": True, |
| "dummy_benchmark.histogram_benchmark_1": True, |
| "dummy_benchmark.histogram_benchmark_1.reference": True, |
| "wasm.reference": True, |
| "speedometer": True, |
| "memory.long_running_idle_gmail_tbmv2": True, |
| "v8.runtime_stats.top_25": True, |
| "dummy_benchmark.noisy_benchmark_1": True, |
| "blink_perf.svg": True, |
| "v8.runtime_stats.top_25.reference": True, |
| "jetstream.reference": True, |
| "jetstream": True, |
| "speedometer2-future.reference": True, |
| "speedometer2-future": False, # Only this fails due to malformed data |
| "blink_perf.svg.reference": True, |
| "blink_perf.image_decoder.reference": True, |
| "power.idle_platform.reference": True, |
| "power.idle_platform": True, |
| "dummy_benchmark.noisy_benchmark_1.reference": True, |
| "speedometer-future.reference": True, |
| "memory.long_running_idle_gmail_tbmv2.reference": True, |
| "memory.desktop.reference": True, |
| "blink_perf.owp_storage.reference": True, |
| "octane": True, |
| "speedometer.reference": True |
| }) |
| |
| if __name__ == '__main__': |
| unittest.main() |