1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)# found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)from measurements import repaint 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)from telemetry.core import wpr_modes 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liufrom telemetry.page import page as page_module 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)from telemetry.unittest import options_for_unittests 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.unittest import page_test_test_case 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochfrom telemetry.unittest import test 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class TestRepaintPage(page_module.Page): 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu def __init__(self, page_set, base_dir): 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu super(TestRepaintPage, self).__init__('file://blank.html', 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu page_set, base_dir) 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu def RunRepaint(self, action_runner): 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch action_runner.RepaintContinuously(seconds=2) 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class RepaintUnitTest(page_test_test_case.PageTestTestCase): 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) """Smoke test for repaint measurement 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Runs repaint measurement on a simple page and verifies 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) that all metrics were added to the results. The test is purely functional, 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) i.e. it only checks if the metrics are present and non-zero. 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) """ 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) def setUp(self): 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self._options = options_for_unittests.GetCopy() 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) def testRepaint(self): 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ps = self.CreateEmptyPageSet() 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ps.AddPage(TestRepaintPage(ps, ps.base_dir)) 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) measurement = repaint.Repaint() 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) results = self.RunMeasurement(measurement, ps, options=self._options) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertEquals(0, len(results.failures)) 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) frame_times = results.FindAllPageSpecificValuesNamed('frame_times') 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertEquals(len(frame_times), 1) 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mean_frame_time = results.FindAllPageSpecificValuesNamed('mean_frame_time') 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertEquals(len(mean_frame_time), 1) 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertGreater(mean_frame_time[0].GetRepresentativeNumber(), 0) 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) jank = results.FindAllPageSpecificValuesNamed('jank') 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertEquals(len(jank), 1) 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertGreater(jank[0].GetRepresentativeNumber(), 0) 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mostly_smooth = results.FindAllPageSpecificValuesNamed('mostly_smooth') 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertEquals(len(mostly_smooth), 1) 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.assertGreaterEqual(mostly_smooth[0].GetRepresentativeNumber(), 0) 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch @test.Disabled('android') 58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch def testCleanUpTrace(self): 59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch self.TestTracingCleanedUp(repaint.Repaint, self._options) 60