68
68
os.chdir('branch_a')
69
69
self.time(self.run_bzr, 'merge', '../bundle')
71
72
class BundleLibraryLevelWriteBenchmark(Benchmark):
72
73
""" Benchmarks for the write_bundle library function. """
74
75
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"
80
79
self.time(write_bundle, branch.repository, revision_history[-1],
81
80
NULL_REVISION, bundle_text)
82
print "stopped writing bundle"
83
81
bundle_text.seek(0)
84
82
target_tree = self.make_branch_and_tree('b')
85
print "starting reading bundle"
86
83
bundle = self.time(read_bundle, bundle_text)
87
print "starting installing bundle"
88
84
self.time(install_bundle, target_tree.branch.repository, bundle)
90
86
def test_few_files_small_tree_1_revision(self):
117
107
self.commit_some_revisions(tree, files[:5], 100, 1)
118
108
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()
126
110
def test_some_files_moderate_tree_1_revision(self):
128
112
tree, files = self.create_with_commits(100, 1, directory_name="a")
129
113
self.commit_some_revisions(tree, files[:100], 1, 1)
130
114
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()
144
116
def test_few_files_big_tree_1_revision(self):
146
118
tree, files = self.create_with_commits(1000, 1, directory_name="a")
147
119
self.commit_some_revisions(tree, files[:5], 1, 1)
148
120
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()
162
122
def test_some_files_big_tree_1_revision(self):
164
124
tree, files = self.create_with_commits(1000, 1, directory_name="a")
165
125
self.commit_some_revisions(tree, files[:100], 1, 1)
166
126
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()
198
129
class BundleLibraryLevelInstallBenchmark(Benchmark):
199
130
""" Benchmarks for the install_bundle library function. """
239
170
self.commit_some_revisions(tree, files[:100], 1, 1)
240
171
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()
248
173
def test_few_files_big_tree_1_revision(self):
250
175
tree, files = self.create_with_commits(1000, 1, directory_name="a")
251
176
self.commit_some_revisions(tree, files[:5], 1, 1)
252
177
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()
260
179
def test_some_files_big_tree_1_revision(self):
262
181
tree, files = self.create_with_commits(1000, 1, directory_name="a")
263
182
self.commit_some_revisions(tree, files[:100], 1, 1)
264
183
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()
285
186
if __name__ == '__main__':
286
187
# USE the following if you want to regenerate the above test functions
287
188
for treesize, treesize_h in [(5, "small"), (100, "moderate"),
289
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some"),
190
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some")]:
291
191
if bundlefiles > treesize:
293
for num_revisions in [1, 100, 1000]:
193
for num_revisions in [1, 100]:
194
if (num_revisions >= 100 and
195
(bundlefiles >= 100 or treesize >= 1000)):
196
# Skip the 100x100x? tests.
295
200
def test_%s_files_%s_tree_%s_revision(self):