~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1534.10.33 by Aaron Bentley
Add canonicalize_path benchmark
2
#
3
# This program is free software; you can redistribute it and/or modify
2052.3.1 by John Arbash Meinel
Add tests to cleanup the copyright of all source files
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.
1534.10.33 by Aaron Bentley
Add canonicalize_path benchmark
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
1534.10.33 by Aaron Bentley
Add canonicalize_path benchmark
16
17
"""Tests for tree transform performance"""
18
19
import os
20
21
from bzrlib.benchmarks import Benchmark
22
from bzrlib.osutils import pathjoin
23
from bzrlib.transform import TreeTransform
24
from bzrlib.workingtree import WorkingTree
25
2399.1.7 by John Arbash Meinel
Cleanup bzrlib/benchmarks/* so that everything at least has a valid doc string.
26
1534.10.33 by Aaron Bentley
Add canonicalize_path benchmark
27
class TransformBenchmark(Benchmark):
2399.1.7 by John Arbash Meinel
Cleanup bzrlib/benchmarks/* so that everything at least has a valid doc string.
28
    """Benchmarks for `bzrlib.transform`"""
1534.10.33 by Aaron Bentley
Add canonicalize_path benchmark
29
30
    def test_canonicalize_path(self):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
31
        """Canonicalizing paths should be fast."""
1908.2.11 by John Arbash Meinel
Change caching logic. Don't cache at all without --cache-dir being supplied
32
        wt = self.make_kernel_like_tree(link_working=True)
1534.10.33 by Aaron Bentley
Add canonicalize_path benchmark
33
        paths = []
34
        for dirpath, dirnames, filenames in os.walk('.'):
35
            paths.extend(pathjoin(dirpath, d) for d in dirnames)
36
            paths.extend(pathjoin(dirpath, f) for f in filenames)
37
        tt = TreeTransform(wt)
38
        self.time(self.canonicalize_paths, tt, paths)
39
        tt.finalize()
40
41
    def canonicalize_paths(self, tt, paths):
42
        for path in paths:
43
            tt.canonical_path(path)