Exemple #1
0
    def test_audit(self):
        manifest = Manifest.blank(2)
        worker = Worker('foo',
                        LunrConfig({
                            'backup': {'client': 'memory'},
                            'storage': {'run_dir': self.scratch}
                        }),
                        manifest=manifest)
        conn = worker.conn
        conn.put_container('foo')
        backup = manifest.create_backup('bak1')
        backup[0] = worker.empty_block_hash
        conn.put_object('foo', backup[0], 'zeroes')
        backup[1] = 'some_block_hash'
        conn.put_object('foo', backup[1], ' more stuff')
        save_manifest(manifest, conn, worker.id, worker._lock_path())
        # Add some non referenced blocks.
        conn.put_object('foo', 'stuff1', 'unreferenced stuff1')
        conn.put_object('foo', 'stuff2', 'unreferenced stuff2')
        conn.put_object('foo', 'stuff3', 'unreferenced stuff3')

        _headers, original_list = conn.get_container('foo')
        # Manifest, 2 blocks, 3 stuffs.
        self.assertEquals(len(original_list), 6)

        worker.audit()
        _headers, new_list = conn.get_container('foo')
        # Manifest, 2 blocks.
        self.assertEquals(len(new_list), 3)
Exemple #2
0
    def test_integer_backup_id(self):
        size = 2
        m = manifest.Manifest.blank(size)
        backup = m.create_backup(0)
        for blockno in range(size):
            backup[blockno] = '0000'
        backup = m.create_backup(1)
        for blockno in range(0, size, 10):
            backup[blockno] = '1111'
        backup = m.create_backup('id2')
        for blockno in range(0, size, 10):
            backup[blockno] = '2222'

        c = MockConnection()
        with temp_disk_file() as lock_file:
            manifest.save_manifest(m, c, 'vol1', lock_file)

            expected = dict(m)
            vol1 = m.get_backup(1)
            vol1_str = m.get_backup('1')
            vol2 = m.get_backup('id2')

            m = manifest.load_manifest(c, 'vol1', lock_file)
            self.assertEquals(m, expected)

            self.assertEquals(m.get_backup(1), vol1)
            self.assertEquals(m.get_backup('1'), vol1_str)
            self.assertEquals(vol1, vol1_str)
            self.assertEquals(m.get_backup('id2'), vol2)
Exemple #3
0
 def test_delete_with_missing_blocks(self):
     stats_path = os.path.join(self.scratch, 'stats')
     manifest = Manifest.blank(2)
     worker = Worker('foo',
                     LunrConfig({
                         'backup': {'client': 'memory'},
                         'storage': {'run_dir': self.scratch}
                     }),
                     manifest=manifest)
     conn = worker.conn
     conn.put_container('foo')
     backup = manifest.create_backup('bak1')
     backup[0] = worker.empty_block_hash
     backup[1] = 'some_random_block_that_isnt_uploaded'
     save_manifest(manifest, conn, worker.id, worker._lock_path())
     obj = conn.get_object('foo', 'manifest', newest=True)
     self.assertRaises(ClientException, conn.get_object,
                       'foo', backup[0], newest=True)
     self.assertRaises(ClientException, conn.get_object,
                       'foo', backup[1], newest=True)
     # Shouldn't blow up on 404.
     worker.delete('bak1')
     # Manifest should still be nicely deleted.
     self.assertRaises(ClientException, conn.get_object,
                       'foo', 'manifest', newest=True)
Exemple #4
0
    def test_integer_backup_id(self):
        size = 2
        m = manifest.Manifest.blank(size)
        backup = m.create_backup(0)
        for blockno in range(size):
            backup[blockno] = '0000'
        backup = m.create_backup(1)
        for blockno in range(0, size, 10):
            backup[blockno] = '1111'
        backup = m.create_backup('id2')
        for blockno in range(0, size, 10):
            backup[blockno] = '2222'

        c = MockConnection()
        with temp_disk_file() as lock_file:
            manifest.save_manifest(m, c, 'vol1', lock_file)

            expected = dict(m)
            vol1 = m.get_backup(1)
            vol1_str = m.get_backup('1')
            vol2 = m.get_backup('id2')

            m = manifest.load_manifest(c, 'vol1', lock_file)
            self.assertEquals(m, expected)

            self.assertEquals(m.get_backup(1), vol1)
            self.assertEquals(m.get_backup('1'), vol1_str)
            self.assertEquals(vol1, vol1_str)
            self.assertEquals(m.get_backup('id2'), vol2)
