self.keeptmp = tempfile.mkdtemp()
os.environ['KEEP_LOCAL_STORE'] = self.keeptmp
self.mounttmp = tempfile.mkdtemp()
+ run_test_server.run(False)
+ run_test_server.authorize_with("admin")
+ self.api = api = fuse.SafeApi(arvados.config)
def tearDown(self):
+ run_test_server.stop()
+
# llfuse.close is buggy, so use fusermount instead.
#llfuse.close(unmount=True)
count = 0
cw.write("data 8")
self.testcollection = cw.finish()
+ self.api.collections().create(body={"manifest_text":cw.manifest_text()}).execute()
def runTest(self):
# Create the request handler
operations = fuse.Operations(os.getuid(), os.getgid())
- e = operations.inodes.add_entry(fuse.CollectionDirectory(llfuse.ROOT_INODE, operations.inodes, self.testcollection))
+ e = operations.inodes.add_entry(fuse.CollectionDirectory(llfuse.ROOT_INODE, operations.inodes, self.api, self.testcollection))
llfuse.init(operations, self.mounttmp, [])
t = threading.Thread(None, lambda: llfuse.main())
cw.write("data 1")
self.testcollection = cw.finish()
+ self.api.collections().create(body={"manifest_text":cw.manifest_text()}).execute()
def runTest(self):
# Create the request handler
operations = fuse.Operations(os.getuid(), os.getgid())
- e = operations.inodes.add_entry(fuse.MagicDirectory(llfuse.ROOT_INODE, operations.inodes))
+ e = operations.inodes.add_entry(fuse.MagicDirectory(llfuse.ROOT_INODE, operations.inodes, self.api))
self.mounttmp = tempfile.mkdtemp()
# now check some stuff
d1 = os.listdir(self.mounttmp)
d1.sort()
- self.assertEqual([], d1)
+ self.assertEqual(['README'], d1)
d2 = os.listdir(os.path.join(self.mounttmp, self.testcollection))
d2.sort()
d3 = os.listdir(self.mounttmp)
d3.sort()
- self.assertEqual([self.testcollection], d3)
+ self.assertEqual([self.testcollection, 'README'], d3)
files = {}
files[os.path.join(self.mounttmp, self.testcollection, 'thing1.txt')] = 'data 1'
with open(os.path.join(self.mounttmp, k)) as f:
self.assertEqual(v, f.read())
-#
-# Restore these tests when working on issue #3644
-#
-# class FuseTagsTest(MountTestBase):
-# def setUp(self):
-# super(FuseTagsTest, self).setUp()
-
-# cw = arvados.CollectionWriter()
-
-# cw.start_new_file('foo')
-# cw.write("foo")
-
-# self.testcollection = cw.finish()
-
-# run_test_server.run()
-
-# def runTest(self):
-# run_test_server.authorize_with("admin")
-# api = arvados.api('v1', cache=False)
-
-# operations = fuse.Operations(os.getuid(), os.getgid())
-# e = operations.inodes.add_entry(fuse.TagsDirectory(llfuse.ROOT_INODE, operations.inodes, api))
-
-# llfuse.init(operations, self.mounttmp, [])
-# t = threading.Thread(None, lambda: llfuse.main())
-# t.start()
-
-# # wait until the driver is finished initializing
-# operations.initlock.wait()
-
-# d1 = os.listdir(self.mounttmp)
-# d1.sort()
-# self.assertEqual(['foo_tag'], d1)
-
-# d2 = os.listdir(os.path.join(self.mounttmp, 'foo_tag'))
-# d2.sort()
-# self.assertEqual(['1f4b0bc7583c2a7f9102c395f4ffc5e3+45'], d2)
-
-# d3 = os.listdir(os.path.join(self.mounttmp, 'foo_tag', '1f4b0bc7583c2a7f9102c395f4ffc5e3+45'))
-# d3.sort()
-# self.assertEqual(['foo'], d3)
-
-# files = {}
-# files[os.path.join(self.mounttmp, 'foo_tag', '1f4b0bc7583c2a7f9102c395f4ffc5e3+45', 'foo')] = 'foo'
-
-# for k, v in files.items():
-# with open(os.path.join(self.mounttmp, k)) as f:
-# self.assertEqual(v, f.read())
-
-
-# def tearDown(self):
-# run_test_server.stop()
-# super(FuseTagsTest, self).tearDown()
-
-# class FuseTagsUpdateTestBase(MountTestBase):
+class FuseTagsTest(MountTestBase):
+ def runTest(self):
+ operations = fuse.Operations(os.getuid(), os.getgid())
+ e = operations.inodes.add_entry(fuse.TagsDirectory(llfuse.ROOT_INODE, operations.inodes, self.api))
-# def runRealTest(self):
-# run_test_server.authorize_with("admin")
-# api = arvados.api('v1', cache=False)
+ llfuse.init(operations, self.mounttmp, [])
+ t = threading.Thread(None, lambda: llfuse.main())
+ t.start()
-# operations = fuse.Operations(os.getuid(), os.getgid())
-# e = operations.inodes.add_entry(fuse.TagsDirectory(llfuse.ROOT_INODE, operations.inodes, api, poll_time=1))
+ # wait until the driver is finished initializing
+ operations.initlock.wait()
-# llfuse.init(operations, self.mounttmp, [])
-# t = threading.Thread(None, lambda: llfuse.main())
-# t.start()
+ d1 = os.listdir(self.mounttmp)
+ d1.sort()
+ self.assertEqual(['foo_tag'], d1)
-# # wait until the driver is finished initializing
-# operations.initlock.wait()
+ d2 = os.listdir(os.path.join(self.mounttmp, 'foo_tag'))
+ d2.sort()
+ self.assertEqual(['zzzzz-4zz18-fy296fx3hot09f7'], d2)
-# d1 = os.listdir(self.mounttmp)
-# d1.sort()
-# self.assertEqual(['foo_tag'], d1)
+ d3 = os.listdir(os.path.join(self.mounttmp, 'foo_tag', 'zzzzz-4zz18-fy296fx3hot09f7'))
+ d3.sort()
+ self.assertEqual(['foo'], d3)
-# api.links().create(body={'link': {
-# 'head_uuid': 'fa7aeb5140e2848d39b416daeef4ffc5+45',
-# 'link_class': 'tag',
-# 'name': 'bar_tag'
-# }}).execute()
-# time.sleep(1)
+class FuseTagsUpdateTest(MountTestBase):
+ def runRealTest(self):
+ operations = fuse.Operations(os.getuid(), os.getgid())
+ e = operations.inodes.add_entry(fuse.TagsDirectory(llfuse.ROOT_INODE, operations.inodes, self.api, poll_time=1))
-# d2 = os.listdir(self.mounttmp)
-# d2.sort()
-# self.assertEqual(['bar_tag', 'foo_tag'], d2)
+ llfuse.init(operations, self.mounttmp, [])
+ t = threading.Thread(None, lambda: llfuse.main())
+ t.start()
-# d3 = os.listdir(os.path.join(self.mounttmp, 'bar_tag'))
-# d3.sort()
-# self.assertEqual(['fa7aeb5140e2848d39b416daeef4ffc5+45'], d3)
+ # wait until the driver is finished initializing
+ operations.initlock.wait()
-# l = api.links().create(body={'link': {
-# 'head_uuid': 'ea10d51bcf88862dbcc36eb292017dfd+45',
-# 'link_class': 'tag',
-# 'name': 'bar_tag'
-# }}).execute()
+ d1 = os.listdir(self.mounttmp)
+ d1.sort()
+ self.assertEqual(['foo_tag'], d1)
-# time.sleep(1)
+ self.api.links().create(body={'link': {
+ 'head_uuid': 'fa7aeb5140e2848d39b416daeef4ffc5+45',
+ 'link_class': 'tag',
+ 'name': 'bar_tag'
+ }}).execute()
-# d4 = os.listdir(os.path.join(self.mounttmp, 'bar_tag'))
-# d4.sort()
-# self.assertEqual(['ea10d51bcf88862dbcc36eb292017dfd+45', 'fa7aeb5140e2848d39b416daeef4ffc5+45'], d4)
+ time.sleep(1)
-# api.links().delete(uuid=l['uuid']).execute()
+ d2 = os.listdir(self.mounttmp)
+ d2.sort()
+ self.assertEqual(['bar_tag', 'foo_tag'], d2)
-# time.sleep(1)
+ d3 = os.listdir(os.path.join(self.mounttmp, 'bar_tag'))
+ d3.sort()
+ self.assertEqual(['fa7aeb5140e2848d39b416daeef4ffc5+45'], d3)
-# d5 = os.listdir(os.path.join(self.mounttmp, 'bar_tag'))
-# d5.sort()
-# self.assertEqual(['fa7aeb5140e2848d39b416daeef4ffc5+45'], d5)
+ l = self.api.links().create(body={'link': {
+ 'head_uuid': 'ea10d51bcf88862dbcc36eb292017dfd+45',
+ 'link_class': 'tag',
+ 'name': 'bar_tag'
+ }}).execute()
+ time.sleep(1)
-# class FuseTagsUpdateTestWebsockets(FuseTagsUpdateTestBase):
-# def setUp(self):
-# super(FuseTagsUpdateTestWebsockets, self).setUp()
-# run_test_server.run(True)
+ d4 = os.listdir(os.path.join(self.mounttmp, 'bar_tag'))
+ d4.sort()
+ self.assertEqual(['ea10d51bcf88862dbcc36eb292017dfd+45', 'fa7aeb5140e2848d39b416daeef4ffc5+45'], d4)
-# def runTest(self):
-# self.runRealTest()
+ self.api.links().delete(uuid=l['uuid']).execute()
-# def tearDown(self):
-# run_test_server.stop()
-# super(FuseTagsUpdateTestWebsockets, self).tearDown()
+ time.sleep(1)
+ d5 = os.listdir(os.path.join(self.mounttmp, 'bar_tag'))
+ d5.sort()
+ self.assertEqual(['fa7aeb5140e2848d39b416daeef4ffc5+45'], d5)
-# class FuseTagsUpdateTestPoll(FuseTagsUpdateTestBase):
-# def setUp(self):
-# super(FuseTagsUpdateTestPoll, self).setUp()
-# run_test_server.run(False)
-# def runTest(self):
-# self.runRealTest()
+class FuseSharedTest(MountTestBase):
+ def runTest(self):
+ operations = fuse.Operations(os.getuid(), os.getgid())
+ e = operations.inodes.add_entry(fuse.SharedDirectory(llfuse.ROOT_INODE, operations.inodes, self.api, self.api.users().current().execute()['uuid']))
-# def tearDown(self):
-# run_test_server.stop()
-# super(FuseTagsUpdateTestPoll, self).tearDown()
+ llfuse.init(operations, self.mounttmp, [])
+ t = threading.Thread(None, lambda: llfuse.main())
+ t.start()
+ # wait until the driver is finished initializing
+ operations.initlock.wait()
-# class FuseGroupsTest(MountTestBase):
-# def setUp(self):
-# super(FuseGroupsTest, self).setUp()
-# run_test_server.run()
+ d1 = os.listdir(self.mounttmp)
+ d1.sort()
+ self.assertIn('Active User', d1)
-# def runTest(self):
-# run_test_server.authorize_with("admin")
-# api = arvados.api('v1', cache=False)
+ d2 = os.listdir(os.path.join(self.mounttmp, 'Active User'))
+ d2.sort()
+ self.assertEqual(['A Project',
+ "Empty collection",
+ "Empty collection.link",
+ "Pipeline Template with Input Parameter with Search.pipelineTemplate",
+ "Pipeline Template with Jobspec Components.pipelineTemplate",
+ "collection_expires_in_future",
+ "pipeline_with_job.pipelineInstance"
+ ], d2)
+
+ d3 = os.listdir(os.path.join(self.mounttmp, 'Active User', 'A Project'))
+ d3.sort()
+ self.assertEqual(["A Subproject",
+ "Two Part Pipeline Template.pipelineTemplate",
+ "collection_to_move_around",
+ "zzzzz-4zz18-fy296fx3hot09f7 added sometime"
+ ], d3)
-# operations = fuse.Operations(os.getuid(), os.getgid())
-# e = operations.inodes.add_entry(fuse.GroupsDirectory(llfuse.ROOT_INODE, operations.inodes, api))
+ with open(os.path.join(self.mounttmp, 'Active User', "A Project", "Two Part Pipeline Template.pipelineTemplate")) as f:
+ j = json.load(f)
+ self.assertEqual("Two Part Pipeline Template", j['name'])
-# llfuse.init(operations, self.mounttmp, [])
-# t = threading.Thread(None, lambda: llfuse.main())
-# t.start()
-# # wait until the driver is finished initializing
-# operations.initlock.wait()
+class FuseHomeTest(MountTestBase):
+ def runTest(self):
+ operations = fuse.Operations(os.getuid(), os.getgid())
+ e = operations.inodes.add_entry(fuse.ProjectDirectory(llfuse.ROOT_INODE, operations.inodes, self.api, self.api.users().current().execute()))
-# d1 = os.listdir(self.mounttmp)
-# d1.sort()
-# self.assertIn('zzzzz-j7d0g-v955i6s2oi1cbso', d1)
+ llfuse.init(operations, self.mounttmp, [])
+ t = threading.Thread(None, lambda: llfuse.main())
+ t.start()
-# d2 = os.listdir(os.path.join(self.mounttmp, 'zzzzz-j7d0g-v955i6s2oi1cbso'))
-# d2.sort()
-# self.assertEqual(['1f4b0bc7583c2a7f9102c395f4ffc5e3+45 added sometime',
-# "I'm a job in a project",
-# "I'm a template in a project",
-# "zzzzz-j58dm-5gid26432uujf79",
-# "zzzzz-j58dm-7r18rnd5nzhg5yk",
-# "zzzzz-j58dm-ypsjlol9dofwijz",
-# "zzzzz-j7d0g-axqo7eu9pwvna1x"
-# ], d2)
+ # wait until the driver is finished initializing
+ operations.initlock.wait()
-# d3 = os.listdir(os.path.join(self.mounttmp, 'zzzzz-j7d0g-v955i6s2oi1cbso', 'zzzzz-j7d0g-axqo7eu9pwvna1x'))
-# d3.sort()
-# self.assertEqual(["I'm in a subproject, too",
-# "ea10d51bcf88862dbcc36eb292017dfd+45 added sometime",
-# "zzzzz-j58dm-c40lddwcqqr1ffs"
-# ], d3)
+ d1 = os.listdir(self.mounttmp)
+ d1.sort()
+ self.assertIn('Unrestricted public data', d1)
-# with open(os.path.join(self.mounttmp, 'zzzzz-j7d0g-v955i6s2oi1cbso', "I'm a template in a project")) as f:
-# j = json.load(f)
-# self.assertEqual("Two Part Pipeline Template", j['name'])
+ d2 = os.listdir(os.path.join(self.mounttmp, 'Unrestricted public data'))
+ d2.sort()
+ self.assertEqual(['GNU General Public License, version 3'], d2)
-# def tearDown(self):
-# run_test_server.stop()
-# super(FuseGroupsTest, self).tearDown()
+ d3 = os.listdir(os.path.join(self.mounttmp, 'Unrestricted public data', 'GNU General Public License, version 3'))
+ d3.sort()
+ self.assertEqual(["GNU_General_Public_License,_version_3.pdf"], d3)