~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/benchmarks/bench_log.py

  • Committer: John Arbash Meinel
  • Date: 2006-06-18 02:21:57 UTC
  • mfrom: (1787 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1794.
  • Revision ID: john@arbash-meinel.com-20060618022157-6e33aa9b67c25e4f
[merge] bzr.dev 1787

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
from bzrlib.benchmarks import Benchmark
22
22
from bzrlib.log import log_formatter, show_log
23
23
from bzrlib.osutils import pathjoin
24
 
from cStringIO import StringIO
 
24
from StringIO import StringIO
25
25
from bzrlib.transform import TreeTransform
26
26
from bzrlib.workingtree import WorkingTree
27
27
 
28
 
class LinesDone(Exception):
29
 
    pass
30
 
 
31
 
class LineConsumer(object):
32
 
 
33
 
    def __init__(self, required_lines):
34
 
        self.required_lines = required_lines
35
 
 
36
 
    def write(self, text):
37
 
        self.required_lines -= text.count('\n')
38
 
        if self.required_lines < 0:
39
 
            raise LinesDone()
40
 
        
41
 
 
42
28
class LogBenchmark(Benchmark):
43
29
 
44
30
    def test_log(self):
45
 
        """Run log in a many-commit tree.""" 
 
31
        """Canonicalizing paths should be fast.""" 
46
32
        tree = self.make_many_commit_tree()
47
33
        lf = log_formatter('long', to_file=StringIO())
48
34
        self.time(show_log, tree.branch, lf, direction='reverse')
49
 
 
50
 
    def test_log_screenful(self):
51
 
        """Simulate log --long|less"""
52
 
        self.screenful_tester('long')
53
 
 
54
 
    def test_log_screenful_line(self):
55
 
        """Simulate log --line|less"""
56
 
        self.screenful_tester('line')
57
 
 
58
 
    def test_log_screenful_short(self):
59
 
        """Simulate log --short|less"""
60
 
        self.screenful_tester('short')
61
 
 
62
 
    def screenful_tester(self, formatter):
63
 
        """Run show_log, but stop after 25 lines are generated"""
64
 
        tree = self.make_many_commit_tree()
65
 
        def log_screenful():
66
 
            lf = log_formatter(formatter, to_file=LineConsumer(25))
67
 
            try:
68
 
                show_log(tree.branch, lf, direction='reverse')
69
 
            except LinesDone:
70
 
                pass
71
 
            else:
72
 
                raise Exception, "LinesDone not raised"
73
 
        self.time(log_screenful)
74
 
 
75
 
    def test_cmd_log(self):
76
 
        """Test execution of the log command.""" 
77
 
        tree = self.make_many_commit_tree()
78
 
        self.time(self.run_bzr, 'log', '-r', '-4..')
79
 
 
80
 
    def test_cmd_log_subprocess(self):
81
 
        """Text startup and execution of the log command.""" 
82
 
        tree = self.make_many_commit_tree()
83
 
        self.time(self.run_bzr_subprocess, 'log', '-r', '-4..')