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)
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)
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)
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)
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)
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)