X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8cd68a569df236ff8e150a556cd8cd69169b113f..001757381fd370a563599ca70ca9b451a71e9726:/services/fuse/tests/test_unmount.py diff --git a/services/fuse/tests/test_unmount.py b/services/fuse/tests/test_unmount.py index 0a2837e737..716a0e00d7 100644 --- a/services/fuse/tests/test_unmount.py +++ b/services/fuse/tests/test_unmount.py @@ -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))