39
39
or added and one commit.
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')
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')
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')
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,
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')
72
71
class BundleLibraryLevelWriteBenchmark(Benchmark):
73
72
""" Benchmarks for the write_bundle library function. """
75
74
def _time_read_write(self):
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)
86
90
def test_few_files_small_tree_1_revision(self):
107
117
self.commit_some_revisions(tree, files[:5], 100, 1)
108
118
self._time_read_write()
120
def test_few_files_moderate_tree_1000_revision(self):
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()
110
126
def test_some_files_moderate_tree_1_revision(self):
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()
132
def test_some_files_moderate_tree_100_revision(self):
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()
138
def test_some_files_moderate_tree_1000_revision(self):
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()
116
144
def test_few_files_big_tree_1_revision(self):
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()
150
def test_few_files_big_tree_100_revision(self):
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()
156
def test_few_files_big_tree_1000_revision(self):
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()
122
162
def test_some_files_big_tree_1_revision(self):
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()
168
def test_some_files_big_tree_100_revision(self):
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()
174
def test_some_files_big_tree_1000_revision(self):
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()
180
def test_many_files_big_tree_1_revision(self):
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()
186
def test_many_files_big_tree_100_revision(self):
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()
192
def test_many_files_big_tree_1000_revision(self):
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()
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()
242
def test_some_files_moderate_tree_100_revision(self):
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()
173
248
def test_few_files_big_tree_1_revision(self):
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()
254
def test_few_files_big_tree_100_revision(self):
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()
179
260
def test_some_files_big_tree_1_revision(self):
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()
266
def test_some_files_big_tree_100_revision(self):
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()
272
def test_many_files_big_tree_1_revision(self):
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()
278
def test_many_files_big_tree_100_revision(self):
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()
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"),
190
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some")]:
289
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some"),
191
291
if bundlefiles > treesize:
193
for num_revisions in [1, 100]:
194
if (num_revisions >= 100 and
195
(bundlefiles >= 100 or treesize >= 1000)):
196
# Skip the 100x100x? tests.
293
for num_revisions in [1, 100, 1000]:
200
295
def test_%s_files_%s_tree_%s_revision(self):