~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_btree_index.py

Abbreviate pack_stat struct format to '>6L'

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
    TestCaseWithTransport,
34
34
    scenarios,
35
35
    )
 
36
from bzrlib.tests import (
 
37
    features,
 
38
    )
36
39
 
37
40
 
38
41
load_tests = scenarios.load_tests_apply_scenarios
47
50
    return scenarios
48
51
 
49
52
 
50
 
compiled_btreeparser_feature = tests.ModuleAvailableFeature(
 
53
compiled_btreeparser_feature = features.ModuleAvailableFeature(
51
54
    'bzrlib._btree_serializer_pyx')
52
55
 
53
56
 
278
281
 
279
282
        for node in nodes:
280
283
            builder.add_node(*node)
281
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
284
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
282
285
        size = t.put_file('index', self.time(builder.finish))
283
286
        del builder
284
287
        index = btree_index.BTreeGraphIndex(t, 'index', size)
605
608
        for key, value, references in nodes:
606
609
            builder.add_node(key, value, references)
607
610
        stream = builder.finish()
608
 
        trans = transport.get_transport('trace+' + self.get_url())
 
611
        trans = transport.get_transport_from_url('trace+' + self.get_url())
609
612
        size = trans.put_file('index', stream)
610
613
        return btree_index.BTreeGraphIndex(trans, 'index', size)
611
614
 
646
649
        self.assertEqual(0, len(index._leaf_node_cache))
647
650
 
648
651
    def test_trivial_constructor(self):
649
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
652
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
650
653
        index = btree_index.BTreeGraphIndex(t, 'index', None)
651
654
        # Checks the page size at load, but that isn't logged yet.
652
655
        self.assertEqual([], t._activity)
653
656
 
654
657
    def test_with_size_constructor(self):
655
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
658
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
656
659
        index = btree_index.BTreeGraphIndex(t, 'index', 1)
657
660
        # Checks the page size at load, but that isn't logged yet.
658
661
        self.assertEqual([], t._activity)
659
662
 
660
663
    def test_empty_key_count_no_size(self):
661
664
        builder = btree_index.BTreeBuilder(key_elements=1, reference_lists=0)
662
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
665
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
663
666
        t.put_file('index', builder.finish())
664
667
        index = btree_index.BTreeGraphIndex(t, 'index', None)
665
668
        del t._activity[:]
672
675
 
673
676
    def test_empty_key_count(self):
674
677
        builder = btree_index.BTreeBuilder(key_elements=1, reference_lists=0)
675
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
678
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
676
679
        size = t.put_file('index', builder.finish())
677
680
        self.assertEqual(72, size)
678
681
        index = btree_index.BTreeGraphIndex(t, 'index', size)
688
691
        nodes = self.make_nodes(35, 2, 2)
689
692
        for node in nodes:
690
693
            builder.add_node(*node)
691
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
694
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
692
695
        size = t.put_file('index', builder.finish())
693
696
        index = btree_index.BTreeGraphIndex(t, 'index', size)
694
697
        del t._activity[:]
720
723
 
721
724
    def test__read_nodes_no_size_one_page_reads_once(self):
722
725
        self.make_index(nodes=[(('key',), 'value', ())])
723
 
        trans = transport.get_transport('trace+' + self.get_url())
 
726
        trans = transport.get_transport_from_url('trace+' + self.get_url())
724
727
        index = btree_index.BTreeGraphIndex(trans, 'index', None)
725
728
        del trans._activity[:]
726
729
        nodes = dict(index._read_nodes([0]))
734
737
        index.key_count()
735
738
        num_pages = index._row_offsets[-1]
736
739
        # Reopen with a traced transport and no size
737
 
        trans = transport.get_transport('trace+' + self.get_url())
 
740
        trans = transport.get_transport_from_url('trace+' + self.get_url())
738
741
        index = btree_index.BTreeGraphIndex(trans, 'index', None)
739
742
        del trans._activity[:]
740
743
        nodes = dict(index._read_nodes([0]))
745
748
        nodes = self.make_nodes(160, 2, 2)
746
749
        for node in nodes:
747
750
            builder.add_node(*node)
748
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
751
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
749
752
        size = t.put_file('index', builder.finish())
750
753
        self.assertEqual(17692, size)
751
754
        index = btree_index.BTreeGraphIndex(t, 'index', size)
761
764
        nodes = self.make_nodes(45, 2, 2)
762
765
        for node in nodes:
763
766
            builder.add_node(*node)
764
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
767
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
765
768
        size = t.put_file('index', builder.finish())
766
769
        index = btree_index.BTreeGraphIndex(t, 'index', size)
767
770
        del t._activity[:]
777
780
        nodes = self.make_nodes(80, 2, 2)
778
781
        for node in nodes:
779
782
            builder.add_node(*node)
780
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
783
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
781
784
        size = t.put_file('index', builder.finish())
782
785
        # Root page, 2 leaf pages
783
786
        self.assertEqual(9339, size)
795
798
 
796
799
    def test_eq_ne(self):
797
800
        # two indices are equal when constructed with the same parameters:
798
 
        t1 = transport.get_transport('trace+' + self.get_url(''))
 
801
        t1 = transport.get_transport_from_url('trace+' + self.get_url(''))
799
802
        t2 = self.get_transport()
800
803
        self.assertTrue(
801
804
            btree_index.BTreeGraphIndex(t1, 'index', None) ==
830
833
 
831
834
    def test_iter_all_only_root_no_size(self):
832
835
        self.make_index(nodes=[(('key',), 'value', ())])
833
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
836
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
834
837
        index = btree_index.BTreeGraphIndex(t, 'index', None)
835
838
        del t._activity[:]
836
839
        self.assertEqual([(('key',), 'value')],
847
850
        nodes = self.make_nodes(10000, 2, 2)
848
851
        for node in nodes:
849
852
            builder.add_node(*node)
850
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
853
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
851
854
        size = t.put_file('index', builder.finish())
852
855
        self.assertEqual(1303220, size, 'number of expected bytes in the'
853
856
                                        ' output changed')
902
905
        nodes = self.make_nodes(160, 2, 2)
903
906
        for node in nodes:
904
907
            builder.add_node(*node)
905
 
        t = transport.get_transport('trace+' + self.get_url(''))
 
908
        t = transport.get_transport_from_url('trace+' + self.get_url(''))
906
909
        size = t.put_file('index', builder.finish())
907
910
        del builder
908
911
        index = btree_index.BTreeGraphIndex(t, 'index', size)
1351
1354
        BTreeGraphIndex with the recommended information.
1352
1355
        """
1353
1356
        index = btree_index.BTreeGraphIndex(
1354
 
            transport.get_transport('memory:///'), 'test-index', size=size)
 
1357
            transport.get_transport_from_url('memory:///'),
 
1358
            'test-index', size=size)
1355
1359
        if recommended_pages is not None:
1356
1360
            index._recommended_pages = recommended_pages
1357
1361
        return index