Commit 91d02d4c authored by Xianzhu Wang's avatar Xianzhu Wang Committed by Commit Bot

Let blink_perf always support --extra-browser-categories

Now support --extra-browser-categories even if the test doesn't specify
testRunner.tracingCategories.

Bug: 981920
Change-Id: I8d5f990b020e4879d334e435cc6adcffb2893a6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1693029
Auto-Submit: Xianzhu Wang <wangxianzhu@chromium.org>
Commit-Queue: Juan Antonio Navarro Pérez <perezju@chromium.org>
Reviewed-by: default avatarJuan Antonio Navarro Pérez <perezju@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676350}
parent e5f9eed1
......@@ -247,6 +247,7 @@ class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
with open(os.path.join(os.path.dirname(__file__),
'blink_perf.js'), 'r') as f:
self._blink_perf_js = f.read()
self._is_tracing = False
self._extra_chrome_categories = None
self._enable_systrace = None
......@@ -256,9 +257,7 @@ class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
def DidNavigateToPage(self, page, tab):
tab.WaitForJavaScriptCondition('testRunner.isWaitingForTelemetry')
tracing_categories = tab.EvaluateJavaScript('testRunner.tracingCategories')
if tracing_categories:
self._StartTracing(tab, tracing_categories)
self._StartTracingIfNeeded(tab)
def CustomizeBrowserOptions(self, options):
options.AppendExtraBrowserArgs([
......@@ -277,13 +276,20 @@ class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
if options.enable_systrace:
self._enable_systrace = True
def _StartTracing(self, tab, tracing_categories):
def _StartTracingIfNeeded(self, tab):
tracing_categories = tab.EvaluateJavaScript('testRunner.tracingCategories')
if (not tracing_categories and not self._extra_chrome_categories and
not self._enable_systrace):
return
self._is_tracing = True
config = tracing_config.TracingConfig()
config.enable_chrome_trace = True
config.chrome_trace_config.category_filter.AddFilterString(
'blink.console') # This is always required for js land trace event
config.chrome_trace_config.category_filter.AddFilterString(
tracing_categories)
if tracing_categories:
config.chrome_trace_config.category_filter.AddFilterString(
tracing_categories)
if self._extra_chrome_categories:
config.chrome_trace_config.category_filter.AddFilterString(
self._extra_chrome_categories)
......@@ -311,16 +317,17 @@ class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
def ValidateAndMeasurePage(self, page, tab, results):
trace_cpu_time_metrics = {}
if tab.EvaluateJavaScript('testRunner.tracingCategories'):
if self._is_tracing:
trace_data = tab.browser.platform.tracing_controller.StopTracing()
results.AddTraces(trace_data)
trace_events_to_measure = tab.EvaluateJavaScript(
'window.testRunner.traceEventsToMeasure')
model = model_module.TimelineModel(trace_data)
renderer_thread = model.GetFirstRendererThread(tab.id)
trace_cpu_time_metrics = _ComputeTraceEventsThreadTimeForBlinkPerf(
model, renderer_thread, trace_events_to_measure)
if trace_events_to_measure:
model = model_module.TimelineModel(trace_data)
renderer_thread = model.GetFirstRendererThread(tab.id)
trace_cpu_time_metrics = _ComputeTraceEventsThreadTimeForBlinkPerf(
model, renderer_thread, trace_events_to_measure)
log = tab.EvaluateJavaScript('document.getElementById("log").innerHTML')
......
......@@ -152,6 +152,16 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
'lifecycle-methods.html'),
options=self._options)
self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 0)
def testExtraChromeCategories(self):
self._options.extra_chrome_categories = 'cc,blink'
results = self.RunMeasurement(measurement=self._measurement,
ps=self._CreateStorySetForTestFile(
'lifecycle-methods.html'),
options=self._options)
self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 1)
# pylint: disable=protected-access
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment