Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1315)

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py

Issue 2836403003: Add Xvfb debugging code to run-webkit-tests. (Closed)
Patch Set: tweak output Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/base.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
index 9147c2ccdadea819aa98528973f160c6b854e8cd..4f559c422f0fa8a9947e571d7fdd33294370c57a 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py
@@ -27,6 +27,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import logging
+import tempfile
from webkitpy.layout_tests.breakpad.dump_reader_multipart import DumpReaderLinux
from webkitpy.layout_tests.port import base
@@ -67,6 +68,8 @@ class LinuxPort(base.Port):
self._original_home = None
self._original_display = None
self._xvfb_process = None
+ self._xvfb_stdout = None
+ self._xvfb_stderr = None
def additional_driver_flag(self):
flags = super(LinuxPort, self).additional_driver_flag()
@@ -153,9 +156,11 @@ class LinuxPort(base.Port):
return
_log.info('Starting Xvfb with display "%s".', display)
+ self._xvfb_stdout = tempfile.NamedTemporaryFile(delete=False)
+ self._xvfb_stderr = tempfile.NamedTemporaryFile(delete=False)
self._xvfb_process = self.host.executive.popen(
['Xvfb', display, '-screen', '0', '1280x800x24', '-ac', '-dpi', '96'],
- stderr=self.host.executive.DEVNULL)
+ stdout=self._xvfb_stdout, stderr=self._xvfb_stderr)
# By setting DISPLAY here, the individual worker processes will
# get the right DISPLAY. Note, if this environment could be passed
@@ -167,6 +172,7 @@ class LinuxPort(base.Port):
# https://docs.python.org/2/library/subprocess.html#subprocess.Popen.poll
if self._xvfb_process.poll() is not None:
_log.warn('Failed to start Xvfb on display "%s."', display)
+ self._stop_xvfb()
def _find_display(self):
"""Tries to find a free X display, looping if necessary."""
@@ -182,11 +188,23 @@ class LinuxPort(base.Port):
def _stop_xvfb(self):
if self._original_display:
self.host.environ['DISPLAY'] = self._original_display
- if not self._xvfb_process:
- return
- _log.debug('Killing Xvfb process pid %d.', self._xvfb_process.pid)
- self._xvfb_process.kill()
- self._xvfb_process.wait()
+ if self._xvfb_stdout:
+ self._xvfb_stdout.close()
+ if self._xvfb_stderr:
+ self._xvfb_stderr.close()
+ if self._xvfb_process:
+ _log.debug('Killing Xvfb process pid %d.', self._xvfb_process.pid)
+ self._xvfb_process.kill()
+ self._xvfb_process.wait()
+ if self._xvfb_stdout and self.host.filesystem.exists(self._xvfb_stdout.name):
+ for line in self.host.filesystem.read_text_file(self._xvfb_stdout.name).splitlines():
+ _log.warn('Xvfb stdout: %s', line)
+ self.host.filesystem.remove(self._xvfb_stdout.name)
+ if self._xvfb_stderr and self.host.filesystem.exists(self._xvfb_stderr.name):
+ for line in self.host.filesystem.read_text_file(self._xvfb_stderr.name).splitlines():
+ _log.warn('Xvfb stderr: %s', line)
+ self.host.filesystem.remove(self._xvfb_stderr.name)
+
def _path_to_driver(self, target=None):
« no previous file with comments | « third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/base.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698