Exemple #1
0
 def test_delete(self):
     # RMDIR
     home_path = 'home-' + utils.random_ascii()
     os.mkdir(self.full_path(home_path))
     self.assertEqual(set(('.keys', '.cluster', home_path)), set(os.listdir(self.mountpoint)))
     os.rmdir(self.full_path(home_path))
     self.assertEqual(set(('.keys', '.cluster')), set(os.listdir(self.mountpoint)))
     # RMFILE
     home_path = 'home-' + utils.random_ascii()
     os.mkdir(self.full_path(home_path))
     file_path = os.path.join(home_path, 'file-' + utils.random_ascii())
     file_content = 'content-' + utils.random_ascii()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(file_content)
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(file_content, handler.read())
     os.remove(self.full_path(file_path))
     with self.assertRaises(FileNotFoundError):
         os.stat(self.full_path(file_path))
     self.assertEqual([], os.listdir(self.full_path(home_path)))
     with self.assertRaises(FileNotFoundError):
         with open(self.full_path(file_path), 'r') as handler:
             handler.read()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(file_content)
     self.assertEqual([os.path.basename(file_path)], os.listdir(self.full_path(home_path)))
     # RM NESTED
     os.rmdir(self.full_path(home_path))
     with self.assertRaises(FileNotFoundError):
         os.stat(self.full_path(file_path))
     with self.assertRaises(FileNotFoundError):
         os.stat(self.full_path(home_path))
Exemple #2
0
 def test_delete(self):
     # RMDIR
     home_path = 'home-' + utils.random_ascii()
     os.mkdir(self.full_path(home_path))
     self.assertEqual(set(('.keys', '.cluster', home_path)),
                      set(os.listdir(self.mountpoint)))
     os.rmdir(self.full_path(home_path))
     self.assertEqual(set(('.keys', '.cluster')),
                      set(os.listdir(self.mountpoint)))
     # RMFILE
     home_path = 'home-' + utils.random_ascii()
     os.mkdir(self.full_path(home_path))
     file_path = os.path.join(home_path, 'file-' + utils.random_ascii())
     file_content = 'content-' + utils.random_ascii()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(file_content)
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(file_content, handler.read())
     os.remove(self.full_path(file_path))
     with self.assertRaises(FileNotFoundError):
         os.stat(self.full_path(file_path))
     self.assertEqual([], os.listdir(self.full_path(home_path)))
     with self.assertRaises(FileNotFoundError):
         with open(self.full_path(file_path), 'r') as handler:
             handler.read()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(file_content)
     self.assertEqual([os.path.basename(file_path)],
                      os.listdir(self.full_path(home_path)))
     # RM NESTED
     os.rmdir(self.full_path(home_path))
     with self.assertRaises(FileNotFoundError):
         os.stat(self.full_path(file_path))
     with self.assertRaises(FileNotFoundError):
         os.stat(self.full_path(home_path))
Exemple #3
0
 def test_write(self):
     file_path = 'file-' + utils.random_ascii()
     file_content = 'content-%s\n' % utils.random_ascii()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(file_content)
     self.assertEqual(set(('.keys', '.cluster', file_path)), set(os.listdir(self.mountpoint)))
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(file_content, handler.read())
     # Update
     alt_file_content = '%s\n' % utils.random_ascii()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(alt_file_content)
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(alt_file_content, handler.read())
     append_content = utils.random_ascii() + '\n'
     with open(self.full_path(file_path), 'a') as handler:
         handler.write(append_content)
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(alt_file_content + append_content, handler.read())
     with open(self.full_path(file_path), 'r') as handler:
         for ix, line in enumerate(handler.readlines()):
             if ix == 0:
                 self.assertEqual(alt_file_content, line)
             elif ix == 1:
                 self.assertEqual(append_content, line)
         handler.seek(len(alt_file_content))
         self.assertEqual(append_content, handler.read())
         handler.seek(0)
         self.assertEqual(alt_file_content + append_content, handler.read())
         handler.seek(1)
         self.assertEqual((alt_file_content + append_content)[1:6+1], handler.read(6))
     with self.assertRaises(FileExistsError):
         os.mkdir(self.full_path(file_path))
