def test_ioerror_file(self): pool_dir = self.pool_dir path = pjoin(pool_dir, "88", "8843d7f92416211de9ebb963ff4ce28125932878") os.makedirs(path) hd = HashedDirectory(self.temp_dir).connect(self.POOL) with self.assertRaises(IOError): hd.get(b"foobar")
def test_ioerror_directory(self): pool_dir = self.pool_dir path = pjoin(pool_dir, "88", "8843d7f92416211de9ebb963ff4ce28125932878") os.chmod(pool_dir, 0o444) hd = HashedDirectory(self.temp_dir).connect(self.POOL) with self.assertRaises(OSError): hd.create(b"foobar")
def test_delete(self): pool_dir = self.pool_dir path = pjoin(pool_dir, "88", "8843d7f92416211de9ebb963ff4ce28125932878") hd = HashedDirectory(self.temp_dir).connect(self.POOL) value = hd.create(b"foobar") value.write(b"example") value.close() self.assertEqual(open(path, "rb").read(), b"example") hd.delete(b"foobar") self.assertFalse(os.path.isfile(path), msg="File must not exist after delete")
def test_create(self): pool_dir = self.pool_dir path = pjoin(pool_dir, "88", "8843d7f92416211de9ebb963ff4ce28125932878") hd = HashedDirectory(self.temp_dir).connect(self.POOL) value = hd.create(b"foobar") value.write("abcde") value.flush() data = open(path, "rb").read() self.assertEqual(data, b"abcde") value.write("fgh") value.close() data = open(path, "rb").read() self.assertEqual(data, b"abcdefgh")
def test_read(self): pool_dir = self.pool_dir os.mkdir(pjoin(pool_dir, "88")) with open(pjoin(pool_dir, "88", "8843d7f92416211de9ebb963ff4ce28125932878"), "wb") as outfile: outfile.write(b"abcde") hd = HashedDirectory(self.temp_dir).connect(self.POOL) value = hd.get(b"foobar") self.assertEqual(value.read(2), b"ab") value.seek(0) self.assertEqual(value.read(), b"abcde") with self.assertRaises(KeyError): hd.get(b"no_such_key")