/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 bzrlib/benchmarks/bench_log.py

  • Committer: Robert Collins
  • Date: 2010-05-06 11:08:10 UTC
  • mto: This revision was merged to the branch mainline in revision 5223.
  • Revision ID: robertc@robertcollins.net-20100506110810-h3j07fh5gmw54s25
Cleaner matcher matching revised unlocking protocol.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 by Canonical Ltd
 
1
# Copyright (C) 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License version 2 as published by
5
 
# the Free Software Foundation.
 
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.
6
7
#
7
8
# This program is distributed in the hope that it will be useful,
8
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
12
#
12
13
# You should have received a copy of the GNU General Public License
13
14
# along with this program; if not, write to the Free Software
14
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
16
 
16
17
"""Tests for tree transform performance"""
17
18
 
25
26
from bzrlib.transform import TreeTransform
26
27
from bzrlib.workingtree import WorkingTree
27
28
 
 
29
 
28
30
class LinesDone(Exception):
 
31
    """Raised when `LineConsumer` reaches the required number of lines."""
29
32
    pass
30
33
 
 
34
 
31
35
class LineConsumer(object):
 
36
    """Count lines that are produced.
 
37
 
 
38
    When the required number of lines have been reached, raise `LinesDone`.
 
39
    """
32
40
 
33
41
    def __init__(self, required_lines):
 
42
        """Create a new consumer.
 
43
 
 
44
        :param required_lines: How many lines must be produced.
 
45
        :type required_lines: integer
 
46
        """
34
47
        self.required_lines = required_lines
35
48
 
36
49
    def write(self, text):
 
50
        """Write some text to the black hole.
 
51
 
 
52
        But count how many lines have been written.
 
53
 
 
54
        :param text: A string that would be written.
 
55
        :raise LinesDone: when the required number of lines has been reached.
 
56
        :return: None
 
57
        """
37
58
        self.required_lines -= text.count('\n')
38
59
        if self.required_lines < 0:
39
60
            raise LinesDone()
40
 
        
 
61
 
41
62
 
42
63
class LogBenchmark(Benchmark):
 
64
    """Benchmarks for ``'bzr log'`` performance."""
43
65
 
44
66
    def test_log(self):
45
 
        """Run log in a many-commit tree.""" 
 
67
        """Run log in a many-commit tree."""
46
68
        tree = self.make_many_commit_tree(hardlink=True)
47
69
        lf = log_formatter('long', to_file=StringIO())
48
70
        self.time(show_log, tree.branch, lf, direction='reverse')
79
101
        self.time(log_screenful)
80
102
 
81
103
    def test_cmd_log(self):
82
 
        """Test execution of the log command.""" 
 
104
        """Test execution of the log command."""
83
105
        tree = self.make_many_commit_tree(hardlink=True)
84
 
        self.time(self.run_bzr, 'log', '-r', '-4..')
 
106
        self.time(self.run_bzr, ['log', '-r', '-4..'])
85
107
 
86
108
    def test_cmd_log_subprocess(self):
87
 
        """Text startup and execution of the log command.""" 
 
109
        """Text startup and execution of the log command."""
88
110
        tree = self.make_many_commit_tree(hardlink=True)
89
111
        self.time(self.run_bzr_subprocess, 'log', '-r', '-4..')
90
112