7661: Pass pdh_only when adding by_id subdir; test now passes.
authorradhika <radhika@curoverse.com>
Tue, 10 Nov 2015 23:41:55 +0000 (18:41 -0500)
committerradhika <radhika@curoverse.com>
Tue, 10 Nov 2015 23:41:55 +0000 (18:41 -0500)
services/fuse/arvados_fuse/fusedir.py
services/fuse/tests/test_mount.py

index c078242980a17d0d9e83a20821d84c8687960bd9..fdc93fb3beb37b7e4d4eda8400eb6f72ff82423a 100644 (file)
@@ -512,7 +512,7 @@ will appear if it exists.
             # If we're the root directory, add an identical by_id subdirectory.
             if self.inode == llfuse.ROOT_INODE:
                 self._entries['by_id'] = self.inodes.add_entry(MagicDirectory(
-                        self.inode, self.inodes, self.api, self.num_retries))
+                        self.inode, self.inodes, self.api, self.num_retries, self.pdh_only))
 
     def __contains__(self, k):
         if k in self._entries:
index b91b1410f281f0dd24b2acc584890afa8bd5dd49..cc8693bd34c40628f193afd40c386751d86d1c78 100644 (file)
@@ -1076,8 +1076,11 @@ class FuseMagicTestPDHOnly(MountTestBase):
         created = self.api.collections().create(body={"manifest_text":self.test_manifest}).execute()
         self.testcollectionuuid = str(created['uuid'])
 
-    def runTest(self):
-        self.make_mount(fuse.MagicDirectory, pdh_only=True)
+    def verify_pdh_only(self, pdh_only=False, skip_pdh_only=False):
+        if skip_pdh_only is True:
+            self.make_mount(fuse.MagicDirectory)    # in this case, the default by_id applies
+        else:
+            self.make_mount(fuse.MagicDirectory, pdh_only=pdh_only)
 
         mount_ls = llfuse.listdir(self.mounttmp)
         self.assertIn('README', mount_ls)
@@ -1086,7 +1089,7 @@ class FuseMagicTestPDHOnly(MountTestBase):
                              for fn in mount_ls),
                          "new FUSE MagicDirectory lists Collection")
 
-        # look up using pdh should succeed
+        # look up using pdh should succeed in all cases
         self.assertDirContents(self.testcollection, ['thing1.txt'])
         self.assertDirContents(os.path.join('by_id', self.testcollection),
                                ['thing1.txt'])
@@ -1103,7 +1106,20 @@ class FuseMagicTestPDHOnly(MountTestBase):
             with open(os.path.join(self.mounttmp, k)) as f:
                 self.assertEqual(v, f.read())
 
-        # look up using uuid should fail
-        with self.assertRaises(OSError):
+        # look up using uuid should fail when pdh_only is set
+        if pdh_only is True:
+            with self.assertRaises(OSError):
+                self.assertDirContents(os.path.join('by_id', self.testcollectionuuid),
+                               ['thing1.txt'])
+        else:
             self.assertDirContents(os.path.join('by_id', self.testcollectionuuid),
                                ['thing1.txt'])
+
+    def test_with_pdh_only_true(self):
+        self.verify_pdh_only(pdh_only=True)
+
+    def test_with_pdh_only_false(self):
+        self.verify_pdh_only(pdh_only=False)
+
+    def test_with_default_by_id(self):
+        self.verify_pdh_only(skip_pdh_only=True)