diff options
author | Ben Murdoch <benm@google.com> | 2010-10-22 13:02:20 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2010-10-26 15:21:41 +0100 |
commit | a94275402997c11dd2e778633dacf4b7e630a35d (patch) | |
tree | e66f56c67e3b01f22c9c23cd932271ee9ac558ed /WebKitTools/Scripts/webkitpy/layout_tests/layout_package | |
parent | 09e26c78506587b3f5d930d7bc72a23287ffbec0 (diff) | |
download | external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.zip external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.tar.gz external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.tar.bz2 |
Merge WebKit at r70209: Initial merge by Git
Change-Id: Id23a68efa36e9d1126bcce0b137872db00892c8e
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/layout_tests/layout_package')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py | 88 |
1 files changed, 67 insertions, 21 deletions
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 970de60..e0fd1b6 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 @@ -1,5 +1,6 @@ #!/usr/bin/env python # Copyright (C) 2010 Google Inc. All rights reserved. +# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -271,23 +272,26 @@ class TestShellThread(WatchableThread): self._test_types = test_types self._test_args = test_args self._driver = None - self._directory_timing_stats = {} + self._test_group_timing_stats = {} self._test_results = [] self._num_tests = 0 self._start_time = 0 self._stop_time = 0 - - # Current directory of tests we're running. - self._current_dir = None - # Number of tests in self._current_dir. - self._num_tests_in_current_dir = None - # Time at which we started running tests from self._current_dir. - self._current_dir_start_time = None - - def get_directory_timing_stats(self): - """Returns a dictionary mapping test directory to a tuple of - (number of tests in that directory, time to run the tests)""" - return self._directory_timing_stats + self._have_http_lock = False + self._http_lock_wait_begin = 0 + self._http_lock_wait_end = 0 + + # Current group of tests we're running. + self._current_group = None + # Number of tests in self._current_group. + self._num_tests_in_current_group = None + # Time at which we started running tests from self._current_group. + self._current_group_start_time = None + + def get_test_group_timing_stats(self): + """Returns a dictionary mapping test group to a tuple of + (number of tests in that group, time to run the tests)""" + return self._test_group_timing_stats def get_test_results(self): """Return the list of all tests run on this thread. @@ -298,7 +302,8 @@ class TestShellThread(WatchableThread): return self._test_results def get_total_time(self): - return max(self._stop_time - self._start_time, 0.0) + return max(self._stop_time - self._start_time - + self._http_lock_wait_time(), 0.0) def get_num_tests(self): return self._num_tests @@ -337,6 +342,25 @@ class TestShellThread(WatchableThread): do multi-threaded debugging.""" self._run(test_runner, result_summary) + def cancel(self): + """Clean up http lock and set a flag telling this thread to quit.""" + self._stop_http_lock() + WatchableThread.cancel(self) + + def next_timeout(self): + """Return the time the test is supposed to finish by.""" + if self._next_timeout: + return self._next_timeout + self._http_lock_wait_time() + return self._next_timeout + + def _http_lock_wait_time(self): + """Return the time what http locking takes.""" + if self._http_lock_wait_begin == 0: + return 0 + if self._http_lock_wait_end == 0: + return time.time() - self._http_lock_wait_begin + return self._http_lock_wait_end - self._http_lock_wait_begin + def _run(self, test_runner, result_summary): """Main work entry point of the thread. Basically we pull urls from the filename queue and run the tests until we run out of urls. @@ -359,21 +383,35 @@ class TestShellThread(WatchableThread): return if len(self._filename_list) is 0: - if self._current_dir is not None: - self._directory_timing_stats[self._current_dir] = \ - (self._num_tests_in_current_dir, - time.time() - self._current_dir_start_time) + if self._current_group is not None: + self._test_group_timing_stats[self._current_group] = \ + (self._num_tests_in_current_group, + time.time() - self._current_group_start_time) try: - self._current_dir, self._filename_list = \ + self._current_group, self._filename_list = \ self._filename_list_queue.get_nowait() except Queue.Empty: + self._stop_http_lock() self._kill_dump_render_tree() tests_run_file.close() return - self._num_tests_in_current_dir = len(self._filename_list) - self._current_dir_start_time = time.time() + if self._options.wait_for_httpd: + if self._current_group == "tests_to_http_lock": + self._http_lock_wait_begin = time.time() + self._port.acquire_http_lock() + + self._port.start_http_server() + self._port.start_websocket_server() + + self._have_http_lock = True + self._http_lock_wait_end = time.time() + elif self._have_http_lock: + self._stop_http_lock() + + self._num_tests_in_current_group = len(self._filename_list) + self._current_group_start_time = time.time() test_info = self._filename_list.pop() @@ -517,6 +555,14 @@ class TestShellThread(WatchableThread): self._options) self._driver.start() + def _stop_http_lock(self): + """Stop the servers and release http lock.""" + if self._have_http_lock: + self._port.stop_http_server() + self._port.stop_websocket_server() + self._port.release_http_lock() + self._have_http_lock = False + def _kill_dump_render_tree(self): """Kill the DumpRenderTree process if it's running.""" if self._driver: |