Rev 2632: Explicitly mark the number of keys elements in use in GraphIndex files. in http://people.ubuntu.com/~robertc/baz2.0/index
Robert Collins
robertc at robertcollins.net
Fri Jul 27 08:43:02 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/index
------------------------------------------------------------
revno: 2632
revision-id: robertc at robertcollins.net-20070727074259-47dvq2n20vf0c79e
parent: robertc at robertcollins.net-20070727061700-bo6g7qfrhjb2uofj
committer: Robert Collins <robertc at robertcollins.net>
branch nick: index
timestamp: Fri 2007-07-27 17:42:59 +1000
message:
Explicitly mark the number of keys elements in use in GraphIndex files.
modified:
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
bzrlib/tests/test_index.py test_index.py-20070712131115-lolkarso50vjr64s-2
=== modified file 'bzrlib/index.py'
--- a/bzrlib/index.py 2007-07-27 05:55:46 +0000
+++ b/bzrlib/index.py 2007-07-27 07:42:59 +0000
@@ -28,6 +28,7 @@
from bzrlib import errors
+_OPTION_KEY_ELEMENTS = "key_elements="
_OPTION_NODE_REFS = "node_ref_lists="
_SIGNATURE = "Bazaar Graph Index 1\n"
@@ -105,7 +106,8 @@
def finish(self):
lines = [_SIGNATURE]
lines.append(_OPTION_NODE_REFS + str(self.reference_lists) + '\n')
- prefix_length = len(lines[0]) + len(lines[1])
+ lines.append(_OPTION_KEY_ELEMENTS + str(self._key_length) + '\n')
+ prefix_length = len(lines[0]) + len(lines[1]) + len(lines[2])
# references are byte offsets. To avoid having to do nasty
# polynomial work to resolve offsets (references to later in the
# file cannot be determined until all the inbetween references have
@@ -289,6 +291,13 @@
self.node_ref_lists = int(options_line[len(_OPTION_NODE_REFS):-1])
except ValueError:
raise errors.BadIndexOptions(self)
+ options_line = stream.readline()
+ if not options_line.startswith(_OPTION_KEY_ELEMENTS):
+ raise errors.BadIndexOptions(self)
+ try:
+ self._key_length = int(options_line[len(_OPTION_KEY_ELEMENTS):-1])
+ except ValueError:
+ raise errors.BadIndexOptions(self)
def iter_entries(self, keys):
"""Iterate over keys within the index.
=== modified file 'bzrlib/tests/test_index.py'
--- a/bzrlib/tests/test_index.py 2007-07-27 05:46:46 +0000
+++ b/bzrlib/tests/test_index.py 2007-07-27 07:42:59 +0000
@@ -27,26 +27,26 @@
builder = GraphIndexBuilder()
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\n\n", contents)
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\nkey_elements=1\n\n", contents)
def test_build_index_one_reference_list_empty(self):
builder = GraphIndexBuilder(reference_lists=1)
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\n\n", contents)
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\nkey_elements=1\n\n", contents)
def test_build_index_two_reference_list_empty(self):
builder = GraphIndexBuilder(reference_lists=2)
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\n\n", contents)
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\nkey_elements=1\n\n", contents)
def test_build_index_one_node_no_refs(self):
builder = GraphIndexBuilder()
builder.add_node(('akey', ), 'data')
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\nkey_elements=1\n"
"akey\x00\x00\x00data\n\n", contents)
def test_build_index_one_node_no_refs_accepts_empty_reflist(self):
@@ -54,7 +54,7 @@
builder.add_node(('akey', ), 'data', ())
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\nkey_elements=1\n"
"akey\x00\x00\x00data\n\n", contents)
def test_add_node_empty_value(self):
@@ -62,7 +62,7 @@
builder.add_node(('akey', ), '')
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\nkey_elements=1\n"
"akey\x00\x00\x00\n\n", contents)
def test_build_index_two_nodes_sorted(self):
@@ -76,7 +76,7 @@
builder.add_node(('2001', ), 'data')
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=0\nkey_elements=1\n"
"2000\x00\x00\x00data\n"
"2001\x00\x00\x00data\n"
"2002\x00\x00\x00data\n"
@@ -87,7 +87,7 @@
builder.add_node(('key', ), 'data', ([], ))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\nkey_elements=1\n"
"key\x00\x00\x00data\n"
"\n", contents)
@@ -96,7 +96,7 @@
builder.add_node(('key', ), 'data', ([], []))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\nkey_elements=1\n"
"key\x00\x00\t\x00data\n"
"\n", contents)
@@ -106,8 +106,8 @@
builder.add_node(('key', ), 'data', ([('reference', )], ))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\n"
- "key\x00\x0051\x00data\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\nkey_elements=1\n"
+ "key\x00\x0066\x00data\n"
"reference\x00\x00\x00data\n"
"\n", contents)
@@ -118,8 +118,8 @@
builder.add_node(('key', ), 'data', ([('reference', ), ('reference2', )], ))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\n"
- "key\x00\x0054\r71\x00data\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\nkey_elements=1\n"
+ "key\x00\x00071\r088\x00data\n"
"reference\x00\x00\x00data\n"
"reference2\x00\x00\x00data\n"
"\n", contents)
@@ -130,9 +130,9 @@
builder.add_node(('rey', ), 'data', ([('keference', )], [('keference', )]))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\nkey_elements=1\n"
"keference\x00\x00\t\x00data\n"
- "rey\x00\x0038\t38\x00data\n"
+ "rey\x00\x0053\t53\x00data\n"
"\n", contents)
def test_add_node_referencing_missing_key_makes_absent(self):
@@ -140,10 +140,10 @@
builder.add_node(('rey', ), 'data', ([('beference', ), ('aeference2', )], ))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\nkey_elements=1\n"
"aeference2\x00a\x00\x00\n"
"beference\x00a\x00\x00\n"
- "rey\x00\x0053\r38\x00data\n"
+ "rey\x00\x0068\r53\x00data\n"
"\n", contents)
def test_node_references_three_digits(self):
@@ -153,11 +153,11 @@
builder.add_node(('2-key', ), '', (references, ))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=1\nkey_elements=1\n"
"0\x00a\x00\x00\n"
"1\x00a\x00\x00\n"
"2\x00a\x00\x00\n"
- "2-key\x00\x00130\r124\r118\r112\r106\r100\r050\r044\r038\x00\n"
+ "2-key\x00\x00145\r139\r133\r127\r121\r115\r065\r059\r053\x00\n"
"3\x00a\x00\x00\n"
"4\x00a\x00\x00\n"
"5\x00a\x00\x00\n"
@@ -173,9 +173,9 @@
builder.add_node(('parent', ), '', ([('aail', ), ('zther', )], []))
stream = builder.finish()
contents = stream.read()
- self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\n"
+ self.assertEqual("Bazaar Graph Index 1\nnode_ref_lists=2\nkey_elements=1\n"
"aail\x00a\x00\x00\n"
- "parent\x00\x0038\r63\t\x00\n"
+ "parent\x00\x0053\r78\t\x00\n"
"zther\x00a\x00\x00\n"
"\n", contents)
More information about the bazaar-commits
mailing list