| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from blinkpy.common.host_mock import MockHost |
| from blinkpy.common.system.log_testing import LoggingTestCase |
| from blinkpy.w3c.wpt_uploader import WptReportUploader |
| |
| |
| class WptReportUploaderTest(LoggingTestCase): |
| def setUp(self): |
| super(WptReportUploaderTest, self).setUp() |
| self.host = MockHost() |
| |
| def test_fetch_latest_complete_build(self): |
| uploader = WptReportUploader(self.host) |
| builder = ("chromium", "ci", "test_builder") |
| |
| expected = {"id": "31415926535", |
| "builder": {"builder": "test_builder"}, |
| "status": "SUCCESS", |
| "number": "100"} |
| res = {"builds": [expected, |
| {"id": "89793238462", |
| "builder": {"builder": "test_builder"}, |
| "status": "SUCCESS", |
| "number": "99"}, |
| {"id": "64338327950", |
| "builder": {"builder": "test_builder"}, |
| "status": "SUCCESS", |
| "number": "98"}]} |
| self.host.results_fetcher.web.append_prpc_response(res) |
| build = uploader.fetch_latest_complete_build(*builder) |
| self.assertEqual(build, expected) |
| |
| res = {"builds": []} |
| self.host.results_fetcher.web.append_prpc_response(res) |
| build = uploader.fetch_latest_complete_build(*builder) |
| self.assertIsNone(build) |
| |
| def test_merge_reports(self): |
| uploader = WptReportUploader(self.host) |
| report0 = {"run_info": {"os": "linux", |
| "processor": "x86_64", |
| "product": "android_webview", |
| "revision": "1408b119ac563b427a3e00a5514eef697c8da268"}, |
| "time_start": 4248, |
| "results": [{"test": "foo1.html", |
| "status": "PASS", |
| "duration": 2100}, |
| {"test": "foo2.html", |
| "status": "FAIL", |
| "duration": 300}], |
| "time_end": 7293} |
| self.assertEqual(uploader.merge_reports([report0]), report0) |
| |
| report1 = {"run_info": {"os": "linux", |
| "processor": "x86_64", |
| "product": "android_webview", |
| "revision": "1408b119ac563b427a3e00a5514eef697c8da268"}, |
| "time_start": 4200, |
| "results": [{"test": "bar.html", |
| "status": "PASS", |
| "duration": 990}], |
| "time_end": 7200} |
| |
| report2 = {"run_info": {"os": "linux", |
| "processor": "x86_64", |
| "product": "android_webview", |
| "revision": "1408b119ac563b427a3e00a5514eef697c8da268"}, |
| "time_start": 5200, |
| "results": [{"test": "test.html", |
| "status": "PASS", |
| "duration": 990}], |
| "time_end": 7999} |
| |
| _expect = {"run_info": {"os": "linux", |
| "processor": "x86_64", |
| "product": "android_webview", |
| "revision": "1408b119ac563b427a3e00a5514eef697c8da268"}, |
| "time_start": 4200, |
| "results": [{"test": "foo1.html", |
| "status": "PASS", |
| "duration": 2100}, |
| {"test": "foo2.html", |
| "status": "FAIL", |
| "duration": 300}, |
| {"test": "bar.html", |
| "status": "PASS", |
| "duration": 990}, |
| {"test": "test.html", |
| "status": "PASS", |
| "duration": 990}], |
| "time_end": 7999} |
| self.assertEqual(uploader.merge_reports([report0, report1, report2]), |
| _expect) |