From 03ab37585a5f624f2c25a8a3ab8e1d864fc4d846 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Mon, 1 Feb 2016 03:01:31 -0500 Subject: [PATCH] 8288: Add test case for --exec mode. --- services/fuse/tests/test_exec.py | 60 ++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 services/fuse/tests/test_exec.py diff --git a/services/fuse/tests/test_exec.py b/services/fuse/tests/test_exec.py new file mode 100644 index 0000000000..66013a4bf2 --- /dev/null +++ b/services/fuse/tests/test_exec.py @@ -0,0 +1,60 @@ +import arvados_fuse.command +import json +import multiprocessing +import os +import run_test_server +import tempfile +import unittest + +try: + from shlex import quote +except: + from pipes import quote + +def try_exec(mnt, cmd): + try: + arvados_fuse.command.Mount( + arvados_fuse.command.ArgumentParser().parse_args([ + '--read-write', + '--mount-tmp=zzz', + '--unmount-timeout=0.1', + mnt, + '--exec'] + cmd)).run() + except SystemExit: + pass + else: + raise AssertionError('should have exited') + + +class ExecMode(unittest.TestCase): + @classmethod + def setUpClass(cls): + run_test_server.run() + run_test_server.run_keep(enforce_permissions=True, num_servers=2) + run_test_server.authorize_with('active') + + @classmethod + def tearDownClass(cls): + run_test_server.stop_keep(num_servers=2) + + def setUp(self): + self.mnt = tempfile.mkdtemp() + _, self.okfile = tempfile.mkstemp() + self.pool = multiprocessing.Pool(1) + + def tearDown(self): + self.pool.terminate() + self.pool.join() + os.rmdir(self.mnt) + os.unlink(self.okfile) + + def test_exec(self): + self.pool.apply(try_exec, (self.mnt, [ + 'sh', '-c', + 'echo -n foo >{}; cp {} {}'.format( + quote(os.path.join(self.mnt, 'zzz', 'foo.txt')), + quote(os.path.join(self.mnt, 'zzz', '.arvados#collection')), + quote(os.path.join(self.okfile)))])) + self.assertRegexpMatches( + json.load(open(self.okfile))['manifest_text'], + r' 0:3:foo.txt\n') -- 2.30.2