/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4597.9.2 by Vincent Ladeuil
Merge bzr.dev into cleanup
1
# Copyright (C) 2008, 2009, 2010 Canonical Ltd
3770.1.1 by John Arbash Meinel
First draft of a basic dump-btree command.
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3770.1.1 by John Arbash Meinel
First draft of a basic dump-btree command.
16
#
17
6622.1.29 by Jelmer Vernooij
Fix some more tests.
18
"""Tests of the 'brz dump-btree' command."""
3770.1.1 by John Arbash Meinel
First draft of a basic dump-btree command.
19
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
20
from breezy import (
6670.4.3 by Jelmer Vernooij
Fix more imports.
21
    tests,
22
    )
23
from breezy.bzr import (
3770.1.1 by John Arbash Meinel
First draft of a basic dump-btree command.
24
    btree_index,
25
    )
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
26
from breezy.tests import (
3770.1.1 by John Arbash Meinel
First draft of a basic dump-btree command.
27
    http_server,
28
    )
29
30
31
class TestDumpBtree(tests.TestCaseWithTransport):
32
33
    def create_sample_btree_index(self):
34
        builder = btree_index.BTreeBuilder(
35
            reference_lists=1, key_elements=2)
7045.1.1 by Jelmer Vernooij
Fix another 300 tests.
36
        builder.add_node((b'test', b'key1'), b'value', (((b'ref', b'entry'),),))
37
        builder.add_node((b'test', b'key2'), b'value2', (((b'ref', b'entry2'),),))
38
        builder.add_node((b'test2', b'key3'), b'value3', (((b'ref', b'entry3'),),))
3770.1.1 by John Arbash Meinel
First draft of a basic dump-btree command.
39
        out_f = builder.finish()
40
        try:
41
            self.build_tree_contents([('test.btree', out_f.read())])
42
        finally:
43
            out_f.close()
44
45
    def test_dump_btree_smoke(self):
46
        self.create_sample_btree_index()
47
        out, err = self.run_bzr('dump-btree test.btree')
48
        self.assertEqualDiff(
49
            "(('test', 'key1'), 'value', ((('ref', 'entry'),),))\n"
50
            "(('test', 'key2'), 'value2', ((('ref', 'entry2'),),))\n"
51
            "(('test2', 'key3'), 'value3', ((('ref', 'entry3'),),))\n",
52
            out)
53
54
    def test_dump_btree_http_smoke(self):
55
        self.transport_readonly_server = http_server.HttpServer
56
        self.create_sample_btree_index()
57
        url = self.get_readonly_url('test.btree')
58
        out, err = self.run_bzr(['dump-btree', url])
59
        self.assertEqualDiff(
60
            "(('test', 'key1'), 'value', ((('ref', 'entry'),),))\n"
61
            "(('test', 'key2'), 'value2', ((('ref', 'entry2'),),))\n"
62
            "(('test2', 'key3'), 'value3', ((('ref', 'entry3'),),))\n",
63
            out)
3770.1.2 by John Arbash Meinel
Add a --raw output for dump-btree.
64
65
    def test_dump_btree_raw_smoke(self):
66
        self.create_sample_btree_index()
67
        out, err = self.run_bzr('dump-btree test.btree --raw')
68
        self.assertEqualDiff(
69
            'Root node:\n'
70
            'B+Tree Graph Index 2\n'
71
            'node_ref_lists=1\n'
72
            'key_elements=2\n'
73
            'len=3\n'
74
            'row_lengths=1\n'
75
            '\n'
3770.1.3 by John Arbash Meinel
Simplify the --raw mode.
76
            'Page 0\n'
3770.1.2 by John Arbash Meinel
Add a --raw output for dump-btree.
77
            'type=leaf\n'
78
            'test\0key1\0ref\0entry\0value\n'
79
            'test\0key2\0ref\0entry2\0value2\n'
80
            'test2\0key3\0ref\0entry3\0value3\n'
81
            '\n',
82
            out)
5091.1.2 by Andrew Bennetts
Add basic test.
83
84
    def test_dump_btree_no_refs_smoke(self):
85
        # A BTree index with no ref lists (such as *.cix) can be dumped without
86
        # errors.
87
        builder = btree_index.BTreeBuilder(
88
            reference_lists=0, key_elements=2)
7045.1.1 by Jelmer Vernooij
Fix another 300 tests.
89
        builder.add_node((b'test', b'key1'), b'value')
5091.1.2 by Andrew Bennetts
Add basic test.
90
        out_f = builder.finish()
91
        try:
92
            self.build_tree_contents([('test.btree', out_f.read())])
93
        finally:
94
            out_f.close()
95
        out, err = self.run_bzr('dump-btree test.btree')
5651.2.1 by Eric Siegerman
Fix traceback attempting to "bzr dump-btree --raw btree-with-0-rows".
96
97
    def create_sample_empty_btree_index(self):
98
        builder = btree_index.BTreeBuilder(
99
            reference_lists=1, key_elements=2)
100
        out_f = builder.finish()
101
        try:
102
            self.build_tree_contents([('test.btree', out_f.read())])
103
        finally:
104
            out_f.close()
105
106
    def test_dump_empty_btree_smoke(self):
107
        self.create_sample_empty_btree_index()
108
        out, err = self.run_bzr('dump-btree test.btree')
109
        self.assertEqualDiff("", out)
110
111
    def test_dump_empty_btree_http_smoke(self):
112
        self.transport_readonly_server = http_server.HttpServer
113
        self.create_sample_empty_btree_index()
114
        url = self.get_readonly_url('test.btree')
115
        out, err = self.run_bzr(['dump-btree', url])
116
        self.assertEqualDiff("", out)
117
118
    def test_dump_empty_btree_raw_smoke(self):
119
        self.create_sample_empty_btree_index()
120
        out, err = self.run_bzr('dump-btree test.btree --raw')
121
        self.assertEqualDiff(
122
            'Root node:\n'
123
            'B+Tree Graph Index 2\n'
124
            'node_ref_lists=1\n'
125
            'key_elements=2\n'
126
            'len=0\n'
127
            'row_lengths=\n'
128
            '\n'
129
            'Page 0\n'
130
            '(empty)\n',
131
            out)
132