X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fe0751fd604792c7a0884e3533d8acb03b6038d9..9aff8a3624b463d3fd4d9302c4d41c7558df4a13:/services/fuse/tests/test_mount.py diff --git a/services/fuse/tests/test_mount.py b/services/fuse/tests/test_mount.py index 52d1e02b47..ec8868af7d 100644 --- a/services/fuse/tests/test_mount.py +++ b/services/fuse/tests/test_mount.py @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + import json import llfuse import logging @@ -216,66 +220,62 @@ class FuseTagsUpdateTest(MountTestBase): attempt(self.assertDirContents, 'fuse_test_tag', [bar_uuid]) +def fuseSharedTestHelper(mounttmp): + class Test(unittest.TestCase): + def runTest(self): + # Double check that we can open and read objects in this folder as a file, + # and that its contents are what we expect. + baz_path = os.path.join( + mounttmp, + 'FUSE User', + 'FUSE Test Project', + 'collection in FUSE project', + 'baz') + with open(baz_path) as f: + self.assertEqual("baz", f.read()) + + # check mtime on collection + st = os.stat(baz_path) + try: + mtime = st.st_mtime_ns / 1000000000 + except AttributeError: + mtime = st.st_mtime + self.assertEqual(mtime, 1391448174) + + # shared_dirs is a list of the directories exposed + # by fuse.SharedDirectory (i.e. any object visible + # to the current user) + shared_dirs = llfuse.listdir(mounttmp) + shared_dirs.sort() + self.assertIn('FUSE User', shared_dirs) + + # fuse_user_objs is a list of the objects owned by the FUSE + # test user (which present as files in the 'FUSE User' + # directory) + fuse_user_objs = llfuse.listdir(os.path.join(mounttmp, 'FUSE User')) + fuse_user_objs.sort() + self.assertEqual(['FUSE Test Project', # project owned by user + 'collection #1 owned by FUSE', # collection owned by user + 'collection #2 owned by FUSE' # collection owned by user + ], fuse_user_objs) + + # test_proj_files is a list of the files in the FUSE Test Project. + test_proj_files = llfuse.listdir(os.path.join(mounttmp, 'FUSE User', 'FUSE Test Project')) + test_proj_files.sort() + self.assertEqual(['collection in FUSE project' + ], test_proj_files) + + + Test().runTest() + class FuseSharedTest(MountTestBase): def runTest(self): self.make_mount(fuse.SharedDirectory, exclude=self.api.users().current().execute()['uuid']) + keep = arvados.keep.KeepClient() + keep.put("baz") - # shared_dirs is a list of the directories exposed - # by fuse.SharedDirectory (i.e. any object visible - # to the current user) - shared_dirs = llfuse.listdir(self.mounttmp) - shared_dirs.sort() - self.assertIn('FUSE User', shared_dirs) - - # fuse_user_objs is a list of the objects owned by the FUSE - # test user (which present as files in the 'FUSE User' - # directory) - fuse_user_objs = llfuse.listdir(os.path.join(self.mounttmp, 'FUSE User')) - fuse_user_objs.sort() - self.assertEqual(['FUSE Test Project', # project owned by user - 'collection #1 owned by FUSE', # collection owned by user - 'collection #2 owned by FUSE', # collection owned by user - 'pipeline instance owned by FUSE.pipelineInstance', # pipeline instance owned by user - ], fuse_user_objs) - - # test_proj_files is a list of the files in the FUSE Test Project. - test_proj_files = llfuse.listdir(os.path.join(self.mounttmp, 'FUSE User', 'FUSE Test Project')) - test_proj_files.sort() - self.assertEqual(['collection in FUSE project', - 'pipeline instance in FUSE project.pipelineInstance', - 'pipeline template in FUSE project.pipelineTemplate' - ], test_proj_files) - - # Double check that we can open and read objects in this folder as a file, - # and that its contents are what we expect. - pipeline_template_path = os.path.join( - self.mounttmp, - 'FUSE User', - 'FUSE Test Project', - 'pipeline template in FUSE project.pipelineTemplate') - with open(pipeline_template_path) as f: - j = json.load(f) - self.assertEqual("pipeline template in FUSE project", j['name']) - - # check mtime on template - st = os.stat(pipeline_template_path) - try: - mtime = st.st_mtime_ns / 1000000000 - except AttributeError: - mtime = st.st_mtime - self.assertEqual(mtime, 1397493304) - - # check mtime on collection - st = os.stat(os.path.join( - self.mounttmp, - 'FUSE User', - 'collection #1 owned by FUSE')) - try: - mtime = st.st_mtime_ns / 1000000000 - except AttributeError: - mtime = st.st_mtime - self.assertEqual(mtime, 1391448174) + self.pool.apply(fuseSharedTestHelper, (self.mounttmp,)) class FuseHomeTest(MountTestBase):