Changeset 106442 in webkit


Ignore:
Timestamp:
Feb 1, 2012 1:15:18 AM (12 years ago)
Author:
rniwa@webkit.org
Message:

run-perf-tests should restart DRT for each test
https://bugs.webkit.org/show_bug.cgi?id=77506

Reviewed by Adam Barth.

Always restart DRT when running performance tests in order to minimize the dependency between tests.

  • Scripts/webkitpy/layout_tests/port/chromium.py:

(ChromiumDriver.stop):

  • 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_kills_drt_per_run):
(test_run_test_set_kills_drt_per_run.TestDriverWithStopCount):
(test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.init):
(test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.stop):

Location:
trunk/Tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r106438 r106442  
     12012-02-01  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        run-perf-tests should restart DRT for each test
     4        https://bugs.webkit.org/show_bug.cgi?id=77506
     5
     6        Reviewed by Adam Barth.
     7
     8        Always restart DRT when running performance tests in order to minimize the dependency between tests.
     9
     10        * Scripts/webkitpy/layout_tests/port/chromium.py:
     11        (ChromiumDriver.stop):
     12        * Scripts/webkitpy/performance_tests/perftestsrunner.py:
     13        (PerfTestsRunner._run_tests_set):
     14        (PerfTestsRunner._run_single_test):
     15        * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
     16        (create_runner):
     17        (test_run_passing_test):
     18        (test_run_silent_test):
     19        (test_run_failed_test):
     20        (test_run_tonguey_test):
     21        (test_run_timeout_test):
     22        (test_run_crash_test):
     23        (test_run_test_set_kills_drt_per_run):
     24        (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount):
     25        (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.__init__):
     26        (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.stop):
     27
    1282012-01-31  Hans Wennborg  <hans@chromium.org>
    229
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py

    r105443 r106442  
    604604            self._proc.stderr.close()
    605605        time_out_ms = self._port.get_option('time_out_ms')
    606         if time_out_ms:
     606        if time_out_ms and not self._no_timeout:
     607            # FIXME: Port object shouldn't be dependent on layout test manager.
    607608            kill_timeout_seconds = 3.0 * int(time_out_ms) / Manager.DEFAULT_TEST_TIMEOUT_MS
    608609        else:
  • trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py

    r106409 r106442  
    11#!/usr/bin/env python
    2 # Copyright (C) 2011 Google Inc. All rights reserved.
     2# Copyright (C) 2012 Google Inc. All rights reserved.
    33#
    44# Redistribution and use in source and binary forms, with or without
     
    203203        expected = 0
    204204        unexpected = 0
    205         driver_need_restart = False
    206         driver = None
    207205
    208206        for test in tests:
    209             if driver_need_restart:
    210                 _log.error("%s killing driver" % test)
    211                 driver.stop()
    212                 driver = None
    213             if not driver:
    214                 driver = port.create_driver(worker_number=1, no_timeout=True)
     207            driver = port.create_driver(worker_number=1, no_timeout=True)
    215208
    216209            relative_test_path = self._host.filesystem.relpath(test, self._base_path)
     
    218211
    219212            is_chromium_style = self._host.filesystem.split(relative_test_path)[0] in self._test_directories_for_chromium_style_tests
    220             test_failed, driver_need_restart = self._run_single_test(test, driver, is_chromium_style)
    221             if test_failed:
     213            if self._run_single_test(test, driver, is_chromium_style):
     214                expected = expected + 1
     215            else:
    222216                unexpected = unexpected + 1
    223             else:
    224                 expected = expected + 1
    225217
    226218            self._printer.write('')
    227219
    228         if driver:
    229220            driver.stop()
    230221
     
    291282    def _run_single_test(self, test, driver, is_chromium_style):
    292283        test_failed = False
    293         driver_need_restart = False
    294284        output = driver.run_test(DriverInput(test, self._options.time_out_ms, None, False))
    295285
     
    299289            self._printer.write('timeout: %s' % test[self._webkit_base_dir_len + 1:])
    300290            test_failed = True
    301             driver_need_restart = True
    302291        elif output.crash:
    303292            self._printer.write('crash: %s' % test[self._webkit_base_dir_len + 1:])
    304             driver_need_restart = True
    305293            test_failed = True
    306294        else:
     
    317305            self._printer.write('FAILED')
    318306
    319         return test_failed, driver_need_restart
     307        return not test_failed
  • trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py

    r106062 r106442  
    11#!/usr/bin/python
    2 # Copyright (C) 2011 Google Inc. All rights reserved.
     2# Copyright (C) 2012 Google Inc. All rights reserved.
    33#
    44# Redistribution and use in source and binary forms, with or without
     
    105105            """do nothing"""
    106106
    107     def create_runner(self, buildbot_output=None, args=[], regular_output=None):
     107    def create_runner(self, buildbot_output=None, args=[], regular_output=None, driver_class=TestDriver):
    108108        buildbot_output = buildbot_output or array_stream.ArrayStream()
    109109        regular_output = regular_output or array_stream.ArrayStream()
     
    111111        options, parsed_args = PerfTestsRunner._parse_args(args)
    112112        test_port = TestPort(host=MockHost(), options=options)
    113         test_port.create_driver = lambda worker_number=None, no_timeout=False: MainTest.TestDriver()
     113        test_port.create_driver = lambda worker_number=None, no_timeout=False: driver_class()
    114114
    115115        runner = PerfTestsRunner(regular_output, buildbot_output, args=args, port=test_port)
     
    125125
    126126    def test_run_passing_test(self):
    127         test_failed, driver_need_restart = self.run_test('pass.html')
    128         self.assertFalse(test_failed)
    129         self.assertFalse(driver_need_restart)
     127        self.assertTrue(self.run_test('pass.html'))
    130128
    131129    def test_run_silent_test(self):
    132         test_failed, driver_need_restart = self.run_test('silent.html')
    133         self.assertTrue(test_failed)
    134         self.assertFalse(driver_need_restart)
     130        self.assertFalse(self.run_test('silent.html'))
    135131
    136132    def test_run_failed_test(self):
    137         test_failed, driver_need_restart = self.run_test('failed.html')
    138         self.assertTrue(test_failed)
    139         self.assertFalse(driver_need_restart)
     133        self.assertFalse(self.run_test('failed.html'))
    140134
    141135    def test_run_tonguey_test(self):
    142         test_failed, driver_need_restart = self.run_test('tonguey.html')
    143         self.assertTrue(test_failed)
    144         self.assertFalse(driver_need_restart)
     136        self.assertFalse(self.run_test('tonguey.html'))
    145137
    146138    def test_run_timeout_test(self):
    147         test_failed, driver_need_restart = self.run_test('timeout.html')
    148         self.assertTrue(test_failed)
    149         self.assertTrue(driver_need_restart)
     139        self.assertFalse(self.run_test('timeout.html'))
    150140
    151141    def test_run_crash_test(self):
    152         test_failed, driver_need_restart = self.run_test('crash.html')
    153         self.assertTrue(test_failed)
    154         self.assertTrue(driver_need_restart)
     142        self.assertFalse(self.run_test('crash.html'))
    155143
    156144    def test_run_test_set(self):
     
    164152        self.assertEqual(len(buildbot_output.get()), 1)
    165153        self.assertEqual(buildbot_output.get()[0], 'RESULT group_name: test_name= 42 ms\n')
     154
     155    def test_run_test_set_kills_drt_per_run(self):
     156
     157        class TestDriverWithStopCount(MainTest.TestDriver):
     158            stop_count = 0
     159
     160            def __init__(self):
     161                TestDriverWithStopCount.sotp_count = 0
     162
     163            def stop(self):
     164                TestDriverWithStopCount.stop_count += 1
     165
     166        buildbot_output = array_stream.ArrayStream()
     167        runner = self.create_runner(buildbot_output, driver_class=TestDriverWithStopCount)
     168
     169        dirname = runner._base_path + '/inspector/'
     170        tests = [dirname + 'pass.html', dirname + 'silent.html', dirname + 'failed.html',
     171            dirname + 'tonguey.html', dirname + 'timeout.html', dirname + 'crash.html']
     172
     173        unexpected_result_count = runner._run_tests_set(tests, runner._port)
     174        self.assertEqual(TestDriverWithStopCount.stop_count, 6)
    166175
    167176    def test_run_test_set_for_parser_tests(self):
Note: See TracChangeset for help on using the changeset viewer.