Source code
Revision control
Copy as Markdown
Other Tools
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
from base_python_support import BasePythonSupport
class MediaSeek(BasePythonSupport):
"""Summarizes the media seek-latency benchmark.
The browsertime test script measures seeks in two decoder states and reports
one replicate per seek as custom_data
{"seekedWarm": [...], "seekedCold": [...]}. We surface each as a subtest that
carries all of its replicates so the perf tooling performs the aggregation.
"""
MEASUREMENTS = {
"seekedWarm": "seekedWarmLatency",
"seekedCold": "seekedColdLatency",
}
def handle_result(self, bt_result, raw_result, last_result=False, **kwargs):
for extras in raw_result.get("extras", []):
data = extras.get("custom_data", {})
for key, measurement in self.MEASUREMENTS.items():
values = data.get(key)
if values:
bt_result["measurements"].setdefault(measurement, []).extend(values)
def summarize_test(self, test, suite, **kwargs):
suite["type"] = "pageload"
if suite["subtests"] == {}:
suite["subtests"] = []
for measurement_name, replicates in test["measurements"].items():
if not replicates:
continue
suite["subtests"].append(
self._build_standard_subtest(test, replicates, measurement_name)
)
suite["subtests"].sort(key=lambda subtest: subtest["name"])