blob: 554a4ea9f038be1473cfbb798c076e8ebf086dec [file] [log] [blame]
# Copyright 2022 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 crossbench as cb
import crossbench.benchmarks as bm
from . import helper
class Speedometer2Test(helper.PressBaseBenchmarkTestCase):
@property
def benchmark_cls(self):
return bm.speedometer.Speedometer20Benchmark
def test_story_filtering(self):
stories = bm.speedometer.Speedometer20Story.from_names([])
self.assertEqual(len(stories), 1)
stories = bm.speedometer.Speedometer20Story.from_names([], separate=True)
self.assertEqual(
len(stories), len(bm.speedometer.Speedometer20Story.SUBSTORIES))
stories_b = bm.speedometer.Speedometer20Story.from_names(
".*", separate=True)
self.assertListEqual(
[story.name for story in stories],
[story.name for story in stories_b],
)
stories_c = bm.speedometer.Speedometer20Story.from_names([".*"],
separate=True)
self.assertListEqual(
[story.name for story in stories],
[story.name for story in stories_c],
)
def test_run(self):
repetitions = 3
iterations = 2
stories = bm.speedometer.Speedometer20Story.from_names(
['VanillaJS-TodoMVC'])
example_story_data = {
"tests": {
"Adding100Items": {
"tests": {
"Sync": 74.6000000089407,
"Async": 6.299999997019768
},
"total": 80.90000000596046
},
"CompletingAllItems": {
"tests": {
"Sync": 22.600000008940697,
"Async": 5.899999991059303
},
"total": 28.5
},
"DeletingItems": {
"tests": {
"Sync": 11.800000011920929,
"Async": 0.19999998807907104
},
"total": 12
}
},
"total": 121.40000000596046
}
speedometer_probe_results = [{
"tests": {story.name: example_story_data for story in stories},
"total": 1000,
"mean": 2000,
"geomean": 3000,
"score": 10
} for i in range(iterations)]
for browser in self.browsers:
browser.js_side_effect = [
True, # Page is ready
None, # filter benchmarks
None, # Start running benchmark
True, # Wait until done
speedometer_probe_results,
]
benchmark = self.benchmark_cls(stories)
self.assertTrue(len(benchmark.describe()) > 0)
runner = cb.runner.Runner(
self.out_dir,
self.browsers,
benchmark,
use_checklist=False,
platform=self.platform,
repetitions=repetitions)
runner.run()
for browser in self.browsers:
self.assertEqual(len(browser.url_list), repetitions)
self.assertIn(bm.speedometer.Speedometer20Probe.JS, browser.js_list)