Exemple #5
0
    def test_audit(self):
        manifest = Manifest.blank(2)
        worker = Worker('foo',
                        LunrConfig({
                            'backup': {
                                'client': 'memory'
                            },
                            'storage': {
                                'run_dir': self.scratch
                            }
                        }),
                        manifest=manifest)
        conn = worker.conn
        conn.put_container('foo')
        backup = manifest.create_backup('bak1')
        backup[0] = worker.empty_block_hash
        conn.put_object('foo', backup[0], 'zeroes')
        backup[1] = 'some_block_hash'
        conn.put_object('foo', backup[1], ' more stuff')
        save_manifest(manifest, conn, worker.id, worker._lock_path())
        # Add some non referenced blocks.
        conn.put_object('foo', 'stuff1', 'unreferenced stuff1')
        conn.put_object('foo', 'stuff2', 'unreferenced stuff2')
        conn.put_object('foo', 'stuff3', 'unreferenced stuff3')

        _headers, original_list = conn.get_container('foo')
        # Manifest, 2 blocks, 3 stuffs.
        self.assertEquals(len(original_list), 6)

        worker.audit()
        _headers, new_list = conn.get_container('foo')
        # Manifest, 2 blocks.
        self.assertEquals(len(new_list), 3)
Exemple #6
0
    def test_basic_store(self):
        size = 2
        m = manifest.Manifest.blank(size)
        backup = m.create_backup('id0')
        for blockno in range(size):
            backup[blockno] = '0000'
        backup = m.create_backup('id1')
        for blockno in range(0, size, 10):
            backup[blockno] = '1111'

        c = MockConnection()
        with temp_disk_file() as lock_file:
            manifest.save_manifest(m, c, 'vol1', lock_file)

            expected = dict(m)
            vol1 = m.get_backup('id1')

            m = manifest.load_manifest(c, 'vol1', lock_file)
            self.assertEquals(m, expected)
            self.assertEquals(m.get_backup('id1'), vol1)
            self.assertEquals(m.version, self.VERSION)
Exemple #7
0
    def test_basic_store(self):
        size = 2
        m = manifest.Manifest.blank(size)
        backup = m.create_backup('id0')
        for blockno in range(size):
            backup[blockno] = '0000'
        backup = m.create_backup('id1')
        for blockno in range(0, size, 10):
            backup[blockno] = '1111'

        c = MockConnection()
        with temp_disk_file() as lock_file:
            manifest.save_manifest(m, c, 'vol1', lock_file)

            expected = dict(m)
            vol1 = m.get_backup('id1')

            m = manifest.load_manifest(c, 'vol1', lock_file)
            self.assertEquals(m, expected)
            self.assertEquals(m.get_backup('id1'), vol1)
            self.assertEquals(m.version, self.VERSION)
Exemple #8
0
 def test_delete_with_missing_blocks(self):
     stats_path = os.path.join(self.scratch, 'stats')
     manifest = Manifest.blank(2)
     worker = Worker('foo',
                     LunrConfig({
                         'backup': {
                             'client': 'memory'
                         },
                         'storage': {
                             'run_dir': self.scratch
                         }
                     }),
                     manifest=manifest)
     conn = worker.conn
     conn.put_container('foo')
     backup = manifest.create_backup('bak1')
     backup[0] = worker.empty_block_hash
     backup[1] = 'some_random_block_that_isnt_uploaded'
     save_manifest(manifest, conn, worker.id, worker._lock_path())
     obj = conn.get_object('foo', 'manifest', newest=True)
     self.assertRaises(ClientException,
                       conn.get_object,
                       'foo',
                       backup[0],
                       newest=True)
     self.assertRaises(ClientException,
                       conn.get_object,
                       'foo',
                       backup[1],
                       newest=True)
     # Shouldn't blow up on 404.
     worker.delete('bak1')
     # Manifest should still be nicely deleted.
     self.assertRaises(ClientException,
                       conn.get_object,
                       'foo',
                       'manifest',
                       newest=True)