Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Unified Diff: tools/telemetry/telemetry/benchmark.py

Issue 789363002: TimelineBasedMeasurement(object) instead of TimelineBasedMeasurement(page_test.PageTest) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/measurements/measurement_smoke_test.py ('k') | tools/telemetry/telemetry/benchmark_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/benchmark.py
diff --git a/tools/telemetry/telemetry/benchmark.py b/tools/telemetry/telemetry/benchmark.py
index f19d5794283b2f594c66c1a52087c31a54f23b65..f32a1fd69477081d54ef0df3566d43c0c5173e81 100644
--- a/tools/telemetry/telemetry/benchmark.py
+++ b/tools/telemetry/telemetry/benchmark.py
@@ -21,6 +21,7 @@ from telemetry.page import test_expectations
from telemetry.results import results_options
from telemetry.util import cloud_storage
from telemetry.util import exception_formatter
+from telemetry.web_perf import timeline_based_measurement
Disabled = decorators.Disabled
Enabled = decorators.Enabled
@@ -48,9 +49,14 @@ class BenchmarkMetadata(object):
class Benchmark(command_line.Command):
"""Base class for a Telemetry benchmark.
- A test packages a PageTest and a PageSet together.
+ A benchmark packages a measurement and a PageSet together.
+ Benchmarks default to using TBM unless you override the value of
+ Benchmark.test, or override the CreatePageTest method.
+
+ New benchmarks should override CreateUserStorySet.
"""
options = {}
+ test = timeline_based_measurement.TimelineBasedMeasurement
def __init__(self, max_failures=None):
"""Creates a new Benchmark.
@@ -60,6 +66,14 @@ class Benchmark(command_line.Command):
from executing subsequent page runs. If None, we never bail.
"""
self._max_failures = max_failures
+ self._has_original_tbm_options = (
+ self.CreateTimelineBasedMeasurementOptions.__func__ ==
+ Benchmark.CreateTimelineBasedMeasurementOptions.__func__)
+ has_original_create_page_test = (
+ self.CreatePageTest.__func__ == Benchmark.CreatePageTest.__func__)
+ assert self._has_original_tbm_options or has_original_create_page_test, (
+ 'Cannot override both CreatePageTest and '
+ 'CreateTimelineBasedMeasurementOptions.')
@classmethod
def Name(cls):
@@ -207,19 +221,42 @@ class Benchmark(command_line.Command):
extracted_profile_dir_path)
options.browser_options.profile_dir = extracted_profile_dir_path
- def CreatePageTest(self, options): # pylint: disable=W0613
- """Get the PageTest for this Benchmark.
+ def CreateTimelineBasedMeasurementOptions(self):
+ """Return the TimelineBasedMeasurementOptions for this Benchmark.
- By default, it will create a page test from the test's test attribute.
- Override to generate a custom page test.
+ Override this method to configure a TimelineBasedMeasurement benchmark.
+ Otherwise, override CreatePageTest for PageTest tests. Do not override
+ both methods.
"""
- if not hasattr(self, 'test'):
- raise NotImplementedError('This test has no "test" attribute.')
- if not issubclass(self.test, page_test.PageTest):
- raise TypeError('"%s" is not a PageTest.' % self.test.__name__)
- return self.test()
+ return timeline_based_measurement.Options()
+
+ def CreatePageTest(self, options): # pylint: disable=unused-argument
+ """Return the PageTest for this Benchmark.
+
+ Override this method for PageTest tests.
+ Override, override CreateTimelineBasedMeasurementOptions to configure
+ TimelineBasedMeasurement tests. Do not override both methods.
- def CreatePageSet(self, options): # pylint: disable=W0613
+ Args:
+ options: a browser_options.BrowserFinderOptions instance
+ Returns:
+ |test()| if |test| is a PageTest class.
+ Otherwise, a TimelineBasedMeasurement instance.
+ """
+ is_page_test = issubclass(self.test, page_test.PageTest)
+ is_tbm = self.test == timeline_based_measurement.TimelineBasedMeasurement
+ if not is_page_test and not is_tbm:
+ raise TypeError('"%s" is not a PageTest or a TimelineBasedMeasurement.' %
+ self.test.__name__)
+ if is_page_test:
+ assert self._has_original_tbm_options, (
+ 'Cannot override CreateTimelineBasedMeasurementOptions '
+ 'with a PageTest.')
+ return self.test() # pylint: disable=no-value-for-parameter
+ return timeline_based_measurement.TimelineBasedMeasurement(
+ self.CreateTimelineBasedMeasurementOptions())
+
+ def CreatePageSet(self, options): # pylint: disable=unused-argument
"""Get the page set this test will run on.
By default, it will create a page set from the this test's page_set
« no previous file with comments | « tools/perf/measurements/measurement_smoke_test.py ('k') | tools/telemetry/telemetry/benchmark_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698