Diff
Modified: trunk/Tools/ChangeLog (247549 => 247550)
--- trunk/Tools/ChangeLog 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/ChangeLog 2019-07-18 01:05:51 UTC (rev 247550)
@@ -1,3 +1,43 @@
+2019-07-17 Carlos Alberto Lopez Perez <clo...@igalia.com>
+
+ [GTK][WPE][webkitpy] Refactor drivers to use the base driver for setting up the environment and start the drivers.
+ https://bugs.webkit.org/show_bug.cgi?id=199855
+
+ Reviewed by Michael Catanzaro.
+
+ The webkitpy drivers for GTK and WPE use their own versions for setting
+ up the environment and starting/stopping the drivers.
+ This refactors those drivers to use the base class driver functions.
+ As a benefit we get some fixes like support for setting the profiler
+ environment variables, and a simpler code.
+
+ * Scripts/webkitpy/port/driver.py:
+ (Driver._setup_environ_for_driver): This already correctly setups LOCAL_RESOURCE_ROOT and DUMPRENDERTREE_TEMP.
+ Add the remaining environment variable XDG_CACHE_HOME that is needed for Linux.
+ * Scripts/webkitpy/port/headlessdriver.py:
+ (HeadlessDriver._setup_environ_for_test):
+ * Scripts/webkitpy/port/waylanddriver.py:
+ (WaylandDriver._setup_environ_for_test):
+ * Scripts/webkitpy/port/westondriver.py:
+ (WestonDriver._setup_environ_for_test):
+ (WestonDriver.stop):
+ * Scripts/webkitpy/port/westondriver_unittest.py: now mock _test_runner_process_constructor as base driver does.
+ (WestonDriverTest.make_driver):
+ * Scripts/webkitpy/port/xorgdriver.py:
+ (XorgDriver._setup_environ_for_test):
+ * Scripts/webkitpy/port/xvfbdriver.py: the xvfb binary is started with the port server env
+ (XvfbDriver._setup_environ_for_test):
+ * Scripts/webkitpy/port/xvfbdriver_unittest.py: rename the variable to make clearer that it uses the port server env.
+ (XvfbDriverTest.make_driver):
+ (XvfbDriverTest.test_start):
+ (XvfbDriverTest.test_start_arbitrary_worker_number):
+ * Scripts/webkitpy/w3c/wpt_runner.py:
+ (main): Start the driver before trying to get its environment to define all the environment variables.
+ * Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:
+ (WebDriverTestRunner.__init__): Ditto.
+ * glib/api_test_runner.py:
+ (TestRunner._setup_testing_environment): Ditto.
+
2019-07-17 Antoine Quint <grao...@apple.com>
Disable Pointer Events prior to watchOS 6
Modified: trunk/Tools/Scripts/webkitpy/port/driver.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/driver.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/driver.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -432,6 +432,12 @@
environment['SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS'] = os.path.realpath(environment['DUMPRENDERTREE_TEMP'])
environment['__XPC_SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS'] = environment['SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS']
+ if sys.platform.startswith('linux'):
+ # Currently on WebKit2, there is no API for setting the application cache directory.
+ # Each worker should have it's own and it should be cleaned afterwards.
+ # Set it to inside the temporary folder by prepending XDG_CACHE_HOME with DRIVER_TEMPDIR.
+ environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
+
if self._profiler:
environment = self._profiler.adjusted_environment(environment)
return environment
Modified: trunk/Tools/Scripts/webkitpy/port/headlessdriver.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/headlessdriver.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/headlessdriver.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -38,18 +38,6 @@
class HeadlessDriver(Driver):
def _setup_environ_for_test(self):
- driver_environment = self._port.setup_environ_for_server(self._server_name)
+ driver_environment = super(HeadlessDriver, self)._setup_environ_for_test()
driver_environment['WPE_USE_HEADLESS_VIEW_BACKEND'] = "1"
- driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
- if self._driver_tempdir is not None:
- driver_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
- driver_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
return driver_environment
-
- def _start(self, pixel_tests, per_test_args):
- super(HeadlessDriver, self).stop()
- self._driver_tempdir = self._port._driver_tempdir(self._target_host)
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, self._server_name, self.cmd_line(pixel_tests, per_test_args), self._setup_environ_for_test())
- self._server_process.start()
Modified: trunk/Tools/Scripts/webkitpy/port/waylanddriver.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/waylanddriver.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/waylanddriver.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -45,21 +45,9 @@
return True
def _setup_environ_for_test(self):
- driver_environment = self._port.setup_environ_for_server(self._server_name)
+ driver_environment = super(WaylandDriver, self)._setup_environ_for_test()
self._port._copy_value_from_environ_if_set(driver_environment, 'WAYLAND_DISPLAY')
self._port._copy_value_from_environ_if_set(driver_environment, 'WAYLAND_SOCKET')
driver_environment['GDK_BACKEND'] = 'wayland'
driver_environment['EGL_PLATFORM'] = 'wayland'
- driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
- if self._driver_tempdir is not None:
- driver_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
- driver_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
return driver_environment
-
- def _start(self, pixel_tests, per_test_args):
- super(WaylandDriver, self).stop()
- self._driver_tempdir = self._port._driver_tempdir(self._target_host)
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, self._server_name, self.cmd_line(pixel_tests, per_test_args), self._setup_environ_for_test())
- self._server_process.start()
Modified: trunk/Tools/Scripts/webkitpy/port/westondriver.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/westondriver.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/westondriver.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -55,7 +55,7 @@
self._xvfbdriver = XvfbDriver(*args, **kwargs)
def _setup_environ_for_test(self):
- driver_environment = self._port.setup_environ_for_server(self._server_name)
+ driver_environment = super(WestonDriver, self)._setup_environ_for_test()
driver_environment['DISPLAY'] = ":%d" % self._xvfbdriver._xvfb_run(driver_environment)
weston_socket = 'WKTesting-weston-%032x' % random.getrandbits(128)
weston_command = ['weston', '--socket=%s' % weston_socket, '--width=1024', '--height=768', '--use-pixman']
@@ -67,12 +67,6 @@
# Give Weston a bit of time to set itself up.
time.sleep(self._startup_delay_secs)
- driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
- if self._driver_tempdir is not None:
- # Currently on WebKit2, there is no API for setting the application cache directory.
- # Each worker should have its own and it should be cleaned afterwards, when the worker stops.
- driver_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
- driver_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
driver_environment['WAYLAND_DISPLAY'] = weston_socket
driver_environment['GDK_BACKEND'] = 'wayland'
if driver_environment.get('DISPLAY'):
@@ -79,13 +73,6 @@
del driver_environment['DISPLAY']
return driver_environment
- def _start(self, pixel_tests, per_test_args):
- self.stop()
- self._driver_tempdir = self._port._driver_tempdir(self._target_host)
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, self._server_name, self.cmd_line(pixel_tests, per_test_args), self._setup_environ_for_test())
- self._server_process.start()
def stop(self):
super(WestonDriver, self).stop()
@@ -93,4 +80,3 @@
# The Weston process is terminated instead of killed, giving the Weston a chance to clean up after itself.
self._weston_process.terminate()
self._weston_process = None
-
Modified: trunk/Tools/Scripts/webkitpy/port/westondriver_unittest.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/westondriver_unittest.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/westondriver_unittest.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -53,7 +53,7 @@
def make_driver(self):
port = Port(MockSystemHost(log_executive=True), 'westondrivertestport', options=MockOptions(configuration='Release'))
port._config.build_directory = lambda configuration: "/mock_build"
- port._server_process_constructor = MockServerProcess
+ port._test_runner_process_constructor = MockServerProcess
driver = WestonDriver(port, worker_number=0, pixel_tests=True)
driver._startup_delay_secs = 0
Modified: trunk/Tools/Scripts/webkitpy/port/xorgdriver.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/xorgdriver.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/xorgdriver.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -45,26 +45,8 @@
return True
def _setup_environ_for_test(self):
- server_environment = self._port.setup_environ_for_server(self._server_name)
+ server_environment = super(XorgDriver, self)._setup_environ_for_test()
self._port._copy_value_from_environ_if_set(server_environment, 'DISPLAY')
self._port._copy_value_from_environ_if_set(server_environment, 'XAUTHORITY')
server_environment['GDK_BACKEND'] = 'x11'
- server_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
- if self._driver_tempdir is not None:
- server_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
- # Currently on WebKit2, there is no API for setting the application
- # cache directory. Each worker should have it's own and it should be
- # cleaned afterwards, so we set it to inside the temporary folder by
- # prepending XDG_CACHE_HOME with DUMPRENDERTREE_TEMP.
- server_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
return server_environment
-
- def _start(self, pixel_tests, per_test_args):
- super(XorgDriver, self).stop()
-
- self._driver_tempdir = self._port._driver_tempdir(self._target_host)
-
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, self._server_name, self.cmd_line(pixel_tests, per_test_args), self._setup_environ_for_test())
- self._server_process.start()
Modified: trunk/Tools/Scripts/webkitpy/port/xvfbdriver.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/xvfbdriver.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/xvfbdriver.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -93,31 +93,17 @@
return os.environ.get('XVFB_SCREEN_DEPTH', '24')
def _setup_environ_for_test(self):
- environment = self._port.setup_environ_for_server(self._server_name)
- display_id = self._xvfb_run(environment)
+ port_server_environment = self._port.setup_environ_for_server(self._server_name)
+ driver_environment = super(XvfbDriver, self)._setup_environ_for_test()
+ display_id = self._xvfb_run(port_server_environment)
# We must do this here because the DISPLAY number depends on _worker_number
- environment['DISPLAY'] = ":%d" % display_id
- environment['UNDER_XVFB'] = 'yes'
- environment['GDK_BACKEND'] = 'x11'
- environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
- if self._driver_tempdir is not None:
- environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
- # Currently on WebKit2, there is no API for setting the application
- # cache directory. Each worker should have it's own and it should be
- # cleaned afterwards, so we set it to inside the temporary folder by
- # prepending XDG_CACHE_HOME with DUMPRENDERTREE_TEMP.
- environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
- return environment
+ driver_environment['DISPLAY'] = ":%d" % display_id
+ driver_environment['UNDER_XVFB'] = 'yes'
+ driver_environment['GDK_BACKEND'] = 'x11'
+ driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
+ return driver_environment
- def _start(self, pixel_tests, per_test_args):
- self.stop()
- self._driver_tempdir = self._port._driver_tempdir(self._target_host)
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, self._server_name, self.cmd_line(pixel_tests, per_test_args), self._setup_environ_for_test())
- self._server_process.start()
-
def stop(self):
super(XvfbDriver, self).stop()
if getattr(self, '_xvfb_process', None):
Modified: trunk/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -45,7 +45,7 @@
def make_driver(self, worker_number=0, xorg_running=False, executive=None):
port = Port(MockSystemHost(log_executive=True, executive=executive), 'xvfbdrivertestport', options=MockOptions(configuration='Release'))
port._config.build_directory = lambda configuration: "/mock-build"
- port._server_process_constructor = MockServerProcess
+ port._test_runner_process_constructor = MockServerProcess
if xorg_running:
port._executive._running_pids['Xorg'] = 108
@@ -55,7 +55,7 @@
driver._xvfb_pipe = lambda: (3, 4)
driver._xvfb_read_display_id = lambda x: 1
driver._xvfb_close_pipe = lambda p: None
- driver._environment = port.setup_environ_for_server(port.driver_name())
+ driver._port_server_environment = port.setup_environ_for_server(port.driver_name())
return driver
def cleanup_driver(self, driver):
@@ -72,13 +72,13 @@
def test_start(self):
driver = self.make_driver()
- expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._environment)
+ expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._port_server_environment)
self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":1")
self.cleanup_driver(driver)
def test_start_arbitrary_worker_number(self):
driver = self.make_driver(worker_number=17)
- expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._environment)
+ expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._port_server_environment)
self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":1", pixel_tests=True)
self.cleanup_driver(driver)
Modified: trunk/Tools/Scripts/webkitpy/w3c/wpt_runner.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/w3c/wpt_runner.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/w3c/wpt_runner.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -80,6 +80,7 @@
# Create the Port-specific driver.
port._display_server = options.display_server
display_driver = port.create_driver(worker_number=0, no_timeout=True)._make_driver(pixel_tests=False)
+ display_driver.start(False, [])
if not display_driver.check_driver(port):
raise RuntimeError("Failed to check driver %s" % display_driver.__class__.__name__)
os.environ.update(display_driver._setup_environ_for_test())
Modified: trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py (247549 => 247550)
--- trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -60,6 +60,7 @@
if not os.path.isfile(os.path.join(self._tests_dir, test)):
_log.warning('Test %s does not exist' % test)
+ self._display_driver.start(False, [])
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]
Modified: trunk/Tools/glib/api_test_runner.py (247549 => 247550)
--- trunk/Tools/glib/api_test_runner.py 2019-07-18 00:36:39 UTC (rev 247549)
+++ trunk/Tools/glib/api_test_runner.py 2019-07-18 01:05:51 UTC (rev 247550)
@@ -105,6 +105,7 @@
return driver
def _setup_testing_environment(self):
+ self._driver.start(False, [])
self._test_env = self._driver._setup_environ_for_test()
self._test_env["TEST_WEBKIT_API_WEBKIT2_RESOURCES_PATH"] = common.top_level_path("Tools", "TestWebKitAPI", "Tests", "WebKit")
self._test_env["TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_PATH"] = common.library_build_path()