/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_bundle.py

  • Committer: Carl Friedrich Bolz
  • Date: 2006-08-11 16:02:36 UTC
  • mto: (1908.3.5 bench_usecases)
  • mto: This revision was merged to the branch mainline in revision 2068.
  • Revision ID: cfbolz@gmx.de-20060811160236-0ce4b4864fbdb46a
(cfbolz, hpk): Add caching mechanism and add benchmark for bundle-reading.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
 
19
19
import os
 
20
import shutil
20
21
from StringIO import StringIO
21
22
 
22
23
from bzrlib.benchmarks import Benchmark
23
24
from bzrlib.workingtree import WorkingTree
24
25
from bzrlib.branch import Branch
25
26
from bzrlib.bundle.serializer import write_bundle
 
27
from bzrlib.bundle import read_bundle
26
28
from bzrlib.revisionspec import RevisionSpec
27
29
 
 
30
# If the CACHEDIR flag is set, make_parametrized_tree below will cache the tree
 
31
# it creates in the .bazaar/temp dir.
 
32
CACHEDIR = os.path.expanduser("~/.bazaar/temp")
 
33
 
28
34
 
29
35
class BundleBenchmark(Benchmark):
30
36
    """
85
91
        :param num_revisions: number of revisions
86
92
        :param num_files_in_bundle: number of files changed in the revisions
87
93
        """
 
94
        if CACHEDIR is None:
 
95
            return self._make_parametrized_tree(num_files, num_revisions,
 
96
                                                num_files_in_bundle)
 
97
        olddir = os.getcwd()
 
98
        try:
 
99
            if not os.path.exists(CACHEDIR):
 
100
                os.makedirs(CACHEDIR)
 
101
            os.chdir(CACHEDIR)
 
102
            cache_name = "make_parametrized_tree_%s_%s_%s" % (
 
103
                num_files, num_revisions, num_files_in_bundle)
 
104
            if not os.path.exists(cache_name):
 
105
                os.mkdir(cache_name)
 
106
                os.chdir(cache_name)
 
107
                self._make_parametrized_tree(num_files, num_revisions,
 
108
                                             num_files_in_bundle)
 
109
                os.chdir(CACHEDIR)
 
110
            for subdir in os.listdir(cache_name):
 
111
                shutil.copytree(os.path.join(cache_name, subdir),
 
112
                                os.path.join(olddir, subdir))
 
113
        finally:
 
114
            os.chdir(olddir)
 
115
 
 
116
    def _make_parametrized_tree(self, num_files, num_revisions,
 
117
                                num_files_in_bundle):
88
118
        # create files
89
119
        directories = []
90
120
        files = []
116
146
                self.run_bzr("commit", '-m', 'some changes')
117
147
        assert count >= num_revisions
118
148
 
 
149
 
119
150
    for treesize, treesize_h in [(5, "small"), (100, "moderate"),
120
151
                                 (1000, "big")]:
121
152
        for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some"),
130
161
    revision_history = branch.revision_history()
131
162
    bundle_text = StringIO()
132
163
    self.time(write_bundle, branch.repository, revision_history[-1],
133
 
              None, bundle_text)""" % (
 
164
              None, bundle_text)
 
165
    bundle_text.seek(0)
 
166
    self.time(read_bundle, bundle_text)""" % (
134
167
                    bundlefiles_h, treesize_h, num_revisions,
135
168
                    treesize, num_revisions, bundlefiles)
136
 
              exec code
 
169
                exec code
 
170