Index: tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py |
diff --git a/tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py b/tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py |
index c4eeae9e8f73a5a4ec7b961becb4f119638ac8cd..4c0267e91b5bd0ab082f4a624bb5ebb0493f47e4 100644 |
--- a/tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py |
+++ b/tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py |
@@ -12,11 +12,16 @@ from telemetry.core.timeline import async_slice |
from telemetry.page import page_measurement_results |
from telemetry.page import page_measurement_unittest_base |
from telemetry.page import page_set |
+from telemetry.page import page as page_module |
+# pylint: disable=W0401,W0614 |
+from telemetry.page.actions.all_page_actions import * |
from telemetry.unittest import options_for_unittests |
from telemetry.web_perf import timeline_based_measurement as tbm_module |
from telemetry.web_perf.metrics import timeline_based_metric |
+ |
class TimelineBasedMetricsTests(unittest.TestCase): |
+ |
def setUp(self): |
model = model_module.TimelineModel() |
renderer_thread = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
@@ -33,7 +38,7 @@ class TimelineBasedMetricsTests(unittest.TestCase): |
start_thread=renderer_thread, end_thread=renderer_thread, |
thread_start=5, thread_duration=15)) |
renderer_thread.async_slices.append(async_slice.AsyncSlice( |
- 'cat', 'Interaction.LogicalName2/is_loading_resources', |
+ 'cat', 'Interaction.LogicalName2/is_responsive', |
timestamp=25, duration=5, |
start_thread=renderer_thread, end_thread=renderer_thread, |
thread_start=25, thread_duration=5)) |
@@ -43,26 +48,29 @@ class TimelineBasedMetricsTests(unittest.TestCase): |
self.renderer_thread = renderer_thread |
def testFindTimelineInteractionRecords(self): |
- metric = tbm_module._TimelineBasedMetrics( # pylint: disable=W0212 |
- self.model, self.renderer_thread, lambda _: [] ) |
+ metric = tbm_module._TimelineBasedMetrics( # pylint: disable=W0212 |
+ self.model, self.renderer_thread, lambda _: []) |
interactions = metric.FindTimelineInteractionRecords() |
self.assertEquals(2, len(interactions)) |
self.assertTrue(interactions[0].is_smooth) |
self.assertEquals(0, interactions[0].start) |
self.assertEquals(20, interactions[0].end) |
- self.assertTrue(interactions[1].is_loading_resources) |
+ self.assertTrue(interactions[1].is_responsive) |
self.assertEquals(25, interactions[1].start) |
self.assertEquals(30, interactions[1].end) |
def testAddResults(self): |
results = page_measurement_results.PageMeasurementResults() |
+ |
class FakeSmoothMetric(timeline_based_metric.TimelineBasedMetric): |
+ |
def AddResults(self, model, renderer_thread, |
interaction_records, results): |
results.Add('FakeSmoothMetric', 'ms', 1) |
class FakeLoadingMetric(timeline_based_metric.TimelineBasedMetric): |
+ |
def AddResults(self, model, renderer_thread, |
interaction_records, results): |
for r in interaction_records: |
@@ -73,11 +81,11 @@ class TimelineBasedMetricsTests(unittest.TestCase): |
res = [] |
if interaction.is_smooth: |
res.append(FakeSmoothMetric()) |
- if interaction.is_loading_resources: |
+ if interaction.is_responsive: |
res.append(FakeLoadingMetric()) |
return res |
- metric = tbm_module._TimelineBasedMetrics( # pylint: disable=W0212 |
+ metric = tbm_module._TimelineBasedMetrics( # pylint: disable=W0212 |
self.model, self.renderer_thread, |
CreateMetricsForTimelineInteractionRecord) |
ps = page_set.PageSet(file_path=os.path.dirname(__file__)) |
@@ -93,19 +101,33 @@ class TimelineBasedMetricsTests(unittest.TestCase): |
self.assertEquals(len(v), 1) |
+class TestTimelinebasedMeasurementPage(page_module.Page): |
+ |
+ def __init__(self, ps, base_dir): |
+ super(TestTimelinebasedMeasurementPage, self).__init__( |
+ 'file://interaction_enabled_page.html', ps, base_dir) |
+ |
+ def RunSmoothness(self, action_runner): |
+ action_runner.RunAction(WaitAction({'seconds': 2})) |
+ action_runner.RunAction(TapAction( |
+ {'selector': '#drawer', 'automatically_record_interaction': False})) |
+ action_runner.RunAction(WaitAction({'seconds': 1})) |
+ |
+ |
class TimelineBasedMeasurementTest( |
- page_measurement_unittest_base.PageMeasurementUnitTestBase): |
+ page_measurement_unittest_base.PageMeasurementUnitTestBase): |
+ |
def setUp(self): |
self._options = options_for_unittests.GetCopy() |
self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF |
# Disabled due to flakiness: crbug.com/368386 |
@test.Disabled |
- def testTimelineBasedForSmoke(self): |
+ def testSmoothnessTimelineBasedMeasurementForSmoke(self): |
ps = self.CreatePageSetFromFileInUnittestDataDir( |
'interaction_enabled_page.html') |
- setattr(ps.pages[0], 'RunSmoothness', {'action': 'wait', |
- 'javascript': 'window.animationDone'}) |
+ setattr(ps.pages[0], 'RunSmoothness', { |
+ 'action': 'wait', 'javascript': 'window.animationDone'}) |
measurement = tbm_module.TimelineBasedMeasurement() |
results = self.RunMeasurement(measurement, ps, |
options=self._options) |
@@ -115,3 +137,19 @@ class TimelineBasedMeasurementTest( |
v = results.FindAllPageSpecificValuesNamed('DrawerAnimation-jank') |
self.assertEquals(len(v), 1) |
+ def testMainthreadJankTimelineBasedMeasurement(self): |
+ ps = self.CreateEmptyPageSet() |
+ ps.AddPage(TestTimelinebasedMeasurementPage(ps, ps.base_dir)) |
+ |
+ measurement = tbm_module.TimelineBasedMeasurement() |
+ results = self.RunMeasurement(measurement, ps, |
+ options=self._options) |
+ self.assertEquals(0, len(results.failures)) |
+ v = results.FindAllPageSpecificValuesNamed( |
+ 'JankThreadJSRun-num_big_mainthread_janks') |
+ self.assertEquals(len(v), 1) |
+ self.assertEquals(v[0].value, 1) |
+ |
+ v = results.FindAllPageSpecificValuesNamed( |
+ 'JankThreadJSRun-biggest_jank_thread_time') |
+ self.assertGreaterEqual(v[0].value, 50) |