Changeset 130366 in webkit
- Timestamp:
- Oct 3, 2012 11:29:45 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/PerformanceTests/ChangeLog
r130341 r130366 1 2012-10-03 Philip Rogers <pdr@google.com> 2 3 Force GC between PageLoad tests. 4 https://bugs.webkit.org/show_bug.cgi?id=98203 5 6 Reviewed by Ryosuke Niwa. 7 8 Previously, our PageLoad PerfTests had multi-modal distributions, 9 typically with a small cluster at 1-2x the median. This turned out 10 to be caused by not garbage collecting between tests! 11 12 This patch adds a new file, force-gc.html, and loads this file between 13 PageLoad tests to force a GC. I manually verified that this cleans up 14 our perf test outliers. 15 16 * resources/force-gc.html: Added. 17 1 18 2012-10-03 Julien Chaffraix <jchaffraix@webkit.org> 2 19 -
trunk/Tools/ChangeLog
r130363 r130366 1 2012-10-03 Philip Rogers <pdr@google.com> 2 3 Force GC between PageLoad tests. 4 https://bugs.webkit.org/show_bug.cgi?id=98203 5 6 Reviewed by Ryosuke Niwa. 7 8 Previously, our PageLoad PerfTests had multi-modal distributions, 9 typically with a small cluster at 1-2x the median. This turned out 10 to be caused by not garbage collecting between tests! 11 12 This patch adds a new file, force-gc.html, and loads this file between 13 PageLoad tests to force a GC. I manually verified that this cleans up 14 our perf test outliers. 15 16 * Scripts/webkitpy/performance_tests/perftest.py: 17 (PageLoadingPerfTest.__init__): 18 (PageLoadingPerfTest): 19 (PageLoadingPerfTest.run_single): 20 21 This function now loads two pages: one to force a gc and 22 then the test to run. 23 24 * Scripts/webkitpy/performance_tests/perftest_unittest.py: 25 26 Modified several existing tests to show that the force-gc file 27 is loaded. 28 29 (MockPort): 30 (MockPort.__init__): 31 (MockPort.perf_tests_dir): 32 (TestPageLoadingPerfTest.MockDriver.__init__): 33 (TestPageLoadingPerfTest.MockDriver.run_test): 34 (TestPageLoadingPerfTest.test_run): 35 (TestPageLoadingPerfTest.test_run_with_bad_output): 36 (TestReplayPerfTest.ReplayTestPort): 37 (TestReplayPerfTest.ReplayTestPort.__init__): 38 (TestReplayPerfTest.test_run_single.run_test): 39 (TestReplayPerfTest.test_run_single): 40 (TestReplayPerfTest.test_run_single_fails_when_output_has_error): 41 (TestPerfTestFactory.test_regular_test): 42 (TestPerfTestFactory.test_inspector_test): 43 (TestPerfTestFactory.test_page_loading_test): 44 1 45 2012-10-03 Christophe Dumez <christophe.dumez@intel.com> 2 46 -
trunk/Tools/Scripts/webkitpy/performance_tests/perftest.py
r130135 r130366 203 203 204 204 class PageLoadingPerfTest(PerfTest): 205 _FORCE_GC_FILE = 'resources/force-gc.html' 206 205 207 def __init__(self, port, test_name, path_or_url): 206 208 super(PageLoadingPerfTest, self).__init__(port, test_name, path_or_url) 209 self.force_gc_test = self._port.host.filesystem.join(self._port.perf_tests_dir(), self._FORCE_GC_FILE) 210 211 def run_single(self, driver, path_or_url, time_out_ms, should_run_pixel_test=False): 212 # Force GC to prevent pageload noise. See https://bugs.webkit.org/show_bug.cgi?id=98203 213 super(PageLoadingPerfTest, self).run_single(driver, self.force_gc_test, time_out_ms, False) 214 return super(PageLoadingPerfTest, self).run_single(driver, path_or_url, time_out_ms, should_run_pixel_test) 207 215 208 216 def run(self, driver, time_out_ms): -
trunk/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py
r130135 r130366 44 44 45 45 46 class MockPort(TestPort): 47 def __init__(self, custom_run_test=None): 48 super(MockPort, self).__init__(host=MockHost(), custom_run_test=custom_run_test) 49 46 50 class MainTest(unittest.TestCase): 47 51 def test_parse_output(self): … … 99 103 class TestPageLoadingPerfTest(unittest.TestCase): 100 104 class MockDriver(object): 101 def __init__(self, values ):105 def __init__(self, values, test): 102 106 self._values = values 103 107 self._index = 0 108 self._test = test 104 109 105 110 def run_test(self, input, stop_when_done): 111 if input.test_name == self._test.force_gc_test: 112 return 106 113 value = self._values[self._index] 107 114 self._index += 1 … … 112 119 113 120 def test_run(self): 114 test = PageLoadingPerfTest(None, 'some-test', '/path/some-dir/some-test') 115 driver = TestPageLoadingPerfTest.MockDriver(range(1, 21)) 121 port = MockPort() 122 test = PageLoadingPerfTest(port, 'some-test', '/path/some-dir/some-test') 123 driver = TestPageLoadingPerfTest.MockDriver(range(1, 21), test) 116 124 output_capture = OutputCapture() 117 125 output_capture.capture_output() … … 130 138 output_capture.capture_output() 131 139 try: 132 test = PageLoadingPerfTest(None, 'some-test', '/path/some-dir/some-test') 133 driver = TestPageLoadingPerfTest.MockDriver([1, 2, 3, 4, 5, 6, 7, 'some error', 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]) 140 port = MockPort() 141 test = PageLoadingPerfTest(port, 'some-test', '/path/some-dir/some-test') 142 driver = TestPageLoadingPerfTest.MockDriver([1, 2, 3, 4, 5, 6, 7, 'some error', 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], test) 134 143 self.assertEqual(test.run(driver, None), None) 135 144 finally: … … 142 151 class TestReplayPerfTest(unittest.TestCase): 143 152 144 class ReplayTestPort( TestPort):153 class ReplayTestPort(MockPort): 145 154 def __init__(self, custom_run_test=None): 146 155 … … 150 159 151 160 self._custom_driver_class = ReplayTestDriver 152 super(self.__class__, self).__init__( host=MockHost())161 super(self.__class__, self).__init__() 153 162 154 163 def _driver_class(self): … … 180 189 181 190 def run_test(test_input, stop_when_done): 191 if test_input.test_name == test.force_gc_test: 192 loaded_pages.append(test_input) 193 return 182 194 if test_input.test_name != "about:blank": 183 195 self.assertEqual(test_input.test_name, 'http://some-test/') … … 197 209 actual_stdout, actual_stderr, actual_logs = output_capture.restore_output() 198 210 199 self.assertEqual(len(loaded_pages), 1) 200 self.assertEqual(loaded_pages[0].test_name, 'http://some-test/') 211 self.assertEqual(len(loaded_pages), 2) 212 self.assertEqual(loaded_pages[0].test_name, test.force_gc_test) 213 self.assertEqual(loaded_pages[1].test_name, 'http://some-test/') 201 214 self.assertEqual(actual_stdout, '') 202 215 self.assertEqual(actual_stderr, '') … … 263 276 actual_stdout, actual_stderr, actual_logs = output_capture.restore_output() 264 277 265 self.assertEqual(len(loaded_pages), 1) 266 self.assertEqual(loaded_pages[0].test_name, 'http://some-test/') 278 self.assertEqual(len(loaded_pages), 2) 279 self.assertEqual(loaded_pages[0].test_name, test.force_gc_test) 280 self.assertEqual(loaded_pages[1].test_name, 'http://some-test/') 267 281 self.assertEqual(actual_stdout, '') 268 282 self.assertEqual(actual_stderr, '') … … 317 331 class TestPerfTestFactory(unittest.TestCase): 318 332 def test_regular_test(self): 319 test = PerfTestFactory.create_perf_test( None, 'some-dir/some-test', '/path/some-dir/some-test')333 test = PerfTestFactory.create_perf_test(MockPort(), 'some-dir/some-test', '/path/some-dir/some-test') 320 334 self.assertEqual(test.__class__, PerfTest) 321 335 322 336 def test_inspector_test(self): 323 test = PerfTestFactory.create_perf_test( None, 'inspector/some-test', '/path/inspector/some-test')337 test = PerfTestFactory.create_perf_test(MockPort(), 'inspector/some-test', '/path/inspector/some-test') 324 338 self.assertEqual(test.__class__, ChromiumStylePerfTest) 325 339 326 340 def test_page_loading_test(self): 327 test = PerfTestFactory.create_perf_test( None, 'PageLoad/some-test', '/path/PageLoad/some-test')341 test = PerfTestFactory.create_perf_test(MockPort(), 'PageLoad/some-test', '/path/PageLoad/some-test') 328 342 self.assertEqual(test.__class__, PageLoadingPerfTest) 329 343
Note: See TracChangeset
for help on using the changeset viewer.