Chromium Code Reviews| Index: content/test/gpu/gpu_tests/trace_test.py |
| diff --git a/content/test/gpu/gpu_tests/trace_test.py b/content/test/gpu/gpu_tests/trace_test.py |
| index fb4de0fbffd28d7044d6355252dc056d0a09f82c..df9e5b7a147d8ccdbf111c4b99e85a618267b069 100644 |
| --- a/content/test/gpu/gpu_tests/trace_test.py |
| +++ b/content/test/gpu/gpu_tests/trace_test.py |
| @@ -8,11 +8,12 @@ from telemetry import benchmark |
| from telemetry.page import page_test |
| from telemetry.core.platform import tracing_category_filter |
| from telemetry.core.platform import tracing_options |
| -from telemetry.timeline import model |
| +from telemetry.timeline import model as model_module |
| TOPLEVEL_GL_CATEGORY = 'gpu_toplevel' |
| -TOPLEVEL_CATEGORIES = ['disabled-by-default-gpu.device', |
| - 'disabled-by-default-gpu.service'] |
| +TOPLEVEL_SERVICE_CATEGORY = 'disabled-by-default-gpu.service' |
| +TOPLEVEL_DEVICE_CATEGORY = 'disabled-by-default-gpu.device' |
| +TOPLEVEL_CATEGORIES = [TOPLEVEL_SERVICE_CATEGORY, TOPLEVEL_DEVICE_CATEGORY] |
| test_harness_script = r""" |
| var domAutomationController = {}; |
| @@ -28,19 +29,24 @@ test_harness_script = r""" |
| window.domAutomationController = domAutomationController; |
| """ |
| -class _TraceValidator(page_test.PageTest): |
| + |
| +class _TraceValidatorBase(page_test.PageTest): |
| + def GetCategoryName(self): |
| + raise NotImplementedError("GetCategoryName() Not implemented!") |
| + |
| def ValidateAndMeasurePage(self, page, tab, results): |
| timeline_data = tab.browser.platform.tracing_controller.Stop() |
| - timeline_model = model.TimelineModel(timeline_data) |
| - |
| - categories_set = set(TOPLEVEL_CATEGORIES) |
| - for event in timeline_model.IterAllEvents(): |
| - if event.args.get('gl_category', None) == TOPLEVEL_GL_CATEGORY: |
| - categories_set.discard(event.category) |
| - if not categories_set: |
| + timeline_model = model_module.TimelineModel(timeline_data) |
| + |
| + category_name = self.GetCategoryName() |
| + event_iter = timeline_model.IterAllEvents( |
| + event_type_predicate=model_module.IsSliceOrAsyncSlice) |
| + for event in event_iter: |
| + if (event.args.get('gl_category', None) == TOPLEVEL_GL_CATEGORY and |
| + event.category == category_name): |
| break |
| else: |
| - raise page_test.Failure(self._FormatException(sorted(categories_set))) |
| + raise page_test.Failure(self._FormatException(category_name)) |
| def CustomizeBrowserOptions(self, options): |
| options.AppendExtraBrowserArgs('--enable-logging') |
| @@ -52,23 +58,49 @@ class _TraceValidator(page_test.PageTest): |
| options.enable_chrome_trace = True |
| tab.browser.platform.tracing_controller.Start(options, cat_filter, 60) |
| - def _FormatException(self, categories): |
| - return 'Trace markers for GPU categories were not found: %s' % categories |
| + def _FormatException(self, category): |
| + return 'Trace markers for GPU category was not found: %s' % category |
| -class TraceTest(benchmark.Benchmark): |
| - """Tests GPU traces""" |
| - test = _TraceValidator |
| - @classmethod |
| - def Name(cls): |
| - return 'trace_test' |
| +class _TraceValidator(_TraceValidatorBase): |
|
vmiura
2015/02/02 23:42:15
nit: "Service"TraceValidator, and similar in the o
David Yen
2015/02/02 23:52:46
I actually had this name originally, but I think a
|
| + def GetCategoryName(self): |
| + return TOPLEVEL_SERVICE_CATEGORY |
| + |
| + |
| +class _DeviceTraceValidator(_TraceValidatorBase): |
| + def GetCategoryName(self): |
| + return TOPLEVEL_DEVICE_CATEGORY |
| - def CreateExpectations(self): |
| - return trace_test_expectations.TraceTestExpectations() |
| +class _TraceTestBase(benchmark.Benchmark): |
| + """Base class for the trace tests.""" |
| def CreatePageSet(self, options): |
| # Utilize pixel tests page set as a set of simple pages to load. |
| page_set = page_sets.PixelTestsPageSet() |
| for page in page_set.pages: |
| page.script_to_evaluate_on_commit = test_harness_script |
| return page_set |
| + |
| + |
| +class TraceTest(_TraceTestBase): |
| + """Tests GPU traces are plumbed through properly.""" |
| + test = _TraceValidator |
| + |
| + @classmethod |
| + def Name(cls): |
| + return 'trace_test' |
| + |
| + def CreateExpectations(self): |
| + return trace_test_expectations.TraceTestExpectations() |
| + |
| + |
| +class DeviceTraceTest(_TraceTestBase): |
| + """Tests GPU Device traces show up on devices that support it.""" |
| + test = _DeviceTraceValidator |
| + |
| + @classmethod |
| + def Name(cls): |
| + return 'device_trace_test' |
| + |
| + def CreateExpectations(self): |
| + return trace_test_expectations.DeviceTraceTestExpectations() |