[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
yutak at chromium.org
yutak at chromium.org
Wed Dec 22 17:57:43 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 567f453172609ce19d370f81221d50c28e253811
Author: yutak at chromium.org <yutak at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Dec 3 11:27:50 2010 +0000
2010-12-03 Sheriff Bot <webkit.review.bot at gmail.com>
Unreviewed, rolling out r73222.
http://trac.webkit.org/changeset/73222
https://bugs.webkit.org/show_bug.cgi?id=50449
r73211 seemed to break Chromium's "Webkit Win (dbg)(2)" bot.
(Requested by yutak on #webkit).
* Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
* Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
* Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
* Scripts/webkitpy/layout_tests/port/base.py:
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
* Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73259 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index c3c31eb..fbba1ec 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,5 +1,21 @@
2010-12-03 Sheriff Bot <webkit.review.bot at gmail.com>
+ Unreviewed, rolling out r73222.
+ http://trac.webkit.org/changeset/73222
+ https://bugs.webkit.org/show_bug.cgi?id=50449
+
+ r73211 seemed to break Chromium's "Webkit Win (dbg)(2)" bot.
+ (Requested by yutak on #webkit).
+
+ * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
+ * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
+ * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
+ * Scripts/webkitpy/layout_tests/port/base.py:
+ * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
+ * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
+
+2010-12-03 Sheriff Bot <webkit.review.bot at gmail.com>
+
Unreviewed, rolling out r73228.
http://trac.webkit.org/changeset/73228
https://bugs.webkit.org/show_bug.cgi?id=50448
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
index 880cc60..65d0b09 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
@@ -98,7 +98,7 @@ class WatchableThread(threading.Thread):
class TestShellThread(WatchableThread):
- def __init__(self, port, options, worker_number,
+ def __init__(self, port, options, worker_number, worker_name,
filename_list_queue, result_queue):
"""Initialize all the local state for this DumpRenderTree thread.
@@ -106,6 +106,7 @@ class TestShellThread(WatchableThread):
port: interface to port-specific hooks
options: command line options argument from optparse
worker_number: identifier for a particular worker thread.
+ worker_name: for logging.
filename_list_queue: A thread safe Queue class that contains lists
of tuples of (filename, uri) pairs.
result_queue: A thread safe Queue class that will contain
@@ -115,7 +116,7 @@ class TestShellThread(WatchableThread):
self._port = port
self._options = options
self._worker_number = worker_number
- self._name = 'worker/%d' % worker_number
+ self._name = worker_name
self._filename_list_queue = filename_list_queue
self._result_queue = result_queue
@@ -183,9 +184,6 @@ class TestShellThread(WatchableThread):
def get_num_tests(self):
return self._num_tests
- def name(self):
- return self._name
-
def next_timeout(self):
"""Return the time the test is supposed to finish by."""
if self._next_timeout:
@@ -335,7 +333,7 @@ class TestShellThread(WatchableThread):
class SingleTestThread(threading.Thread):
def run(self):
- result = worker._run_single_test(test_input, driver)
+ result = worker._run_single_test(driver, test_input)
thread = SingleTestThread()
thread.start()
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py
index 285b2e7..e520a9c 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py
@@ -26,7 +26,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Module for handling messages and concurrency for run-webkit-tests.
+"""Module for handling messages, threads, processes, and concurrency for run-webkit-tests.
Testing is accomplished by having a manager (TestRunner) gather all of the
tests to be run, and sending messages to a pool of workers (TestShellThreads)
@@ -54,20 +54,29 @@ def get(port, options):
"""Return an instance of a WorkerMessageBroker."""
worker_model = options.worker_model
if worker_model == 'inline':
- return _InlineBroker(port, options)
+ return InlineBroker(port, options)
if worker_model == 'threads':
- return _MultiThreadedBroker(port, options)
+ return MultiThreadedBroker(port, options)
raise ValueError('unsupported value for --worker-model: %s' % worker_model)
-class _WorkerMessageBroker(object):
+class _WorkerState(object):
+ def __init__(self, name):
+ self.name = name
+ self.thread = None
+
+
+class WorkerMessageBroker(object):
def __init__(self, port, options):
self._port = port
self._options = options
self._num_workers = int(self._options.child_processes)
- # This maps worker names to their TestShellThread objects.
- self._threads = {}
+ # This maps worker names to their _WorkerState values.
+ self._workers = {}
+
+ def _threads(self):
+ return tuple([w.thread for w in self._workers.values()])
def start_workers(self, test_runner):
"""Starts up the pool of workers for running the tests.
@@ -77,19 +86,13 @@ class _WorkerMessageBroker(object):
"""
self._test_runner = test_runner
for worker_number in xrange(self._num_workers):
- thread = self.start_worker(worker_number)
- self._threads[thread.name()] = thread
- return self._threads.values()
+ worker = _WorkerState('worker-%d' % worker_number)
+ worker.thread = self._start_worker(worker_number, worker.name)
+ self._workers[worker.name] = worker
+ return self._threads()
- def start_worker(self, worker_number):
- # FIXME: Replace with something that isn't a thread.
- # Note: Don't start() the thread! If we did, it would actually
- # create another thread and start executing it, and we'd no longer
- # be single-threaded.
- return dump_render_tree_thread.TestShellThread(self._port,
- self._options, worker_number,
- self._test_runner._current_filename_queue,
- self._test_runner._result_queue)
+ def _start_worker(self, worker_number, worker_name):
+ raise NotImplementedError
def run_message_loop(self):
"""Loop processing messages until done."""
@@ -104,27 +107,43 @@ class _WorkerMessageBroker(object):
pass
-class _InlineBroker(_WorkerMessageBroker):
+class InlineBroker(WorkerMessageBroker):
+ def _start_worker(self, worker_number, worker_name):
+ # FIXME: Replace with something that isn't a thread.
+ thread = dump_render_tree_thread.TestShellThread(self._port,
+ self._options, worker_number, worker_name,
+ self._test_runner._current_filename_queue,
+ self._test_runner._result_queue)
+ # Note: Don't start() the thread! If we did, it would actually
+ # create another thread and start executing it, and we'd no longer
+ # be single-threaded.
+ return thread
+
def run_message_loop(self):
- thread = self._threads.values()[0]
+ thread = self._threads()[0]
thread.run_in_main_thread(self._test_runner,
self._test_runner._current_result_summary)
self._test_runner.update()
-class _MultiThreadedBroker(_WorkerMessageBroker):
- def start_worker(self, worker_number):
- thread = _WorkerMessageBroker.start_worker(self, worker_number)
+class MultiThreadedBroker(WorkerMessageBroker):
+ def _start_worker(self, worker_number, worker_name):
+ thread = dump_render_tree_thread.TestShellThread(self._port,
+ self._options, worker_number, worker_name,
+ self._test_runner._current_filename_queue,
+ self._test_runner._result_queue)
thread.start()
return thread
def run_message_loop(self):
+ threads = self._threads()
+
# Loop through all the threads waiting for them to finish.
some_thread_is_alive = True
while some_thread_is_alive:
some_thread_is_alive = False
t = time.time()
- for thread in self._threads.values():
+ for thread in threads:
exception_info = thread.exception_info()
if exception_info is not None:
# Re-raise the thread's exception here to make it
@@ -137,7 +156,7 @@ class _MultiThreadedBroker(_WorkerMessageBroker):
some_thread_is_alive = True
next_timeout = thread.next_timeout()
if next_timeout and t > next_timeout:
- log_wedged_worker(thread.name(), thread.id())
+ log_wedged_worker(thread.getName(), thread.id())
thread.clear_next_timeout()
self._test_runner.update()
@@ -146,7 +165,8 @@ class _MultiThreadedBroker(_WorkerMessageBroker):
time.sleep(0.01)
def cancel_workers(self):
- for thread in self._threads.values():
+ threads = self._threads()
+ for thread in threads:
thread.cancel()
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py
index c006471..6f04fd3 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py
@@ -46,7 +46,7 @@ import message_broker
class TestThread(threading.Thread):
def __init__(self, started_queue, stopping_queue):
threading.Thread.__init__(self)
- self._id = None
+ self._thread_id = None
self._started_queue = started_queue
self._stopping_queue = stopping_queue
self._timeout = False
@@ -54,10 +54,10 @@ class TestThread(threading.Thread):
self._exception_info = None
def id(self):
- return self._id
+ return self._thread_id
- def name(self):
- return 'worker/0'
+ def getName(self):
+ return "worker-0"
def run(self):
self._covered_run()
@@ -65,7 +65,7 @@ class TestThread(threading.Thread):
def _covered_run(self):
# FIXME: this is a separate routine to work around a bug
# in coverage: see http://bitbucket.org/ned/coveragepy/issue/85.
- self._id = thread.get_ident()
+ self._thread_id = thread.get_ident()
try:
self._started_queue.put('')
msg = self._stopping_queue.get()
@@ -117,11 +117,11 @@ class MultiThreadedBrokerTest(unittest.TestCase):
options = mocktool.MockOptions(child_processes='1')
starting_queue = Queue.Queue()
stopping_queue = Queue.Queue()
- broker = message_broker._MultiThreadedBroker(port, options)
+ broker = message_broker.MultiThreadedBroker(port, options)
broker._test_runner = runner
child_thread = TestThread(starting_queue, stopping_queue)
- name = child_thread.name()
- broker._threads[name] = child_thread
+ broker._workers['worker-0'] = message_broker._WorkerState('worker-0')
+ broker._workers['worker-0'].thread = child_thread
child_thread.start()
started_msg = starting_queue.get()
stopping_queue.put(msg)
@@ -169,7 +169,7 @@ class Test(unittest.TestCase):
child_thread.start()
msg = starting_queue.get()
- message_broker.log_wedged_worker(child_thread.name(),
+ message_broker.log_wedged_worker(child_thread.getName(),
child_thread.id())
stopping_queue.put('')
child_thread.join(timeout=1.0)
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
index 94524fc..bc5a9aa 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
@@ -127,10 +127,6 @@ class Port(object):
port."""
return self._executive.cpu_count()
- def default_worker_model(self):
- """Return the concurrency model the port should use."""
- return 'threads'
-
def baseline_path(self):
"""Return the absolute path to the directory to store new baselines
in for this port."""
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py b/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
index 0b11d9b..f4e92a6 100755
--- a/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
@@ -603,7 +603,7 @@ class TestRunner:
if not self._options.dry_run:
threads = message_broker.start_workers(self)
else:
- threads = []
+ threads = {}
self._printer.print_update("Starting testing ...")
keyboard_interrupted = False
@@ -1338,8 +1338,7 @@ def run(port, options, args, regular_output=sys.stderr,
def _set_up_derived_options(port_obj, options):
"""Sets the options values that depend on other options values."""
- if options.worker_model is None:
- options.worker_model = port_obj.default_worker_model()
+
if options.worker_model == 'inline':
if options.child_processes and int(options.child_processes) > 1:
_log.warning("--worker-model=inline overrides --child-processes")
@@ -1570,10 +1569,9 @@ def parse_args(args=None):
optparse.make_option("--child-processes",
help="Number of DumpRenderTrees to run in parallel."),
# FIXME: Display default number of child processes that will run.
- # FIXME: Display default threading model (will be port-specific).
optparse.make_option("--worker-model", action="store",
- help=("controls worker model. Valid values are "
- "'inline' and 'threads'.")),
+ default="threads", help=("controls worker model. Valid values are "
+ "'inline' and 'threads' (default).")),
optparse.make_option("--experimental-fully-parallel",
action="store_true", default=False,
help="run all tests in parallel"),
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py b/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py
index 0ae9a09..6bb741a 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py
@@ -47,7 +47,6 @@ from webkitpy.common import array_stream
from webkitpy.common.system import outputcapture
from webkitpy.common.system import user
from webkitpy.layout_tests import port
-from webkitpy.layout_tests.port import test
from webkitpy.layout_tests import run_webkit_tests
from webkitpy.layout_tests.layout_package import dump_render_tree_thread
from webkitpy.layout_tests.port.test import TestPort, TestDriver
@@ -187,7 +186,6 @@ class MainTest(unittest.TestCase):
def test_batch_size(self):
batch_tests_run = get_tests_run(['--batch-size', '2'])
- self.assertEquals(len(batch_tests_run), 9)
for batch in batch_tests_run:
self.assertTrue(len(batch) <= 2, '%s had too many tests' % ', '.join(batch))
@@ -299,7 +297,6 @@ class MainTest(unittest.TestCase):
def test_run_singly(self):
batch_tests_run = get_tests_run(['--run-singly'])
- self.assertEqual(len(batch_tests_run), 14)
for batch in batch_tests_run:
self.assertEquals(len(batch), 1, '%s had too many tests' % ', '.join(batch))
@@ -395,18 +392,6 @@ class MainTest(unittest.TestCase):
self.assertRaises(ValueError, logging_run,
['--worker-model', 'unknown'])
- def test_worker_model__port_override(self):
- class OverridePort(test.TestPort):
- def default_worker_model(self):
- return 'INVALID'
-
- options, parsed_args = run_webkit_tests.parse_args(
- ['--print', 'nothing', '--platform', 'test', '--noshow-results'])
- port_obj = OverridePort(options=options)
- self.assertRaises(ValueError, run_webkit_tests.run, port_obj,
- options, parsed_args)
-
-
MainTest = skip_if(MainTest, sys.platform == 'cygwin' and compare_version(sys, '2.6')[0] < 0, 'new-run-webkit-tests tests hang on Cygwin Python 2.5.2')
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list