[Piglit] [PATCH] deqp: Rerun if tests fail to connect to X

Dylan Baker baker.dylan.c at gmail.com
Mon Mar 28 21:50:38 UTC 2016

A pretty common error it seems is to get a failure to open display when
using X11. This adds an extra method to the DEQPBaseTest class that
reruns the test is it finds that error in the stderr. This affects only
deqp based suite integration.

This fixes a number of sporadically failing tests from our CI.
 framework/test/deqp.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/framework/test/deqp.py b/framework/test/deqp.py
index 80ce156..c75577a 100644
--- a/framework/test/deqp.py
+++ b/framework/test/deqp.py
@@ -26,10 +26,11 @@ import os
 import subprocess
 import six
+from six.moves import range
 from framework import core, grouptools, exceptions
 from framework.profile import TestProfile
-from framework.test.base import Test, is_crash_returncode
+from framework.test.base import Test, is_crash_returncode, TestRunError
 __all__ = [
@@ -177,3 +178,12 @@ class DEQPBaseTest(Test):
         # We failed to parse the test output. Fallback to 'fail'.
         if self.result.result == 'notrun':
             self.result.result = 'fail'
+    def _run_command(self):
+        """Rerun the command if X11 connection failure happens."""
+        for _ in range(5):
+            super(DEQPBaseTest, self)._run_command()
+            if "FATAL ERROR: Failed to open display" not in self.result.err:
+                return
+        raise TestRunError('Failed to connect to X server 5 times', 'fail')

More information about the Piglit mailing list