Exemple #4
0
 def test_write(self):
     file_path = 'file-' + utils.random_ascii()
     file_content = 'content-%s\n' % utils.random_ascii()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(file_content)
     self.assertEqual(set(('.keys', '.cluster', file_path)),
                      set(os.listdir(self.mountpoint)))
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(file_content, handler.read())
     # Update
     alt_file_content = '%s\n' % utils.random_ascii()
     with open(self.full_path(file_path), 'w') as handler:
         handler.write(alt_file_content)
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(alt_file_content, handler.read())
     append_content = utils.random_ascii() + '\n'
     with open(self.full_path(file_path), 'a') as handler:
         handler.write(append_content)
     with open(self.full_path(file_path), 'r') as handler:
         self.assertEqual(alt_file_content + append_content, handler.read())
     with open(self.full_path(file_path), 'r') as handler:
         for ix, line in enumerate(handler.readlines()):
             if ix == 0:
                 self.assertEqual(alt_file_content, line)
             elif ix == 1:
                 self.assertEqual(append_content, line)
         handler.seek(len(alt_file_content))
         self.assertEqual(append_content, handler.read())
         handler.seek(0)
         self.assertEqual(alt_file_content + append_content, handler.read())
         handler.seek(1)
         self.assertEqual((alt_file_content + append_content)[1:6 + 1],
                          handler.read(6))
     with self.assertRaises(FileExistsError):
         os.mkdir(self.full_path(file_path))
Exemple #5
0
 def test_mkdir(self):
     home_path = 'home-' + utils.random_ascii()
     os.mkdir(self.full_path(home_path))
     self.assertEqual(set(('.keys', '.cluster', home_path)), set(os.listdir(self.mountpoint)))
     user_path = os.path.join(home_path, 'user-' + utils.random_ascii())
     with self.assertRaises(FileExistsError):
         os.mkdir(self.full_path(home_path))
     os.mkdir(self.full_path(user_path))
     self.assertEqual(set(('.keys', '.cluster', home_path)), set(os.listdir(self.mountpoint)))
     self.assertEqual([os.path.basename(user_path)], os.listdir(self.full_path(home_path)))
Exemple #6
0
 def test_mkdir(self):
     home_path = 'home-' + utils.random_ascii()
     os.mkdir(self.full_path(home_path))
     self.assertEqual(set(('.keys', '.cluster', home_path)),
                      set(os.listdir(self.mountpoint)))
     user_path = os.path.join(home_path, 'user-' + utils.random_ascii())
     with self.assertRaises(FileExistsError):
         os.mkdir(self.full_path(home_path))
     os.mkdir(self.full_path(user_path))
     self.assertEqual(set(('.keys', '.cluster', home_path)),
                      set(os.listdir(self.mountpoint)))
     self.assertEqual([os.path.basename(user_path)],
                      os.listdir(self.full_path(home_path)))
Exemple #7
0
 def test_permission(self):
     self.assertEqual(0o750, stat.S_IMODE(os.stat(self.mountpoint).st_mode))
     self.assertEqual(0o640, stat.S_IMODE(os.stat(self.full_path('.cluster')).st_mode))
     self.process.terminate()
     self.process.join()
     __, self.keypath = tempfile.mkstemp()
     self.addCleanup(os.remove, self.keypath)
     self.key = Key.generate()
     self.key.save(self.keypath)
     self.fs = FileSystem(self.logpath, self.keypath, serf=False)
     self.process = Process(target=lambda: FUSE(self.fs, self.mountpoint, nothreads=True, foreground=True))
     self.process.start()
     time.sleep(0.01)
     self.assertEqual(0o550, stat.S_IMODE(os.stat(self.mountpoint).st_mode))
     self.assertEqual(0o440, stat.S_IMODE(os.stat(self.full_path('.cluster')).st_mode))
     home_path = 'home-' + utils.random_ascii()
     with self.assertRaises(PermissionError):
         os.mkdir(self.full_path(home_path))
Exemple #8
0
 def test_permission(self):
     self.assertEqual(0o750, stat.S_IMODE(os.stat(self.mountpoint).st_mode))
     self.assertEqual(
         0o640, stat.S_IMODE(os.stat(self.full_path('.cluster')).st_mode))
     self.process.terminate()
     self.process.join()
     __, self.keypath = tempfile.mkstemp()
     self.addCleanup(os.remove, self.keypath)
     self.key = Key.generate()
     self.key.save(self.keypath)
     self.fs = FileSystem(self.logpath, self.keypath, serf=False)
     self.process = Process(target=lambda: FUSE(
         self.fs, self.mountpoint, nothreads=True, foreground=True))
     self.process.start()
     time.sleep(0.01)
     self.assertEqual(0o550, stat.S_IMODE(os.stat(self.mountpoint).st_mode))
     self.assertEqual(
         0o440, stat.S_IMODE(os.stat(self.full_path('.cluster')).st_mode))
     home_path = 'home-' + utils.random_ascii()
     with self.assertRaises(PermissionError):
         os.mkdir(self.full_path(home_path))