summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-10-02 10:14:24 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-10-02 14:18:55 +0100
commitefd7b025cee25d0ee668c09476395d08fcf5ae1a (patch)
tree46794a95ccb68889e8f3133c23c8e7f08675a3f5
parent3b275c4083eae1d3781f0862919af9de83932b0f (diff)
downloadbitbake-efd7b025cee25d0ee668c09476395d08fcf5ae1a.tar.gz
tests/runqueue: Fix hashserve shutdown race
The hashserve can delete its socket whilst the cleanup us happening leading to backtraces and test failures. Add code to avoid this race condition. [YOCTO #13542] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/tests/runqueue.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/bb/tests/runqueue.py b/lib/bb/tests/runqueue.py
index 50b3392bc..5e6439156 100644
--- a/lib/bb/tests/runqueue.py
+++ b/lib/bb/tests/runqueue.py
@@ -12,6 +12,7 @@ import os
import tempfile
import subprocess
import sys
+import time
#
# TODO:
@@ -257,6 +258,8 @@ class RunQueueTests(unittest.TestCase):
'a1:package_write_ipk_setscene', 'a1:package_qa_setscene']
self.assertEqual(set(tasks), set(expected))
+ self.shutdown(tempdir)
+
@unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
def test_hashserv_double(self):
with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
@@ -280,6 +283,7 @@ class RunQueueTests(unittest.TestCase):
'a1:package_write_rpm_setscene', 'b1:package_write_ipk_setscene', 'a1:packagedata_setscene']
self.assertEqual(set(tasks), set(expected))
+ self.shutdown(tempdir)
@unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
def test_hashserv_multiple_setscene(self):
@@ -309,3 +313,11 @@ class RunQueueTests(unittest.TestCase):
for i in expected:
self.assertEqual(tasks.count(i), 1, "%s not in task list once" % i)
+ self.shutdown(tempdir)
+
+ def shutdown(self, tempdir):
+ # Wait for the hashserve socket to disappear else we'll see races with the tempdir cleanup
+ while os.path.exists(tempdir + "/hashserve.sock"):
+ time.sleep(0.5)
+
+