X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f3b78f5c0690a93d4cc9370519f970ded430c453..9b90fe97f8e92794856e3d730811953e1c13ea25:/services/fuse/tests/test_mount.py diff --git a/services/fuse/tests/test_mount.py b/services/fuse/tests/test_mount.py index 1d7b9087ab..e534e32737 100644 --- a/services/fuse/tests/test_mount.py +++ b/services/fuse/tests/test_mount.py @@ -16,6 +16,7 @@ import logging import multiprocessing import run_test_server import mock +import re from mount_test_base import MountTestBase @@ -703,7 +704,7 @@ class FuseUpdateFromEventTest(MountTestBase): with llfuse.lock: m.new_collection(collection.api_response(), collection) - self.operations.listen_for_events(self.api) + self.operations.listen_for_events() d1 = llfuse.listdir(os.path.join(self.mounttmp)) self.assertEqual([], sorted(d1)) @@ -1127,3 +1128,36 @@ class FuseMagicTestPDHOnly(MountTestBase): def test_with_default_by_id(self): self.verify_pdh_only(skip_pdh_only=True) + +def _test_refresh_old_manifest(zzz): + fnm = 'zzzzz-8i9sb-0vsrcqi7whchuil.log.txt' + os.listdir(os.path.join(zzz)) + time.sleep(3) + with open(os.path.join(zzz, fnm)) as f: + f.read() + +class TokenExpiryTest(MountTestBase): + def setUp(self): + super(TokenExpiryTest, self).setUp(local_store=False) + + @mock.patch('arvados.keep.KeepClient.get') + def runTest(self, mocked_get): + self.api._rootDesc = {"blobSignatureTtl": 2} + mnt = self.make_mount(fuse.CollectionDirectory, collection_record='zzzzz-4zz18-op4e2lbej01tcvu') + mocked_get.return_value = 'fake data' + + old_exp = int(time.time()) + 86400*14 + self.pool.apply(_test_refresh_old_manifest, (self.mounttmp,)) + want_exp = int(time.time()) + 86400*14 + + got_loc = mocked_get.call_args[0][0] + got_exp = int( + re.search(r'\+A[0-9a-f]+@([0-9a-f]+)', got_loc).group(1), + 16) + self.assertGreaterEqual( + got_exp, want_exp-1, + msg='now+2w = {:x}, but fuse fetched locator {} (old_exp {:x})'.format( + want_exp, got_loc, old_exp)) + self.assertLessEqual( + got_exp, want_exp, + msg='server is not using the expected 2w TTL; test is ineffective')