From fbdb4ec903de818054576f17a228a7f4530dc676 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Wed, 7 Jun 2017 06:24:42 +0000
Subject: [PATCH] test: Do not check presence of lockfile in /tmp/ to assume
 Xvfb is running for this display

This caused two problems:
 - If Xfvb was killed and left a stale lock file, we don't reuse this
   display. After some time we end up having "All display locked"
   exception but no Xvfb process running.
 - Xvfb's slapos is patched to store control sockets and lockfiles in
   $TMPDIR ( https://lab.nexedi.com/nexedi/slapos/commit/58462c2415b3a71c3f9ee7fdc290cf09ddb0adc0 ).
   We don't have $TMPDIR set in testnodes, but this would be a problem
   if we ever set it.

Because Xvfb can detect a stale lock file upon startup and start anyway,
the easy way running Xvfb for each display and see if it's still running
after a few seconds.
---
 product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py
index 489dda548c..28f0c884ec 100644
--- a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py
+++ b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py
@@ -108,9 +108,8 @@ class Xvfb(Process):
 
   def run(self):
     for display_try in self.display_list:
-      lock_filepath = '/tmp/.X%s-lock' % display_try.replace(":", "")
-      if not os.path.exists(lock_filepath):
-        self._runCommand(display_try)
+      self._runCommand(display_try)
+      if self.process.poll() is None:
         self.display = display_try
         os.environ['DISPLAY'] = self.display
         break
-- 
2.30.9