blob: 576201a1ab8841e6e5e0c71ee9b663c8ab7ba6e8 [file] [log] [blame]
# Copyright 2021 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.
from blinkpy.common.host_mock import MockHost
from blinkpy.common.net.rpc_mock import MockRpc
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_wpt_report_urls(self):
uploader = WptReportUploader(self.host)
uploader._rpc = MockRpc(self.host)
res = {'artifacts': [{'name': 'report1',
'artifactId': 'wpt_reports_dada.json',
'fetchUrl': 'https://a.b.c/report1.json',
'sizeBytes': '8472164'},
{'name': 'report2',
'artifactId': 'wpt_reports_dada.json',
'fetchUrl': 'https://a.b.c/report2.json',
'sizeBytes': '8455564'},
{'name': 'other',
'artifactId': 'other_dada.json',
'fetchUrl': 'https://a.b.c/other.json',
'sizeBytes': '9845'}]}
uploader._rpc.set_response(res)
self.assertEqual(uploader.fetch_wpt_report_urls("31415926535"),
['https://a.b.c/report1.json',
'https://a.b.c/report2.json'])
res = {'artifacts': [{'name': 'other',
'artifactId': 'other_dada.json',
'fetchUrl': 'https://a.b.c/other.json',
'sizeBytes': '9845'}]}
uploader._rpc.set_response(res)
self.assertEqual(uploader.fetch_wpt_report_urls("31415926535"), [])
res = {}
uploader._rpc.set_response(res)
self.assertEqual(uploader.fetch_wpt_report_urls("31415926535"), [])
def test_fetch_latest_complete_build(self):
uploader = WptReportUploader(self.host)
uploader._rpc = MockRpc(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"}]}
uploader._rpc.set_response(res)
build = uploader.fetch_latest_complete_build(*builder)
self.assertEqual(build, expected)
res = {"builds": []}
uploader._rpc.set_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)