~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/benchmarks/bench_bundle.py

  • Committer: Alexander Belchenko
  • Date: 2006-10-14 08:51:07 UTC
  • mto: (2080.1.1 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 2081.
  • Revision ID: bialix@ukr.net-20061014085107-8dff865674eed30a
win32 installer: make short info page instead of full GPL license text

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006 by 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 as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
 
4
# it under the terms of the GNU General Public License version 2 as published by
 
5
# the Free Software Foundation.
7
6
#
8
7
# This program is distributed in the hope that it will be useful,
9
8
# but WITHOUT ANY WARRANTY; without even the implied warranty of
24
23
from bzrlib.add import smart_add
25
24
from bzrlib.benchmarks import Benchmark
26
25
from bzrlib.branch import Branch
 
26
from bzrlib.bundle import read_bundle
27
27
from bzrlib.bundle.apply_bundle import install_bundle
28
 
from bzrlib.bundle.serializer import read_bundle, write_bundle
 
28
from bzrlib.bundle.serializer import write_bundle
29
29
from bzrlib.revision import NULL_REVISION
30
30
from bzrlib.revisionspec import RevisionSpec
31
31
from bzrlib.workingtree import WorkingTree
39
39
        or added and one commit.
40
40
        """ 
41
41
        self.make_kernel_like_committed_tree()
42
 
        self.time(self.run_bzr, ['bundle', '--revision', '..-1'])
 
42
        self.time(self.run_bzr, 'bundle', '--revision', '..-1')
43
43
 
44
44
    def test_create_bundle_many_commit_tree (self):
45
45
        """Create a bundle for a tree with many commits but no changes.""" 
46
46
        self.make_many_commit_tree()
47
 
        self.time(self.run_bzr, ['bundle', '--revision', '..-1'])
 
47
        self.time(self.run_bzr, 'bundle', '--revision', '..-1')
48
48
 
49
49
    def test_create_bundle_heavily_merged_tree(self):
50
50
        """Create a bundle for a heavily merged tree.""" 
51
51
        self.make_heavily_merged_tree()
52
 
        self.time(self.run_bzr, ['bundle', '--revision', '..-1'])
 
52
        self.time(self.run_bzr, 'bundle', '--revision', '..-1')
53
53
        
54
54
    def test_apply_bundle_known_kernel_like_tree(self):
55
55
        """Create a bundle for a kernel sized tree with no ignored, unknowns,
66
66
 
67
67
        tree2 = self.make_branch_and_tree('branch_a')
68
68
        os.chdir('branch_a')
69
 
        self.time(self.run_bzr, ['merge', '../bundle'])
 
69
        self.time(self.run_bzr, 'merge', '../bundle')
70
70
 
71
 
 
72
71
class BundleLibraryLevelWriteBenchmark(Benchmark):
73
72
    """ Benchmarks for the write_bundle library function. """
74
73
 
75
74
    def _time_read_write(self):
 
75
        print "timing"
76
76
        branch, relpath = Branch.open_containing("a")
77
77
        revision_history = branch.revision_history()
78
78
        bundle_text = StringIO()
 
79
        print "starting write bundle"
79
80
        self.time(write_bundle, branch.repository, revision_history[-1],
80
81
                  NULL_REVISION, bundle_text)
 
82
        print "stopped writing bundle"
81
83
        bundle_text.seek(0)
82
84
        target_tree = self.make_branch_and_tree('b')
 
85
        print "starting reading bundle"
83
86
        bundle = self.time(read_bundle, bundle_text)
 
87
        print "starting installing bundle"
84
88
        self.time(install_bundle, target_tree.branch.repository, bundle)
85
89
 
86
90
    def test_few_files_small_tree_1_revision(self):
95
99
        self.commit_some_revisions(tree, files[:5], 100, 1)
96
100
        self._time_read_write()
97
101
 
 
102
    def test_few_files_small_tree_1000_revision(self):
 
103
        os.mkdir("a")
 
104
        tree, files = self.create_with_commits(5, 1, directory_name="a")
 
105
        self.commit_some_revisions(tree, files[:5], 1000, 1)
 
106
        self._time_read_write()
 
107
 
98
108
    def test_few_files_moderate_tree_1_revision(self):
99
109
        os.mkdir("a")
100
110
        tree, files = self.create_with_commits(100, 1, directory_name="a")
107
117
        self.commit_some_revisions(tree, files[:5], 100, 1)
108
118
        self._time_read_write()
109
119
 
 
120
    def test_few_files_moderate_tree_1000_revision(self):
 
121
        os.mkdir("a")
 
122
        tree, files = self.create_with_commits(100, 1, directory_name="a")
 
123
        self.commit_some_revisions(tree, files[:5], 1000, 1)
 
124
        self._time_read_write()
 
125
 
110
126
    def test_some_files_moderate_tree_1_revision(self):
111
127
        os.mkdir("a")
112
128
        tree, files = self.create_with_commits(100, 1, directory_name="a")
113
129
        self.commit_some_revisions(tree, files[:100], 1, 1)
114
130
        self._time_read_write()
115
131
 
 
132
    def test_some_files_moderate_tree_100_revision(self):
 
133
        os.mkdir("a")
 
134
        tree, files = self.create_with_commits(100, 1, directory_name="a")
 
135
        self.commit_some_revisions(tree, files[:100], 100, 1)
 
136
        self._time_read_write()
 
137
 
 
138
    def test_some_files_moderate_tree_1000_revision(self):
 
139
        os.mkdir("a")
 
140
        tree, files = self.create_with_commits(100, 1, directory_name="a")
 
141
        self.commit_some_revisions(tree, files[:100], 1000, 1)
 
142
        self._time_read_write()
 
143
 
116
144
    def test_few_files_big_tree_1_revision(self):
117
145
        os.mkdir("a")
118
146
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
119
147
        self.commit_some_revisions(tree, files[:5], 1, 1)
120
148
        self._time_read_write()
121
149
 
 
150
    def test_few_files_big_tree_100_revision(self):
 
151
        os.mkdir("a")
 
152
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
153
        self.commit_some_revisions(tree, files[:5], 100, 1)
 
154
        self._time_read_write()
 
155
 
 
156
    def test_few_files_big_tree_1000_revision(self):
 
157
        os.mkdir("a")
 
158
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
159
        self.commit_some_revisions(tree, files[:5], 1000, 1)
 
160
        self._time_read_write()
 
161
 
122
162
    def test_some_files_big_tree_1_revision(self):
123
163
        os.mkdir("a")
124
164
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
125
165
        self.commit_some_revisions(tree, files[:100], 1, 1)
126
166
        self._time_read_write()
127
167
 
 
168
    def test_some_files_big_tree_100_revision(self):
 
169
        os.mkdir("a")
 
170
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
171
        self.commit_some_revisions(tree, files[:100], 100, 1)
 
172
        self._time_read_write()
 
173
 
 
174
    def test_some_files_big_tree_1000_revision(self):
 
175
        os.mkdir("a")
 
176
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
177
        self.commit_some_revisions(tree, files[:100], 1000, 1)
 
178
        self._time_read_write()
 
179
 
 
180
    def test_many_files_big_tree_1_revision(self):
 
181
        os.mkdir("a")
 
182
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
183
        self.commit_some_revisions(tree, files[:1000], 1, 1)
 
184
        self._time_read_write()
 
185
 
 
186
    def test_many_files_big_tree_100_revision(self):
 
187
        os.mkdir("a")
 
188
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
189
        self.commit_some_revisions(tree, files[:1000], 100, 1)
 
190
        self._time_read_write()
 
191
 
 
192
    def test_many_files_big_tree_1000_revision(self):
 
193
        os.mkdir("a")
 
194
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
195
        self.commit_some_revisions(tree, files[:1000], 1000, 1)
 
196
        self._time_read_write()
128
197
 
129
198
class BundleLibraryLevelInstallBenchmark(Benchmark):
130
199
    """ Benchmarks for the install_bundle library function. """
170
239
        self.commit_some_revisions(tree, files[:100], 1, 1)
171
240
        self._time_read_write()
172
241
 
 
242
    def test_some_files_moderate_tree_100_revision(self):
 
243
        os.mkdir("a")
 
244
        tree, files = self.create_with_commits(100, 1, directory_name="a")
 
245
        self.commit_some_revisions(tree, files[:100], 100, 1)
 
246
        self._time_read_write()
 
247
 
173
248
    def test_few_files_big_tree_1_revision(self):
174
249
        os.mkdir("a")
175
250
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
176
251
        self.commit_some_revisions(tree, files[:5], 1, 1)
177
252
        self._time_read_write()
178
253
 
 
254
    def test_few_files_big_tree_100_revision(self):
 
255
        os.mkdir("a")
 
256
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
257
        self.commit_some_revisions(tree, files[:5], 100, 1)
 
258
        self._time_read_write()
 
259
 
179
260
    def test_some_files_big_tree_1_revision(self):
180
261
        os.mkdir("a")
181
262
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
182
263
        self.commit_some_revisions(tree, files[:100], 1, 1)
183
264
        self._time_read_write()
184
265
 
 
266
    def test_some_files_big_tree_100_revision(self):
 
267
        os.mkdir("a")
 
268
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
269
        self.commit_some_revisions(tree, files[:100], 100, 1)
 
270
        self._time_read_write()
 
271
 
 
272
    def test_many_files_big_tree_1_revision(self):
 
273
        os.mkdir("a")
 
274
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
275
        self.commit_some_revisions(tree, files[:1000], 1, 1)
 
276
        self._time_read_write()
 
277
 
 
278
    def test_many_files_big_tree_100_revision(self):
 
279
        os.mkdir("a")
 
280
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
 
281
        self.commit_some_revisions(tree, files[:1000], 100, 1)
 
282
        self._time_read_write()
 
283
 
185
284
 
186
285
if __name__ == '__main__':
187
286
    # USE the following if you want to regenerate the above test functions 
188
287
    for treesize, treesize_h in [(5, "small"), (100, "moderate"),
189
288
                                 (1000, "big")]:
190
 
        for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some")]:
 
289
        for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some"),
 
290
                                           (1000, "many")]:
191
291
            if bundlefiles > treesize:
192
292
                continue
193
 
            for num_revisions in [1, 100]:
194
 
                if (num_revisions >= 100 and 
195
 
                        (bundlefiles >= 100 or treesize >= 1000)):
196
 
                    # Skip the 100x100x? tests.
197
 
                    # And the 100x?x1000
198
 
                    continue
 
293
            for num_revisions in [1, 100, 1000]:
199
294
                code = """\
200
295
    def test_%s_files_%s_tree_%s_revision(self):
201
296
        os.mkdir("a")
206
301
       treesize, bundlefiles, num_revisions)
207
302
                print code
208
303
 
 
304
 
 
305