diff options
-rw-r--r-- | obnamlib/clientmetadatatree.py | 10 | ||||
-rw-r--r-- | obnamlib/clientmetadatatree_tests.py | 16 | ||||
-rw-r--r-- | obnamlib/repo.py | 2 | ||||
-rw-r--r-- | obnamlib/repo_fmt_6.py | 12 | ||||
-rw-r--r-- | obnamlib/repo_tests.py | 20 | ||||
-rw-r--r-- | test-gpghome/random_seed | bin | 600 -> 600 bytes |
6 files changed, 9 insertions, 51 deletions
diff --git a/obnamlib/clientmetadatatree.py b/obnamlib/clientmetadatatree.py index 7d98dbdb..1019f71b 100644 --- a/obnamlib/clientmetadatatree.py +++ b/obnamlib/clientmetadatatree.py @@ -72,7 +72,6 @@ class ClientMetadataTree(obnamlib.RepositoryTree): def __init__(self, fs, client_dir, node_size, upload_queue_size, lru_size, repo): tracing.trace('new ClientMetadataTree, client_dir=%s' % client_dir) - self.current_time = repo.current_time key_bytes = len(self.hashkey(0, self.default_file_id(''), 0, 0)) obnamlib.RepositoryTree.__init__(self, fs, client_dir, key_bytes, node_size, upload_queue_size, @@ -212,9 +211,6 @@ class ClientMetadataTree(obnamlib.RepositoryTree): def commit(self): tracing.trace('committing ClientMetadataTree') - if self.tree: - now = int(self.current_time()) - self._insert_int(self.tree, self.genkey(self.GEN_ENDED), now) obnamlib.RepositoryTree.commit(self) def init_forest(self, *args, **kwargs): @@ -258,9 +254,7 @@ class ClientMetadataTree(obnamlib.RepositoryTree): tracing.trace('start new generation') self.start_changes() gen_id = self.forest.new_id() - now = int(self.current_time()) self._insert_int(self.tree, self.genkey(self.GEN_ID), gen_id) - self._insert_int(self.tree, self.genkey(self.GEN_STARTED), now) def set_current_generation_is_checkpoint(self, is_checkpoint): tracing.trace('is_checkpoint=%s', is_checkpoint) @@ -292,7 +286,7 @@ class ClientMetadataTree(obnamlib.RepositoryTree): except KeyError: # pragma: no cover return None - def _lookup_time(self, tree, what): + def _lookup_time(self, tree, what): # pragma: no cover try: return self._lookup_int(tree, self.genkey(what)) except KeyError: @@ -304,7 +298,7 @@ class ClientMetadataTree(obnamlib.RepositoryTree): except KeyError: return None - def get_generation_times(self, genid): + def get_generation_times(self, genid): # pragma: no cover tree = self.find_generation(genid) return (self._lookup_time(tree, self.GEN_STARTED), self._lookup_time(tree, self.GEN_ENDED)) diff --git a/obnamlib/clientmetadatatree_tests.py b/obnamlib/clientmetadatatree_tests.py index 3b81292d..07bf92ae 100644 --- a/obnamlib/clientmetadatatree_tests.py +++ b/obnamlib/clientmetadatatree_tests.py @@ -63,7 +63,6 @@ class ClientMetadataTreeTests(unittest.TestCase): genid = self.client.get_generation_id(self.client.tree) self.assertEqual(lookup(self.client.GEN_ID), genid) - self.assertEqual(lookup(self.client.GEN_STARTED), 12765) self.assertFalse(self.client.get_is_checkpoint(genid)) def test_starts_second_generation(self): @@ -83,7 +82,6 @@ class ClientMetadataTreeTests(unittest.TestCase): genid2 = self.client.get_generation_id(self.client.tree) self.assertEqual(lookup(self.client.GEN_ID), genid2) self.assertNotEqual(genid1, genid2) - self.assertEqual(lookup(self.client.GEN_STARTED), 2) self.assertFalse(self.client.get_is_checkpoint(genid2)) self.assertEqual(self.client.list_generations(), [genid1, genid2]) @@ -113,20 +111,6 @@ class ClientMetadataTreeTests(unittest.TestCase): self.assertEqual(self.client.list_generations(), []) self.assertEqual(self.client.tree, None) - def test_started_generation_has_start_time(self): - self.now = 1 - self.client.start_generation() - genid = self.client.get_generation_id(self.client.tree) - self.assertEqual(self.client.get_generation_times(genid), (1, None)) - - def test_committed_generation_has_times(self): - self.now = 1 - self.client.start_generation() - genid = self.client.get_generation_id(self.client.tree) - self.now = 2 - self.client.commit() - self.assertEqual(self.client.get_generation_times(genid), (1, 2)) - def test_finds_generation_the_first_time(self): self.client.start_generation() tree = self.client.tree diff --git a/obnamlib/repo.py b/obnamlib/repo.py index 35fd6c5b..12b6572b 100644 --- a/obnamlib/repo.py +++ b/obnamlib/repo.py @@ -579,7 +579,7 @@ class Repository(object): raise obnamlib.Error('cannot remove started generation') self.removed_generations.append(gen) - def get_generation_times(self, gen): + def get_generation_times(self, gen): # pragma: no cover '''Return start and end times of a generation. An unfinished generation has no end time, so None is returned. diff --git a/obnamlib/repo_fmt_6.py b/obnamlib/repo_fmt_6.py index f667c60f..2d24064f 100644 --- a/obnamlib/repo_fmt_6.py +++ b/obnamlib/repo_fmt_6.py @@ -247,12 +247,6 @@ class RepositoryFormat6(obnamlib.RepositoryInterface): # Handling of individual clients. - def current_time(self): - # ClientMetadataTree wants us to provide this method. - # FIXME: A better design would be to for us to provide - # the class with a function to call. - return self._current_time() - def _setup_client(self): # We keep a list of all open clients. An open client may or # may not be locked. Each value in the dict is a tuple of @@ -359,6 +353,11 @@ class RepositoryFormat6(obnamlib.RepositoryInterface): for gen_number in open_client.removed_generation_numbers: open_client.client.remove_generation(gen_number) + if (open_client.current_generation_number and + open_client.current_generation_number not in + open_client.removed_generation_numbers): + open_client.client.set_generation_ended(self._current_time()) + if (open_client.current_generation_number or open_client.removed_generation_numbers): open_client.client.commit() @@ -427,6 +426,7 @@ class RepositoryFormat6(obnamlib.RepositoryInterface): raise obnamlib.RepositoryClientGenerationUnfinished(client_name) open_client.client.start_generation() + open_client.client.set_generation_started(self._current_time()) open_client.current_generation_number = \ open_client.client.get_generation_id(open_client.client.tree) diff --git a/obnamlib/repo_tests.py b/obnamlib/repo_tests.py index bc92d71a..68f0fc74 100644 --- a/obnamlib/repo_tests.py +++ b/obnamlib/repo_tests.py @@ -383,26 +383,6 @@ class RepositoryClientTests(unittest.TestCase): self.repo.lock_client('client_name') self.assertNotEqual(gen, self.repo.start_generation()) - def test_new_generation_has_start_time_only(self): - self.repo.lock_client('client_name') - gen = self.repo.start_generation() - start, end = self.repo.get_generation_times(gen) - self.assertNotEqual(start, None) - self.assertEqual(end, None) - - def test_commited_generation_has_start_and_end_times(self): - self.repo.lock_client('client_name') - self.repo.lock_shared() - gen = self.repo.start_generation() - self.repo.commit_client() - self.repo.commit_shared() - - self.repo.open_client('client_name') - start, end = self.repo.get_generation_times(gen) - self.assertNotEqual(start, None) - self.assertNotEqual(end, None) - self.assert_(start <= end) - def test_adding_generation_without_committing_does_not_add_it(self): self.repo.lock_client('client_name') self.repo.lock_shared() diff --git a/test-gpghome/random_seed b/test-gpghome/random_seed Binary files differindex dd465b71..75f29732 100644 --- a/test-gpghome/random_seed +++ b/test-gpghome/random_seed |