Merge branch '17828-remove-bootsnap' refs #17828
[arvados.git] / services / fuse / tests / mount_test_base.py
index 96ff889fcfbdb0de8e2d07ed0ea6a15ebd6f0bfe..fe2ff929dc25d13000d600b66c4a3e75d76aac27 100644 (file)
@@ -2,6 +2,7 @@
 #
 # SPDX-License-Identifier: AGPL-3.0
 
+from __future__ import absolute_import
 import arvados
 import arvados_fuse as fuse
 import arvados.safeapi
@@ -9,7 +10,7 @@ import llfuse
 import logging
 import multiprocessing
 import os
-import run_test_server
+from . import run_test_server
 import shutil
 import signal
 import subprocess
@@ -21,6 +22,8 @@ import unittest
 
 logger = logging.getLogger('arvados.arv-mount')
 
+from .integration_test import workerPool
+
 class MountTestBase(unittest.TestCase):
     def setUp(self, api=None, local_store=True):
         # The underlying C implementation of open() makes a fstat() syscall
@@ -30,8 +33,8 @@ class MountTestBase(unittest.TestCase):
         # deadlocks.  The workaround is to run some of our test code in a
         # separate process.  Forturnately the multiprocessing module makes this
         # relatively easy.
-        self.pool = multiprocessing.Pool(1)
 
+        self.pool = workerPool()
         if local_store:
             self.keeptmp = tempfile.mkdtemp()
             os.environ['KEEP_LOCAL_STORE'] = self.keeptmp
@@ -43,10 +46,6 @@ class MountTestBase(unittest.TestCase):
         self.api = api if api else arvados.safeapi.ThreadSafeApiCache(arvados.config.settings())
         self.llfuse_thread = None
 
-        # Workaround for llfuse deadlock bug. See #10805, #8345,
-        # https://bitbucket.org/nikratio/python-llfuse/issues/108
-        llfuse.close = lambda *args: None
-
     # This is a copy of Mount's method.  TODO: Refactor MountTestBase
     # to use a Mount instead of copying its code.
     def _llfuse_main(self):
@@ -93,11 +92,9 @@ class MountTestBase(unittest.TestCase):
             shutil.rmtree(self.keeptmp)
             os.environ.pop('KEEP_LOCAL_STORE')
         run_test_server.reset()
-        self.pool.close()
-        self.pool.join()
 
     def assertDirContents(self, subdir, expect_content):
         path = self.mounttmp
         if subdir:
             path = os.path.join(path, subdir)
-        self.assertEqual(sorted(expect_content), sorted(llfuse.listdir(path)))
+        self.assertEqual(sorted(expect_content), sorted(llfuse.listdir(str(path))))