Merge lp:~gz/bzr/2.5_2.4_integration into lp:bzr/2.5

Proposed by Martin Packman
Status: Merged
Approved by: Martin Packman
Approved revision: no longer in the source branch.
Merged at revision: 6482
Proposed branch: lp:~gz/bzr/2.5_2.4_integration
Merge into: lp:bzr/2.5
Diff against target: 134 lines (+24/-12)
2 files modified
bzrlib/tests/test_btree_index.py (+21/-12)
doc/en/release-notes/bzr-2.4.txt (+3/-0)
To merge this branch: bzr merge lp:~gz/bzr/2.5_2.4_integration
Reviewer Review Type Date Requested Status
bzr-core Pending
Review via email: mp+94759@code.launchpad.net

Commit message

Merge 2.4 to fix test failures from slightly better zlib compression

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

sent to pqm by email

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bzrlib/tests/test_btree_index.py'
2--- bzrlib/tests/test_btree_index.py 2011-11-16 20:59:10 +0000
3+++ bzrlib/tests/test_btree_index.py 2012-02-27 13:11:17 +0000
4@@ -103,6 +103,16 @@
5 self.overrideAttr(btree_index, '_PAGE_SIZE')
6 btree_index._PAGE_SIZE = 2048
7
8+ def assertEqualsApproxCompressed(self, expected, actual, slop=6):
9+ """Check a count of compressed bytes is approximately as expected
10+
11+ Relying on compressed length being stable even with fixed inputs is
12+ slightly bogus, but zlib is stable enough that this mostly works.
13+ """
14+ if not expected - slop < actual < expected + slop:
15+ self.fail("Expected around %d bytes compressed but got %d" %
16+ (expected, actual))
17+
18
19 class TestBTreeBuilder(BTreeTestCase):
20
21@@ -199,7 +209,7 @@
22 temp_file = builder.finish()
23 content = temp_file.read()
24 del temp_file
25- self.assertEqual(9283, len(content))
26+ self.assertEqualsApproxCompressed(9283, len(content))
27 self.assertEqual(
28 "B+Tree Graph Index 2\nnode_ref_lists=0\nkey_elements=1\nlen=400\n"
29 "row_lengths=1,2\n",
30@@ -233,7 +243,7 @@
31 temp_file = builder.finish()
32 content = temp_file.read()
33 del temp_file
34- self.assertEqual(155, len(content))
35+ self.assertEqualsApproxCompressed(155, len(content))
36 self.assertEqual(
37 "B+Tree Graph Index 2\nnode_ref_lists=0\nkey_elements=1\nlen=10\n"
38 "row_lengths=1\n",
39@@ -255,7 +265,7 @@
40 temp_file = builder.finish()
41 content = temp_file.read()
42 del temp_file
43- self.assertEqual(9283, len(content))
44+ self.assertEqualsApproxCompressed(9283, len(content))
45 self.assertEqual(
46 "B+Tree Graph Index 2\nnode_ref_lists=0\nkey_elements=1\nlen=400\n"
47 "row_lengths=1,2\n",
48@@ -314,7 +324,7 @@
49 temp_file = builder.finish()
50 content = temp_file.read()
51 del temp_file
52- self.assertEqual(12643, len(content))
53+ self.assertEqualsApproxCompressed(12643, len(content))
54 self.assertEqual(
55 "B+Tree Graph Index 2\nnode_ref_lists=2\nkey_elements=2\nlen=200\n"
56 "row_lengths=1,3\n",
57@@ -700,7 +710,7 @@
58 # The entire index should have been read, as it is one page long.
59 self.assertEqual([('readv', 'index', [(0, size)], False, None)],
60 t._activity)
61- self.assertEqual(1173, size)
62+ self.assertEqualsApproxCompressed(1173, size)
63
64 def test_with_offset_no_size(self):
65 index = self.make_index_with_offset(key_elements=1, ref_lists=1,
66@@ -750,7 +760,7 @@
67 builder.add_node(*node)
68 t = transport.get_transport_from_url('trace+' + self.get_url(''))
69 size = t.put_file('index', builder.finish())
70- self.assertEqual(17692, size)
71+ self.assertEqualsApproxCompressed(17692, size)
72 index = btree_index.BTreeGraphIndex(t, 'index', size)
73 del t._activity[:]
74 self.assertEqual([], t._activity)
75@@ -773,7 +783,7 @@
76 # The entire index should have been read linearly.
77 self.assertEqual([('readv', 'index', [(0, size)], False, None)],
78 t._activity)
79- self.assertEqual(1488, size)
80+ self.assertEqualsApproxCompressed(1488, size)
81
82 def test_validate_two_pages(self):
83 builder = btree_index.BTreeBuilder(key_elements=2, reference_lists=2)
84@@ -783,15 +793,16 @@
85 t = transport.get_transport_from_url('trace+' + self.get_url(''))
86 size = t.put_file('index', builder.finish())
87 # Root page, 2 leaf pages
88- self.assertEqual(9339, size)
89+ self.assertEqualsApproxCompressed(9339, size)
90 index = btree_index.BTreeGraphIndex(t, 'index', size)
91 del t._activity[:]
92 self.assertEqual([], t._activity)
93 index.validate()
94+ rem = size - 8192 # Number of remaining bytes after second block
95 # The entire index should have been read linearly.
96 self.assertEqual(
97 [('readv', 'index', [(0, 4096)], False, None),
98- ('readv', 'index', [(4096, 4096), (8192, 1147)], False, None)],
99+ ('readv', 'index', [(4096, 4096), (8192, rem)], False, None)],
100 t._activity)
101 # XXX: TODO: write some badly-ordered nodes, and some pointers-to-wrong
102 # node and make validate find them.
103@@ -860,8 +871,6 @@
104 builder.add_node(*node)
105 t = transport.get_transport_from_url('trace+' + self.get_url(''))
106 size = t.put_file('index', builder.finish())
107- self.assertEqual(1303220, size, 'number of expected bytes in the'
108- ' output changed')
109 page_size = btree_index._PAGE_SIZE
110 del builder
111 index = btree_index.BTreeGraphIndex(t, 'index', size)
112@@ -883,7 +892,7 @@
113 # The entire index should have been read
114 total_pages = sum(index._row_lengths)
115 self.assertEqual(total_pages, index._row_offsets[-1])
116- self.assertEqual(1303220, size)
117+ self.assertEqualsApproxCompressed(1303220, size)
118 # The start of the leaves
119 first_byte = index._row_offsets[-2] * page_size
120 readv_request = []
121
122=== modified file 'doc/en/release-notes/bzr-2.4.txt'
123--- doc/en/release-notes/bzr-2.4.txt 2011-12-05 14:21:55 +0000
124+++ doc/en/release-notes/bzr-2.4.txt 2012-02-27 13:11:17 +0000
125@@ -79,6 +79,9 @@
126 suite. This can include new facilities for writing tests, fixes to
127 spurious test failures and changes to the way things should be tested.
128
129+* Account for slightly improved compression with newer versions of zlib in
130+ ``bt.test_btree_index`` tests. (Martin Packman, #940453)
131+
132
133 bzr 2.4.2
134 #########

Subscribers

People subscribed via source and target branches