From 412ac4b7c61eb6fadbe4313737307d6c18087aa0 Mon Sep 17 00:00:00 2001 From: "rniwa@webkit.org" Date: Thu, 2 Feb 2012 10:24:29 +0000 Subject: [PATCH] [PerformanceTests] tests have dependencies https://bugs.webkit.org/show_bug.cgi?id=77506 Reviewed by Hajime Morita. PerformanceTests: * resources/init.html: Added. Tools: Load an initialization page before each test after starting a DRT so that warming up DRT won't affect the performance test results. * Scripts/webkitpy/performance_tests/perftestsrunner.py: (PerfTestsRunner): (PerfTestsRunner.__init__): (PerfTestsRunner._run_tests_set): (PerfTestsRunner._run_single_test): * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: (MainTest.TestDriver.run_test): (test_initial_page_loaded): (test_initial_page_loaded.run_test): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106543 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- PerformanceTests/ChangeLog | 9 +++++++++ PerformanceTests/resources/init.html | 20 ++++++++++++++++++++ Tools/ChangeLog | 20 ++++++++++++++++++++ .../webkitpy/performance_tests/perftestsrunner.py | 6 +++++- .../performance_tests/perftestsrunner_unittest.py | 22 +++++++++++++++++++++- 5 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 PerformanceTests/resources/init.html diff --git a/PerformanceTests/ChangeLog b/PerformanceTests/ChangeLog index 7f68d8d..ca46d96 100644 --- a/PerformanceTests/ChangeLog +++ b/PerformanceTests/ChangeLog @@ -1,3 +1,12 @@ +2012-02-02 Ryosuke Niwa + + [PerformanceTests] tests have dependencies + https://bugs.webkit.org/show_bug.cgi?id=77506 + + Reviewed by Hajime Morita. + + * resources/init.html: Added. + 2012-02-01 Ryosuke Niwa Fix after r106386. The empty anchor element was generating an erroneous whitespace. diff --git a/PerformanceTests/resources/init.html b/PerformanceTests/resources/init.html new file mode 100644 index 0000000..97173fe --- /dev/null +++ b/PerformanceTests/resources/init.html @@ -0,0 +1,20 @@ + + + +

This file is used by run-perf-tests between each test to marginalize the dependency between tests. +This file is not intended to be opened on a browser.

+ + + diff --git a/Tools/ChangeLog b/Tools/ChangeLog index b00bf1d..b29551a 100644 --- a/Tools/ChangeLog +++ b/Tools/ChangeLog @@ -1,5 +1,25 @@ 2012-02-02 Ryosuke Niwa + [PerformanceTests] tests have dependencies + https://bugs.webkit.org/show_bug.cgi?id=77506 + + Reviewed by Hajime Morita. + + Load an initialization page before each test after starting a DRT so that + warming up DRT won't affect the performance test results. + + * Scripts/webkitpy/performance_tests/perftestsrunner.py: + (PerfTestsRunner): + (PerfTestsRunner.__init__): + (PerfTestsRunner._run_tests_set): + (PerfTestsRunner._run_single_test): + * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: + (MainTest.TestDriver.run_test): + (test_initial_page_loaded): + (test_initial_page_loaded.run_test): + +2012-02-02 Ryosuke Niwa + Re-land r106442 per Adam's suggestion. We'll do both restarting DRT and loading a fake test first. * Scripts/webkitpy/performance_tests/perftestsrunner.py: diff --git a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py index 4d88d56..097a537 100644 --- a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py +++ b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py @@ -47,6 +47,7 @@ _log = logging.getLogger(__name__) class PerfTestsRunner(object): _perf_tests_base_dir = 'PerformanceTests' + _initial_page_relative_path = 'resources/init.html' _test_directories_for_chromium_style_tests = ['inspector'] _default_branch = 'webkit-trunk' _EXIT_CODE_BAD_BUILD = -1 @@ -66,6 +67,7 @@ class PerfTestsRunner(object): self._printer = printing.Printer(self._port, self._options, regular_output, buildbot_output, configure_logging=False) self._webkit_base_dir_len = len(self._port.webkit_base()) self._base_path = self._port.perf_tests_dir() + self._initial_page_path = self._host.filesystem.join(self._base_path, self._initial_page_relative_path) self._results = {} self._timestamp = time.time() @@ -202,7 +204,6 @@ class PerfTestsRunner(object): result_count = len(tests) expected = 0 unexpected = 0 - driver = None for test in tests: driver = port.create_driver(worker_number=1, no_timeout=True) @@ -282,6 +283,9 @@ class PerfTestsRunner(object): def _run_single_test(self, test, driver, is_chromium_style): test_failed = False + output = driver.run_test(DriverInput(self._initial_page_path, 10000, None, False)) + if output.text != 'PASS\n': + self._printer.write('Initialization page failed to load.') output = driver.run_test(DriverInput(test, self._options.time_out_ms, None, False)) if output.text == None: diff --git a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py index 58bd377..56f052e 100755 --- a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py +++ b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py @@ -49,7 +49,9 @@ class MainTest(unittest.TestCase): text = '' timeout = False crash = False - if driver_input.test_name.endswith('pass.html'): + if driver_input.test_name.endswith('init.html'): + text = 'PASS\n' + elif driver_input.test_name.endswith('pass.html'): text = 'RESULT group_name: test_name= 42 ms' elif driver_input.test_name.endswith('timeout.html'): timeout = True @@ -123,6 +125,24 @@ max 1120 driver = MainTest.TestDriver() return runner._run_single_test(test_name, driver, is_chromium_style=True) + def test_initial_page_loaded(self): + runner = self.create_runner() + driver = MainTest.TestDriver() + inputs = [] + + def run_test(input): + inputs.append(input) + if input.test_name.endswith('init.html'): + return DriverOutput('PASS\n', 'image output', 'some hash', None) + else: + return DriverOutput('RESULT group_name: test_name= 42 ms\n', 'image output', 'some hash', None) + + driver.run_test = run_test + self.assertTrue(runner._run_single_test('pass.html', driver, is_chromium_style=True)) + self.assertEqual(len(inputs), 2) + self.assertEqual(inputs[0].test_name, runner._base_path + '/resources/init.html') + self.assertEqual(inputs[1].test_name, 'pass.html') + def test_run_passing_test(self): self.assertTrue(self.run_test('pass.html')) -- 2.7.4