Roll out r106442. It made some tests more stable but others less stable.
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 2 Feb 2012 01:40:47 +0000 (01:40 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 2 Feb 2012 01:40:47 +0000 (01:40 +0000)
* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(PerfTestsRunner._run_tests_set):
(PerfTestsRunner._run_single_test):
* Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
(create_runner):
(test_run_passing_test):
(test_run_silent_test):
(test_run_failed_test):
(test_run_tonguey_test):
(test_run_timeout_test):
(test_run_crash_test):
(test_run_test_set):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106517 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py
Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py

index ae12e1b..b538bb4 100644 (file)
@@ -1,3 +1,20 @@
+2012-02-01  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Roll out r106442. It made some tests more stable but others less stable.
+
+        * Scripts/webkitpy/performance_tests/perftestsrunner.py:
+        (PerfTestsRunner._run_tests_set):
+        (PerfTestsRunner._run_single_test):
+        * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
+        (create_runner):
+        (test_run_passing_test):
+        (test_run_silent_test):
+        (test_run_failed_test):
+        (test_run_tonguey_test):
+        (test_run_timeout_test):
+        (test_run_crash_test):
+        (test_run_test_set):
+
 2012-02-01  Lucas Forschler  <lforschler@apple.com>
 
         Enable EWS for non-contributers.
index acf351e..3f9a55b 100644 (file)
@@ -202,21 +202,30 @@ class PerfTestsRunner(object):
         result_count = len(tests)
         expected = 0
         unexpected = 0
+        driver_need_restart = False
+        driver = None
 
         for test in tests:
-            driver = port.create_driver(worker_number=1, no_timeout=True)
+            if driver_need_restart:
+                _log.error("%s killing driver" % test)
+                driver.stop()
+                driver = None
+            if not driver:
+                driver = port.create_driver(worker_number=1, no_timeout=True)
 
             relative_test_path = self._host.filesystem.relpath(test, self._base_path)
             self._printer.write('Running %s (%d of %d)' % (relative_test_path, expected + unexpected + 1, len(tests)))
 
             is_chromium_style = self._host.filesystem.split(relative_test_path)[0] in self._test_directories_for_chromium_style_tests
-            if self._run_single_test(test, driver, is_chromium_style):
-                expected = expected + 1
-            else:
+            test_failed, driver_need_restart = self._run_single_test(test, driver, is_chromium_style)
+            if test_failed:
                 unexpected = unexpected + 1
+            else:
+                expected = expected + 1
 
             self._printer.write('')
 
+        if driver:
             driver.stop()
 
         return unexpected
@@ -281,6 +290,7 @@ class PerfTestsRunner(object):
 
     def _run_single_test(self, test, driver, is_chromium_style):
         test_failed = False
+        driver_need_restart = False
         output = driver.run_test(DriverInput(test, self._options.time_out_ms, None, False))
 
         if output.text == None:
@@ -288,8 +298,10 @@ class PerfTestsRunner(object):
         elif output.timeout:
             self._printer.write('timeout: %s' % test[self._webkit_base_dir_len + 1:])
             test_failed = True
+            driver_need_restart = True
         elif output.crash:
             self._printer.write('crash: %s' % test[self._webkit_base_dir_len + 1:])
+            driver_need_restart = True
             test_failed = True
         else:
             if is_chromium_style:
@@ -304,4 +316,4 @@ class PerfTestsRunner(object):
         if test_failed:
             self._printer.write('FAILED')
 
-        return not test_failed
+        return test_failed, driver_need_restart
index 58bd377..74248d3 100755 (executable)
@@ -104,13 +104,13 @@ max 1120
         def stop(self):
             """do nothing"""
 
-    def create_runner(self, buildbot_output=None, args=[], regular_output=None, driver_class=TestDriver):
+    def create_runner(self, buildbot_output=None, args=[], regular_output=None):
         buildbot_output = buildbot_output or array_stream.ArrayStream()
         regular_output = regular_output or array_stream.ArrayStream()
 
         options, parsed_args = PerfTestsRunner._parse_args(args)
         test_port = TestPort(host=MockHost(), options=options)
-        test_port.create_driver = lambda worker_number=None, no_timeout=False: driver_class()
+        test_port.create_driver = lambda worker_number=None, no_timeout=False: MainTest.TestDriver()
 
         runner = PerfTestsRunner(regular_output, buildbot_output, args=args, port=test_port)
         runner._host.filesystem.maybe_make_directory(runner._base_path, 'inspector')
@@ -124,22 +124,34 @@ max 1120
         return runner._run_single_test(test_name, driver, is_chromium_style=True)
 
     def test_run_passing_test(self):
-        self.assertTrue(self.run_test('pass.html'))
+        test_failed, driver_need_restart = self.run_test('pass.html')
+        self.assertFalse(test_failed)
+        self.assertFalse(driver_need_restart)
 
     def test_run_silent_test(self):
-        self.assertFalse(self.run_test('silent.html'))
+        test_failed, driver_need_restart = self.run_test('silent.html')
+        self.assertTrue(test_failed)
+        self.assertFalse(driver_need_restart)
 
     def test_run_failed_test(self):
-        self.assertFalse(self.run_test('failed.html'))
+        test_failed, driver_need_restart = self.run_test('failed.html')
+        self.assertTrue(test_failed)
+        self.assertFalse(driver_need_restart)
 
     def test_run_tonguey_test(self):
-        self.assertFalse(self.run_test('tonguey.html'))
+        test_failed, driver_need_restart = self.run_test('tonguey.html')
+        self.assertTrue(test_failed)
+        self.assertFalse(driver_need_restart)
 
     def test_run_timeout_test(self):
-        self.assertFalse(self.run_test('timeout.html'))
+        test_failed, driver_need_restart = self.run_test('timeout.html')
+        self.assertTrue(test_failed)
+        self.assertTrue(driver_need_restart)
 
     def test_run_crash_test(self):
-        self.assertFalse(self.run_test('crash.html'))
+        test_failed, driver_need_restart = self.run_test('crash.html')
+        self.assertTrue(test_failed)
+        self.assertTrue(driver_need_restart)
 
     def test_run_test_set(self):
         buildbot_output = array_stream.ArrayStream()
@@ -152,27 +164,6 @@ max 1120
         self.assertEqual(len(buildbot_output.get()), 1)
         self.assertEqual(buildbot_output.get()[0], 'RESULT group_name: test_name= 42 ms\n')
 
-    def test_run_test_set_kills_drt_per_run(self):
-
-        class TestDriverWithStopCount(MainTest.TestDriver):
-            stop_count = 0
-
-            def __init__(self):
-                TestDriverWithStopCount.sotp_count = 0
-
-            def stop(self):
-                TestDriverWithStopCount.stop_count += 1
-
-        buildbot_output = array_stream.ArrayStream()
-        runner = self.create_runner(buildbot_output, driver_class=TestDriverWithStopCount)
-
-        dirname = runner._base_path + '/inspector/'
-        tests = [dirname + 'pass.html', dirname + 'silent.html', dirname + 'failed.html',
-            dirname + 'tonguey.html', dirname + 'timeout.html', dirname + 'crash.html']
-
-        unexpected_result_count = runner._run_tests_set(tests, runner._port)
-        self.assertEqual(TestDriverWithStopCount.stop_count, 6)
-
     def test_run_test_set_for_parser_tests(self):
         buildbot_output = array_stream.ArrayStream()
         runner = self.create_runner(buildbot_output)