Rev 5494: Basic testing that adding a new offset puts it in the right place and updates the info. in http://bazaar.launchpad.net/~jameinel/bzr/2.3-gcb-peak-mem

John Arbash Meinel john at arbash-meinel.com
Wed Oct 20 18:54:02 BST 2010


At http://bazaar.launchpad.net/~jameinel/bzr/2.3-gcb-peak-mem

------------------------------------------------------------
revno: 5494
revision-id: john at arbash-meinel.com-20101020175400-vx7l3rhs04kh48ju
parent: john at arbash-meinel.com-20101018211803-e88mvx0f2serp0nd
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 2.3-gcb-peak-mem
timestamp: Wed 2010-10-20 12:54:00 -0500
message:
  Basic testing that adding a new offset puts it in the right place and updates the info.
-------------- next part --------------
=== modified file '.bzrignore'
--- a/.bzrignore	2010-10-14 21:45:37 +0000
+++ b/.bzrignore	2010-10-20 17:54:00 +0000
@@ -52,7 +52,7 @@
 bzrlib/_btree_serializer_pyx.c
 bzrlib/_chk_map_pyx.c
 bzrlib/_chunks_to_lines_pyx.c
-bzrlib/_delta_index.c
+bzrlib/_delta_index_pyx.c
 bzrlib/_dirstate_helpers_pyx.c
 bzrlib/_groupcompress_pyx.c
 bzrlib/_knit_load_data_pyx.c

=== modified file 'bzrlib/_delta_index_pyx.pyx'
--- a/bzrlib/_delta_index_pyx.pyx	2010-10-18 21:18:03 +0000
+++ b/bzrlib/_delta_index_pyx.pyx	2010-10-20 17:54:00 +0000
@@ -143,6 +143,7 @@
 
     cdef _add_offset(self, rabin_offset offset):
         self._add_offset_to_buckets(self.buckets, self.hash_mask, offset)
+        self.num_entries += 1
 
     def _py_add_offset(self, val, source):
         """A python thunk for testing _add_offset
@@ -184,6 +185,7 @@
                 self._add_offset_to_buckets(new_buckets, new_mask, offset)
                 offset = offset.next
         self.buckets = new_buckets
+        self.hash_mask = new_mask
 
     def add_source(self, source):
         """Add a source of more data to delta against.

=== modified file 'bzrlib/tests/test__delta_index.py'
--- a/bzrlib/tests/test__delta_index.py	2010-10-18 21:18:03 +0000
+++ b/bzrlib/tests/test__delta_index.py	2010-10-20 17:54:00 +0000
@@ -164,29 +164,50 @@
 class TestRabinIndex_ensure_enough_buckets(TestCaseWithRabinIndex):
 
     def test_create_empty_buckets(self):
-        self.index._ensure_enough_buckets(0)
         self.assertEqual(16, len(self.index.buckets))
         self.assertEqual([None]*16, self.index.buckets)
+        self.assertEqual(15, self.index.hash_mask)
 
     def test_buckets_get_reassigned(self):
         bucket = self._module.RabinBucket()
-        self.index.buckets[0] = bucket
+        self.index.buckets[1] = bucket
+        self.index.num_entries = 1
         offset = self._module.rabin_offset()
-        offset.val = 1
+        offset.val = 17
         bucket.first = offset
         bucket.count = 1
-        self.index._ensure_enough_buckets(0)
         # At this point, we should get a 16-wide buckets array, with the offset
         # moved to the right location
         self.assertEqual(16, len(self.index.buckets))
+        self.assertEqual(15, self.index.hash_mask)
         bucket = self.index.buckets[1]
         self.assertIsNot(None, bucket)
         self.assertIs(offset, bucket.first)
         self.assertEqual(1, bucket.count)
         self.assertEqual([None], self.index.buckets[:1])
         self.assertEqual([None]*14, self.index.buckets[2:])
+        # Now switch to a wider bucket
+        self.index._ensure_enough_buckets(2048)
+        self.assertEqual(32, len(self.index.buckets))
+        self.assertEqual(31, self.index.hash_mask)
+        bucket = self.index.buckets[17]
+        self.assertIsNot(None, bucket)
+        self.assertIs(offset, bucket.first)
+        self.assertEqual(1, bucket.count)
+        self.assertEqual([None]*17, self.index.buckets[:17])
+        self.assertEqual([None]*14, self.index.buckets[18:])
 
 
 class TestRabinIndex_add_offset(TestCaseWithRabinIndex):
 
     def test_add_offset_simple(self):
+        offset = self.index._py_add_offset(1, 0)
+        self.assertEqual(1, offset.val)
+        self.assertEqual(0, offset.source)
+        self.assertEqual(1, self.index.num_entries)
+        self.assertIsNot(None, self.index.buckets[1])
+        bucket = self.index.buckets[1]
+        self.assertEqual(1, bucket.count)
+        offset = bucket.first
+        self.assertIsNot(None, offset)
+        self.assertIs(None, offset.next)



More information about the bazaar-commits mailing list