Merge branch '11369-cwl-crunch2-capacity' refs #11369
[arvados.git] / services / fuse / tests / test_unmount.py
index 0a2837e737cf626ebd44042e4a2148a18bdad3d6..716a0e00d704d16b5edcb8436b3ca68de157024b 100644 (file)
@@ -17,14 +17,14 @@ class UnmountTest(IntegrationTest):
 
     def test_replace(self):
         subprocess.check_call(
-            ['arv-mount', '--subtype', 'test', '--replace',
+            ['./bin/arv-mount', '--subtype', 'test', '--replace',
              self.mnt])
         subprocess.check_call(
-            ['arv-mount', '--subtype', 'test', '--replace',
+            ['./bin/arv-mount', '--subtype', 'test', '--replace',
              '--unmount-timeout', '10',
              self.mnt])
         subprocess.check_call(
-            ['arv-mount', '--subtype', 'test', '--replace',
+            ['./bin/arv-mount', '--subtype', 'test', '--replace',
              '--unmount-timeout', '10',
              self.mnt,
              '--exec', 'true'])
@@ -32,10 +32,41 @@ class UnmountTest(IntegrationTest):
             self.assertNotIn(' '+self.mnt+' ', m)
 
     def _mounted(self, mounts):
-        all_mounts = subprocess.check_output(['mount', '-t', 'fuse.test'])
+        all_mounts = subprocess.check_output(['mount'])
         return [m for m in mounts
                 if ' '+m+' ' in all_mounts]
 
+    def _wait_for_mounts(self, mounts):
+        deadline = time.time() + 10
+        while self._mounted(mounts) != mounts:
+            time.sleep(0.1)
+            self.assertLess(time.time(), deadline)
+
+    def test_unmount_subtype(self):
+        mounts = []
+        for d in ['foo', 'bar']:
+            mnt = self.tmp+'/'+d
+            os.mkdir(mnt)
+            self.to_delete.insert(0, mnt)
+            mounts.append(mnt)
+            subprocess.check_call(
+                ['./bin/arv-mount', '--subtype', d, mnt])
+
+        self._wait_for_mounts(mounts)
+        self.assertEqual(mounts, self._mounted(mounts))
+        subprocess.call(['./bin/arv-mount', '--subtype', 'baz', '--unmount-all', self.tmp])
+        self.assertEqual(mounts, self._mounted(mounts))
+        subprocess.call(['./bin/arv-mount', '--subtype', 'bar', '--unmount', mounts[0]])
+        self.assertEqual(mounts, self._mounted(mounts))
+        subprocess.call(['./bin/arv-mount', '--subtype', '', '--unmount', self.tmp])
+        self.assertEqual(mounts, self._mounted(mounts))
+        subprocess.check_call(['./bin/arv-mount', '--subtype', 'foo', '--unmount', mounts[0]])
+        self.assertEqual(mounts[1:], self._mounted(mounts))
+        subprocess.check_call(['./bin/arv-mount', '--subtype', '', '--unmount-all', mounts[0]])
+        self.assertEqual(mounts[1:], self._mounted(mounts))
+        subprocess.check_call(['./bin/arv-mount', '--subtype', 'bar', '--unmount-all', self.tmp])
+        self.assertEqual([], self._mounted(mounts))
+
     def test_unmount_children(self):
         for d in ['foo', 'foo/bar', 'bar']:
             mnt = self.tmp+'/'+d
@@ -46,16 +77,11 @@ class UnmountTest(IntegrationTest):
             mnt = self.tmp+'/'+d
             mounts.append(mnt)
             subprocess.check_call(
-                ['arv-mount', '--subtype', 'test', mnt])
-
-        # Wait for mounts to attach
-        deadline = time.time() + 10
-        while self._mounted(mounts) != mounts:
-            time.sleep(0.1)
-            self.assertLess(time.time(), deadline)
+                ['./bin/arv-mount', '--subtype', 'test', mnt])
 
+        self._wait_for_mounts(mounts)
         self.assertEqual(mounts, self._mounted(mounts))
-        subprocess.check_call(['arv-mount', '--unmount', self.tmp])
+        subprocess.check_call(['./bin/arv-mount', '--unmount', self.tmp])
         self.assertEqual(mounts, self._mounted(mounts))
-        subprocess.check_call(['arv-mount', '--unmount-all', self.tmp])
+        subprocess.check_call(['./bin/arv-mount', '--unmount-all', self.tmp])
         self.assertEqual([], self._mounted(mounts))