Changeset 247550 in webkit
- Timestamp:
- Jul 17, 2019 6:05:51 PM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r247545 r247550 1 2019-07-17 Carlos Alberto Lopez Perez <clopez@igalia.com> 2 3 [GTK][WPE][webkitpy] Refactor drivers to use the base driver for setting up the environment and start the drivers. 4 https://bugs.webkit.org/show_bug.cgi?id=199855 5 6 Reviewed by Michael Catanzaro. 7 8 The webkitpy drivers for GTK and WPE use their own versions for setting 9 up the environment and starting/stopping the drivers. 10 This refactors those drivers to use the base class driver functions. 11 As a benefit we get some fixes like support for setting the profiler 12 environment variables, and a simpler code. 13 14 * Scripts/webkitpy/port/driver.py: 15 (Driver._setup_environ_for_driver): This already correctly setups LOCAL_RESOURCE_ROOT and DUMPRENDERTREE_TEMP. 16 Add the remaining environment variable XDG_CACHE_HOME that is needed for Linux. 17 * Scripts/webkitpy/port/headlessdriver.py: 18 (HeadlessDriver._setup_environ_for_test): 19 * Scripts/webkitpy/port/waylanddriver.py: 20 (WaylandDriver._setup_environ_for_test): 21 * Scripts/webkitpy/port/westondriver.py: 22 (WestonDriver._setup_environ_for_test): 23 (WestonDriver.stop): 24 * Scripts/webkitpy/port/westondriver_unittest.py: now mock _test_runner_process_constructor as base driver does. 25 (WestonDriverTest.make_driver): 26 * Scripts/webkitpy/port/xorgdriver.py: 27 (XorgDriver._setup_environ_for_test): 28 * Scripts/webkitpy/port/xvfbdriver.py: the xvfb binary is started with the port server env 29 (XvfbDriver._setup_environ_for_test): 30 * Scripts/webkitpy/port/xvfbdriver_unittest.py: rename the variable to make clearer that it uses the port server env. 31 (XvfbDriverTest.make_driver): 32 (XvfbDriverTest.test_start): 33 (XvfbDriverTest.test_start_arbitrary_worker_number): 34 * Scripts/webkitpy/w3c/wpt_runner.py: 35 (main): Start the driver before trying to get its environment to define all the environment variables. 36 * Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py: 37 (WebDriverTestRunner.__init__): Ditto. 38 * glib/api_test_runner.py: 39 (TestRunner._setup_testing_environment): Ditto. 40 1 41 2019-07-17 Antoine Quint <graouts@apple.com> 2 42 -
trunk/Tools/Scripts/webkitpy/port/driver.py
r247514 r247550 433 433 environment['__XPC_SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS'] = environment['SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS'] 434 434 435 if sys.platform.startswith('linux'): 436 # Currently on WebKit2, there is no API for setting the application cache directory. 437 # Each worker should have it's own and it should be cleaned afterwards. 438 # Set it to inside the temporary folder by prepending XDG_CACHE_HOME with DRIVER_TEMPDIR. 439 environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache') 440 435 441 if self._profiler: 436 442 environment = self._profiler.adjusted_environment(environment) -
trunk/Tools/Scripts/webkitpy/port/headlessdriver.py
r247514 r247550 39 39 class HeadlessDriver(Driver): 40 40 def _setup_environ_for_test(self): 41 driver_environment = s elf._port.setup_environ_for_server(self._server_name)41 driver_environment = super(HeadlessDriver, self)._setup_environ_for_test() 42 42 driver_environment['WPE_USE_HEADLESS_VIEW_BACKEND'] = "1" 43 driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()44 if self._driver_tempdir is not None:45 driver_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)46 driver_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')47 43 return driver_environment 48 49 def _start(self, pixel_tests, per_test_args):50 super(HeadlessDriver, self).stop()51 self._driver_tempdir = self._port._driver_tempdir(self._target_host)52 self._crashed_process_name = None53 self._crashed_pid = None54 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())55 self._server_process.start() -
trunk/Tools/Scripts/webkitpy/port/waylanddriver.py
r247514 r247550 46 46 47 47 def _setup_environ_for_test(self): 48 driver_environment = s elf._port.setup_environ_for_server(self._server_name)48 driver_environment = super(WaylandDriver, self)._setup_environ_for_test() 49 49 self._port._copy_value_from_environ_if_set(driver_environment, 'WAYLAND_DISPLAY') 50 50 self._port._copy_value_from_environ_if_set(driver_environment, 'WAYLAND_SOCKET') 51 51 driver_environment['GDK_BACKEND'] = 'wayland' 52 52 driver_environment['EGL_PLATFORM'] = 'wayland' 53 driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()54 if self._driver_tempdir is not None:55 driver_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)56 driver_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')57 53 return driver_environment 58 59 def _start(self, pixel_tests, per_test_args):60 super(WaylandDriver, self).stop()61 self._driver_tempdir = self._port._driver_tempdir(self._target_host)62 self._crashed_process_name = None63 self._crashed_pid = None64 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())65 self._server_process.start() -
trunk/Tools/Scripts/webkitpy/port/westondriver.py
r247514 r247550 56 56 57 57 def _setup_environ_for_test(self): 58 driver_environment = s elf._port.setup_environ_for_server(self._server_name)58 driver_environment = super(WestonDriver, self)._setup_environ_for_test() 59 59 driver_environment['DISPLAY'] = ":%d" % self._xvfbdriver._xvfb_run(driver_environment) 60 60 weston_socket = 'WKTesting-weston-%032x' % random.getrandbits(128) … … 68 68 time.sleep(self._startup_delay_secs) 69 69 70 driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()71 if self._driver_tempdir is not None:72 # Currently on WebKit2, there is no API for setting the application cache directory.73 # Each worker should have its own and it should be cleaned afterwards, when the worker stops.74 driver_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')75 driver_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)76 70 driver_environment['WAYLAND_DISPLAY'] = weston_socket 77 71 driver_environment['GDK_BACKEND'] = 'wayland' … … 80 74 return driver_environment 81 75 82 def _start(self, pixel_tests, per_test_args):83 self.stop()84 self._driver_tempdir = self._port._driver_tempdir(self._target_host)85 self._crashed_process_name = None86 self._crashed_pid = None87 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())88 self._server_process.start()89 76 90 77 def stop(self): … … 94 81 self._weston_process.terminate() 95 82 self._weston_process = None 96 -
trunk/Tools/Scripts/webkitpy/port/westondriver_unittest.py
r247514 r247550 54 54 port = Port(MockSystemHost(log_executive=True), 'westondrivertestport', options=MockOptions(configuration='Release')) 55 55 port._config.build_directory = lambda configuration: "/mock_build" 56 port._ server_process_constructor = MockServerProcess56 port._test_runner_process_constructor = MockServerProcess 57 57 58 58 driver = WestonDriver(port, worker_number=0, pixel_tests=True) -
trunk/Tools/Scripts/webkitpy/port/xorgdriver.py
r247514 r247550 46 46 47 47 def _setup_environ_for_test(self): 48 server_environment = s elf._port.setup_environ_for_server(self._server_name)48 server_environment = super(XorgDriver, self)._setup_environ_for_test() 49 49 self._port._copy_value_from_environ_if_set(server_environment, 'DISPLAY') 50 50 self._port._copy_value_from_environ_if_set(server_environment, 'XAUTHORITY') 51 51 server_environment['GDK_BACKEND'] = 'x11' 52 server_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()53 if self._driver_tempdir is not None:54 server_environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)55 # Currently on WebKit2, there is no API for setting the application56 # cache directory. Each worker should have it's own and it should be57 # cleaned afterwards, so we set it to inside the temporary folder by58 # prepending XDG_CACHE_HOME with DUMPRENDERTREE_TEMP.59 server_environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')60 52 return server_environment 61 62 def _start(self, pixel_tests, per_test_args):63 super(XorgDriver, self).stop()64 65 self._driver_tempdir = self._port._driver_tempdir(self._target_host)66 67 self._crashed_process_name = None68 self._crashed_pid = None69 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())70 self._server_process.start() -
trunk/Tools/Scripts/webkitpy/port/xvfbdriver.py
r247514 r247550 94 94 95 95 def _setup_environ_for_test(self): 96 environment = self._port.setup_environ_for_server(self._server_name) 97 display_id = self._xvfb_run(environment) 96 port_server_environment = self._port.setup_environ_for_server(self._server_name) 97 driver_environment = super(XvfbDriver, self)._setup_environ_for_test() 98 display_id = self._xvfb_run(port_server_environment) 98 99 99 100 # We must do this here because the DISPLAY number depends on _worker_number 100 environment['DISPLAY'] = ":%d" % display_id 101 environment['UNDER_XVFB'] = 'yes' 102 environment['GDK_BACKEND'] = 'x11' 103 environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir() 104 if self._driver_tempdir is not None: 105 environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir) 106 # Currently on WebKit2, there is no API for setting the application 107 # cache directory. Each worker should have it's own and it should be 108 # cleaned afterwards, so we set it to inside the temporary folder by 109 # prepending XDG_CACHE_HOME with DUMPRENDERTREE_TEMP. 110 environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache') 111 return environment 112 113 def _start(self, pixel_tests, per_test_args): 114 self.stop() 115 self._driver_tempdir = self._port._driver_tempdir(self._target_host) 116 self._crashed_process_name = None 117 self._crashed_pid = None 118 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()) 119 self._server_process.start() 101 driver_environment['DISPLAY'] = ":%d" % display_id 102 driver_environment['UNDER_XVFB'] = 'yes' 103 driver_environment['GDK_BACKEND'] = 'x11' 104 driver_environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir() 105 return driver_environment 120 106 121 107 def stop(self): -
trunk/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py
r247514 r247550 46 46 port = Port(MockSystemHost(log_executive=True, executive=executive), 'xvfbdrivertestport', options=MockOptions(configuration='Release')) 47 47 port._config.build_directory = lambda configuration: "/mock-build" 48 port._ server_process_constructor = MockServerProcess48 port._test_runner_process_constructor = MockServerProcess 49 49 if xorg_running: 50 50 port._executive._running_pids['Xorg'] = 108 … … 56 56 driver._xvfb_read_display_id = lambda x: 1 57 57 driver._xvfb_close_pipe = lambda p: None 58 driver._ environment = port.setup_environ_for_server(port.driver_name())58 driver._port_server_environment = port.setup_environ_for_server(port.driver_name()) 59 59 return driver 60 60 … … 73 73 def test_start(self): 74 74 driver = self.make_driver() 75 expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._ environment)75 expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._port_server_environment) 76 76 self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":1") 77 77 self.cleanup_driver(driver) … … 79 79 def test_start_arbitrary_worker_number(self): 80 80 driver = self.make_driver(worker_number=17) 81 expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._ environment)81 expected_logs = ("MOCK popen: ['Xvfb', '-displayfd', '4', '-screen', '0', '1024x768x24', '-nolisten', 'tcp'], env=%s\n" % driver._port_server_environment) 82 82 self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":1", pixel_tests=True) 83 83 self.cleanup_driver(driver) -
trunk/Tools/Scripts/webkitpy/w3c/wpt_runner.py
r237790 r247550 81 81 port._display_server = options.display_server 82 82 display_driver = port.create_driver(worker_number=0, no_timeout=True)._make_driver(pixel_tests=False) 83 display_driver.start(False, []) 83 84 if not display_driver.check_driver(port): 84 85 raise RuntimeError("Failed to check driver %s" % display_driver.__class__.__name__) -
trunk/Tools/Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py
r239540 r247550 61 61 _log.warning('Test %s does not exist' % test) 62 62 63 self._display_driver.start(False, []) 63 64 env = self._display_driver._setup_environ_for_test() 64 65 self._runners = [runner_cls(self._port, driver, env, self._expectations) for runner_cls in self.RUNNER_CLASSES] -
trunk/Tools/glib/api_test_runner.py
r246189 r247550 106 106 107 107 def _setup_testing_environment(self): 108 self._driver.start(False, []) 108 109 self._test_env = self._driver._setup_environ_for_test() 109 110 self._test_env["TEST_WEBKIT_API_WEBKIT2_RESOURCES_PATH"] = common.top_level_path("Tools", "TestWebKitAPI", "Tests", "WebKit")
Note: See TracChangeset
for help on using the changeset viewer.