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
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:
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:
if test_failed:
self._printer.write('FAILED')
- return not test_failed
+ return test_failed, driver_need_restart
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')
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()
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)