/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tests/test_dir.py

  • Committer: John Arbash Meinel
  • Date: 2009-10-29 16:15:43 UTC
  • mto: This revision was merged to the branch mainline in revision 4780.
  • Revision ID: john@arbash-meinel.com-20091029161543-tdqlm2l4e2z5o7le
We don't have to pad 'short' records.

When writing a row, we reserve 120 bytes from the first node so that we
can write our 'B+Tree Graph Index' signature and other meta-information.
For the root node, we don't always use the 120 bytes, and for non-root
rows, we don't use that data at all. So we usually pad back that
record. However, for indexes that fit entirely in the root record,
we don't pad them to 4096, and it turns out we don't need to pad
them with the spare 120 bytes either.

I was doing a test with lots of 'chained' btree indexes, and this
extra padding ended up being 4.6M => 4.3M of wasted space. I imagine
that bzr-search will have a similar issue with tiny indexes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007 Canonical Ltd
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
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
 
 
17
 
"""Test the GitDir class"""
18
 
 
19
 
from bzrlib import bzrdir, errors
20
 
 
21
 
from bzrlib.plugins.git import dir, tests, workingtree
22
 
 
23
 
 
24
 
class TestGitDir(tests.TestCaseInTempDir):
25
 
 
26
 
    _test_needs_features = [tests.GitCommandFeature]
27
 
 
28
 
    def test_open_existing(self):
29
 
        tests.run_git('init')
30
 
 
31
 
        gd = bzrdir.BzrDir.open('.')
32
 
        self.assertIsInstance(gd, dir.LocalGitDir)
33
 
 
34
 
    def test_open_workingtree(self):
35
 
        tests.run_git('init')
36
 
 
37
 
        gd = bzrdir.BzrDir.open('.')
38
 
        wt = gd.open_workingtree()
39
 
        self.assertIsInstance(wt, workingtree.GitWorkingTree)
40
 
 
41
 
    def test_open_workingtree_bare(self):
42
 
        tests.run_git('--bare', 'init')
43
 
 
44
 
        gd = bzrdir.BzrDir.open('.')
45
 
        self.assertRaises(errors.NoWorkingTree, gd.open_workingtree)
46
 
 
47
 
 
48
 
class TestGitDirFormat(tests.TestCaseInTempDir):
49
 
 
50
 
    _test_needs_features = [tests.GitCommandFeature]
51
 
 
52
 
    def setUp(self):
53
 
        super(TestGitDirFormat, self).setUp()
54
 
        self.format = dir.LocalGitBzrDirFormat()
55
 
 
56
 
    def test_get_format_description(self):
57
 
        self.assertEquals("Local Git Repository",
58
 
                          self.format.get_format_description())
59