Diff
Modified: trunk/Tools/ChangeLog (228013 => 228014)
--- trunk/Tools/ChangeLog 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/ChangeLog 2018-02-02 17:25:24 UTC (rev 228014)
@@ -1,5 +1,32 @@
2018-02-02 Carlos Garcia Campos <cgar...@igalia.com>
+ [GTK] WebDriver: tests step always times out in the bot
+ https://bugs.webkit.org/show_bug.cgi?id=182437
+
+ Reviewed by Carlos Alberto Lopez Perez.
+
+ The process itself is not timing out, but the buildbot step is. This is because we are leaking the Xvfb
+ processes. We should ensure that only one driver is executed and it's stopped before the process finishes.
+
+ * Scripts/run-webdriver-tests: Call teardown() after run().
+ * Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py:
+ (WebDriverSeleniumExecutor.__init__): Receive the env directly instead of the display driver.
+ * Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:
+ (WebDriverTestRunner.__init__): Use the driver class directly instead of using the DriverProxy. Get the env from
+ the display driver once and pass it to the test runners.
+ (WebDriverTestRunner.teardown): Stop the display server.
+ * Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:
+ (WebDriverTestRunnerSelenium.__init__): Receive the env directly instead of the display driver.
+ (WebDriverTestRunnerSelenium.collect_tests): Pass the env to the executor.
+ (WebDriverTestRunnerSelenium.run): Ditto.
+ * Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:
+ (WebDriverTestRunnerW3C.__init__): Receive the env directly instead of the display driver.
+ (WebDriverTestRunnerW3C.run): Pass the env to the executor.
+ * Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:
+ (WebDriverW3CExecutor.__init__): Receive the env directly instead of the display driver.
+
+2018-02-02 Carlos Garcia Campos <cgar...@igalia.com>
+
Unreviewed, rolling out r227999.
It didn't fix the problem
Modified: trunk/Tools/Scripts/run-webdriver-tests (228013 => 228014)
--- trunk/Tools/Scripts/run-webdriver-tests 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/Scripts/run-webdriver-tests 2018-02-02 17:25:24 UTC (rev 228014)
@@ -77,6 +77,7 @@
port._display_server = options.display_server
runner = WebDriverTestRunner(port)
runner.run(args)
+runner.teardown()
retval = runner.process_results()
if options.json_output is not None:
Modified: trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py (228013 => 228014)
--- trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py 2018-02-02 17:25:24 UTC (rev 228014)
@@ -40,9 +40,9 @@
class WebDriverSeleniumExecutor(object):
- def __init__(self, driver, display_driver):
+ def __init__(self, driver, env):
self._driver_name = driver.selenium_name()
- self._env = display_driver._setup_environ_for_test()
+ self._env = env
self._env.update(driver.browser_env())
self._args = ['--driver=%s' % self._driver_name, '--driver-binary=%s' % driver.binary_path().encode()]
Modified: trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py (228013 => 228014)
--- trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py 2018-02-02 17:25:24 UTC (rev 228014)
@@ -43,7 +43,7 @@
_log.info('Test configuration: %s' % self._port.test_configuration())
_log.info('Using display server %s' % (self._port._display_server))
- self._display_driver = self._port.create_driver(worker_number=0, no_timeout=True)._make_driver(pixel_tests=False)
+ self._display_driver = self._port._driver_class()(self._port, worker_number=0, pixel_tests=False, no_timeout=True)
if not self._display_driver.check_driver(self._port):
raise RuntimeError("Failed to check driver %s" % self._display_driver.__class__.__name__)
@@ -57,8 +57,12 @@
build_type = 'Debug' if self._port.get_option('debug') else 'Release'
self._expectations = TestExpectations(self._port.name(), expectations_file, build_type)
- self._runners = [runner_cls(self._port, driver, self._display_driver, self._expectations) for runner_cls in self.RUNNER_CLASSES]
+ env = self._display_driver._setup_environ_for_test()
+ self._runners = [runner_cls(self._port, driver, env, self._expectations) for runner_cls in self.RUNNER_CLASSES]
+ def teardown(self):
+ self._display_driver.stop()
+
def run(self, tests=[]):
runner_tests = [runner.collect_tests(tests) for runner in self._runners]
collected_count = sum([len(tests) for tests in runner_tests])
Modified: trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py (228013 => 228014)
--- trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py 2018-02-02 17:25:24 UTC (rev 228014)
@@ -34,10 +34,10 @@
class WebDriverTestRunnerSelenium(object):
- def __init__(self, port, driver, display_driver, expectations):
+ def __init__(self, port, driver, env, expectations):
self._port = port
self._driver = driver
- self._display_driver = display_driver
+ self._env = env
self._expectations = expectations
self._results = []
self._tests_dir = WebKitFinder(self._port.host.filesystem).path_from_webkit_base('WebDriverTests')
@@ -48,7 +48,7 @@
skipped = [os.path.join(self._tests_dir, test) for test in self._expectations.skipped_tests()]
relative_tests_dir = os.path.join('imported', 'selenium', 'py', 'test')
- executor = WebDriverSeleniumExecutor(self._driver, self._display_driver)
+ executor = WebDriverSeleniumExecutor(self._driver, self._env)
# Collected tests are relative to test directory.
base_dir = os.path.join(self._tests_dir, os.path.dirname(relative_tests_dir))
collected_tests = [os.path.join(base_dir, test) for test in executor.collect(os.path.join(self._tests_dir, relative_tests_dir))]
@@ -69,7 +69,7 @@
if self._driver.selenium_name() is None:
return
- executor = WebDriverSeleniumExecutor(self._driver, self._display_driver)
+ executor = WebDriverSeleniumExecutor(self._driver, self._env)
timeout = self._port.get_option('timeout')
for test in tests:
test_name = os.path.relpath(test, self._tests_dir)
Modified: trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py (228013 => 228014)
--- trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py 2018-02-02 17:25:24 UTC (rev 228014)
@@ -35,10 +35,10 @@
class WebDriverTestRunnerW3C(object):
- def __init__(self, port, driver, display_driver, expectations):
+ def __init__(self, port, driver, env, expectations):
self._port = port
self._driver = driver
- self._display_driver = display_driver
+ self._env = env
self._expectations = expectations
self._results = []
self._tests_dir = WebKitFinder(self._port.host.filesystem).path_from_webkit_base('WebDriverTests')
@@ -86,7 +86,7 @@
def run(self, tests=[]):
self._server.start()
- executor = WebDriverW3CExecutor(self._driver, self._server, self._display_driver, self._port.get_option('timeout'), self._expectations)
+ executor = WebDriverW3CExecutor(self._driver, self._server, self._env, self._port.get_option('timeout'), self._expectations)
executor.setup()
need_restart = False
try:
Modified: trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py (228013 => 228014)
--- trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py 2018-02-02 17:20:12 UTC (rev 228013)
+++ trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py 2018-02-02 17:25:24 UTC (rev 228014)
@@ -130,8 +130,8 @@
class WebDriverW3CExecutor(WdspecExecutor):
protocol_cls = WebKitDriverProtocol
- def __init__(self, driver, server, display_driver, timeout, expectations):
- WebKitDriverServer.test_env = display_driver._setup_environ_for_test()
+ def __init__(self, driver, server, env, timeout, expectations):
+ WebKitDriverServer.test_env = env
WebKitDriverServer.test_env.update(driver.browser_env())
server_config = {'host': server.host(), 'domains': {'': server.host()}, 'ports': {'http': [str(server.port())]}}
WdspecExecutor.__init__(self, driver.browser_name(), server_config, driver.binary_path(), None, capabilities=driver.capabilities())