Rev 5385: Add some tests that check the leaf factory is correct. in http://bazaar.launchpad.net/~jameinel/bzr/2.3-btree-chk-leaf
John Arbash Meinel
john at arbash-meinel.com
Thu Aug 5 20:26:06 BST 2010
At http://bazaar.launchpad.net/~jameinel/bzr/2.3-btree-chk-leaf
------------------------------------------------------------
revno: 5385
revision-id: john at arbash-meinel.com-20100805192552-sqoq0ux1juy9giru
parent: john at arbash-meinel.com-20100804192024-43x2jz5hh28vukjl
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 2.3-btree-chk-leaf
timestamp: Thu 2010-08-05 14:25:52 -0500
message:
Add some tests that check the leaf factory is correct.
I'm not really happy about how this is getting exposed. I'll ask in review.
-------------- next part --------------
=== modified file 'bzrlib/repofmt/groupcompress_repo.py'
--- a/bzrlib/repofmt/groupcompress_repo.py 2010-08-04 16:33:26 +0000
+++ b/bzrlib/repofmt/groupcompress_repo.py 2010-08-05 19:25:52 +0000
@@ -77,7 +77,6 @@
# from brisbane-core
if pack_collection.chk_index is not None:
chk_index = index_builder_class(reference_lists=0)
- chk_index._leaf_factory = btree_index._gcchk_factory
else:
chk_index = None
Pack.__init__(self,
=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py 2010-08-04 16:33:26 +0000
+++ b/bzrlib/repofmt/pack_repo.py 2010-08-05 19:25:52 +0000
@@ -228,11 +228,13 @@
unlimited_cache = False
if index_type == 'chk':
unlimited_cache = True
- setattr(self, index_type + '_index',
- self.index_class(self.index_transport,
- self.index_name(index_type, self.name),
- self.index_sizes[self.index_offset(index_type)],
- unlimited_cache=unlimited_cache))
+ index = self.index_class(self.index_transport,
+ self.index_name(index_type, self.name),
+ self.index_sizes[self.index_offset(index_type)],
+ unlimited_cache=unlimited_cache)
+ if index_type == 'chk':
+ index._leaf_factory = btree_index._gcchk_factory
+ setattr(self, index_type + '_index', index)
class ExistingPack(Pack):
@@ -1677,8 +1679,7 @@
txt_index = self._make_index(name, '.tix')
sig_index = self._make_index(name, '.six')
if self.chk_index is not None:
- chk_index = self._make_index(name, '.cix', unlimited_cache=True)
- chk_index._leaf_factory = btree_index._gcchk_factory
+ chk_index = self._make_index(name, '.cix', is_chk=True)
else:
chk_index = None
result = ExistingPack(self._pack_transport, name, rev_index,
@@ -1704,7 +1705,7 @@
sig_index = self._make_index(name, '.six', resume=True)
if self.chk_index is not None:
chk_index = self._make_index(name, '.cix', resume=True,
- unlimited_cache=True)
+ is_chk=True)
else:
chk_index = None
result = self.resumed_pack_factory(name, rev_index, inv_index,
@@ -1740,7 +1741,7 @@
return self._index_class(self.transport, 'pack-names', None
).iter_all_entries()
- def _make_index(self, name, suffix, resume=False, unlimited_cache=False):
+ def _make_index(self, name, suffix, resume=False, is_chk=False):
size_offset = self._suffix_offsets[suffix]
index_name = name + suffix
if resume:
@@ -1749,8 +1750,11 @@
else:
transport = self._index_transport
index_size = self._names[name][size_offset]
- return self._index_class(transport, index_name, index_size,
- unlimited_cache=unlimited_cache)
+ index = self._index_class(transport, index_name, index_size,
+ unlimited_cache=is_chk)
+ if is_chk and self._index_class is btree_index.BTreeGraphIndex:
+ index._leaf_factory = btree_index._gcchk_factory
+ return index
def _max_pack_count(self, total_revisions):
"""Return the maximum number of packs to use for total revisions.
=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py 2010-03-31 16:29:25 +0000
+++ b/bzrlib/tests/test_repository.py 2010-08-05 19:25:52 +0000
@@ -31,6 +31,7 @@
UnsupportedFormatError,
)
from bzrlib import (
+ btree_index,
graph,
tests,
)
@@ -681,6 +682,21 @@
class Test2a(tests.TestCaseWithMemoryTransport):
+ def test_chk_bytes_uses_custom_btree_parser(self):
+ mt = self.make_branch_and_memory_tree('test', format='2a')
+ mt.lock_write()
+ self.addCleanup(mt.unlock)
+ mt.add([''], ['root-id'])
+ mt.commit('first')
+ index = mt.branch.repository.chk_bytes._index._graph_index._indices[0]
+ self.assertEqual(btree_index._gcchk_factory, index._leaf_factory)
+ # It should also work if we re-open the repo
+ repo = mt.branch.repository.bzrdir.open_repository()
+ repo.lock_read()
+ self.addCleanup(repo.unlock)
+ index = repo.chk_bytes._index._graph_index._indices[0]
+ self.assertEqual(btree_index._gcchk_factory, index._leaf_factory)
+
def test_fetch_combines_groups(self):
builder = self.make_branch_builder('source', format='2a')
builder.start_series()
More information about the bazaar-commits
mailing list