Exemple #1
0
class MetadataTest(unittest.TestCase):
    def setUp(self):
        self.meta = Metadata(100)
        self.root = self.meta.root
        self.madedir = self.meta.make_node(self.root, "made_dir", True)
        self.f = self.meta.make_node(self.madedir, "file", False)

    def test_root(self):
        self.assertTrue(self.meta.exists("/"))
        root = self.meta.get_element("/")
        self.assertEqual(root, self.root)
        self.assertTrue(root.is_dir())
        self.assertIsNone(root.parent)
        self.assertListEqual(root.blocks, [])

    def test_not_existance(self):
        self.assertFalse(self.meta.exists("/not_existing"))

    def test_node_making(self):
        self.assertTrue(self.madedir.is_dir())
        self.assertEqual(self.root, self.madedir.parent)
        self.assertEqual(self.madedir, self.meta.get_element("/made_dir"))
        self.assertEqual(self.madedir, self.meta.get_element("/made_dir/"))

        self.assertFalse(self.f.is_dir())
        self.assertTrue(self.meta.exists("/made_dir/file"))
        self.assertEqual(self.f, self.meta.get_element("/made_dir/file"))

    def test_block_reservation(self):
        reserved = []
        for i in range(0, 7):
            k = self.meta.reserve_block_for(self.f)
            reserved.append(k)
            self.assertNotIn(k, self.meta.free_blocks)
        self.assertListEqual(reserved, self.f.blocks)
        self.assertEqual(len(set(reserved)), 7)

    def test_removal(self):
        directory = self.meta.make_node(self.root, "rm_dir", True)
        file_one = self.meta.make_node(directory, "file_one", False)
        file_two = self.meta.make_node(directory, "file_two", False)
        reserved = []
        reserved.append(self.meta.reserve_block_for(file_one))
        reserved.append(self.meta.reserve_block_for(file_one))
        reserved.append(self.meta.reserve_block_for(file_two))

        self.meta.remove(directory)
        self.assertFalse(self.meta.exists("/rm_dir/file_one"))
        self.assertFalse(self.meta.exists("/rm_dir"))
        for i in reserved:
            self.assertIn(i, self.meta.free_blocks)

    def test_move(self):
        move_dir = self.meta.make_node(self.root, "move_dir", True)
        self.meta.move_node(self.f, move_dir, "blah")
        self.assertFalse(self.meta.exists("/made_dir/file"))
        self.assertTrue(self.meta.exists("/move_dir/blah"))
        self.meta.move_node(self.f, self.madedir, "file")
        self.assertTrue(self.meta.exists("/made_dir/file"))