69
68
os.chdir('branch_a')
70
69
self.time(self.run_bzr, 'merge', '../bundle')
72
72
class BundleLibraryLevelWriteBenchmark(Benchmark):
73
73
""" Benchmarks for the write_bundle library function. """
75
75
def _time_read_write(self):
77
76
branch, relpath = Branch.open_containing("a")
78
77
revision_history = branch.revision_history()
79
78
bundle_text = StringIO()
80
print "starting write bundle"
81
79
self.time(write_bundle, branch.repository, revision_history[-1],
82
80
NULL_REVISION, bundle_text)
83
print "stopped writing bundle"
84
81
bundle_text.seek(0)
85
82
target_tree = self.make_branch_and_tree('b')
86
print "starting reading bundle"
87
83
bundle = self.time(read_bundle, bundle_text)
88
print "starting installing bundle"
89
84
self.time(install_bundle, target_tree.branch.repository, bundle)
91
86
def test_few_files_small_tree_1_revision(self):
118
107
self.commit_some_revisions(tree, files[:5], 100, 1)
119
108
self._time_read_write()
121
def test_few_files_moderate_tree_1000_revision(self):
123
tree, files = self.create_with_commits(100, 1, directory_name="a")
124
self.commit_some_revisions(tree, files[:5], 1000, 1)
125
self._time_read_write()
127
110
def test_some_files_moderate_tree_1_revision(self):
129
112
tree, files = self.create_with_commits(100, 1, directory_name="a")
130
113
self.commit_some_revisions(tree, files[:100], 1, 1)
131
114
self._time_read_write()
133
def test_some_files_moderate_tree_100_revision(self):
135
tree, files = self.create_with_commits(100, 1, directory_name="a")
136
self.commit_some_revisions(tree, files[:100], 100, 1)
137
self._time_read_write()
139
def test_some_files_moderate_tree_1000_revision(self):
141
tree, files = self.create_with_commits(100, 1, directory_name="a")
142
self.commit_some_revisions(tree, files[:100], 1000, 1)
143
self._time_read_write()
145
116
def test_few_files_big_tree_1_revision(self):
147
118
tree, files = self.create_with_commits(1000, 1, directory_name="a")
148
119
self.commit_some_revisions(tree, files[:5], 1, 1)
149
120
self._time_read_write()
151
def test_few_files_big_tree_100_revision(self):
153
tree, files = self.create_with_commits(1000, 1, directory_name="a")
154
self.commit_some_revisions(tree, files[:5], 100, 1)
155
self._time_read_write()
157
def test_few_files_big_tree_1000_revision(self):
159
tree, files = self.create_with_commits(1000, 1, directory_name="a")
160
self.commit_some_revisions(tree, files[:5], 1000, 1)
161
self._time_read_write()
163
122
def test_some_files_big_tree_1_revision(self):
165
124
tree, files = self.create_with_commits(1000, 1, directory_name="a")
166
125
self.commit_some_revisions(tree, files[:100], 1, 1)
167
126
self._time_read_write()
169
def test_some_files_big_tree_100_revision(self):
171
tree, files = self.create_with_commits(1000, 1, directory_name="a")
172
self.commit_some_revisions(tree, files[:100], 100, 1)
173
self._time_read_write()
175
def test_some_files_big_tree_1000_revision(self):
177
tree, files = self.create_with_commits(1000, 1, directory_name="a")
178
self.commit_some_revisions(tree, files[:100], 1000, 1)
179
self._time_read_write()
181
def test_many_files_big_tree_1_revision(self):
183
tree, files = self.create_with_commits(1000, 1, directory_name="a")
184
self.commit_some_revisions(tree, files[:1000], 1, 1)
185
self._time_read_write()
187
def test_many_files_big_tree_100_revision(self):
189
tree, files = self.create_with_commits(1000, 1, directory_name="a")
190
self.commit_some_revisions(tree, files[:1000], 100, 1)
191
self._time_read_write()
193
def test_many_files_big_tree_1000_revision(self):
195
tree, files = self.create_with_commits(1000, 1, directory_name="a")
196
self.commit_some_revisions(tree, files[:1000], 1000, 1)
197
self._time_read_write()
199
129
class BundleLibraryLevelInstallBenchmark(Benchmark):
200
130
""" Benchmarks for the install_bundle library function. """
240
170
self.commit_some_revisions(tree, files[:100], 1, 1)
241
171
self._time_read_write()
243
def test_some_files_moderate_tree_100_revision(self):
245
tree, files = self.create_with_commits(100, 1, directory_name="a")
246
self.commit_some_revisions(tree, files[:100], 100, 1)
247
self._time_read_write()
249
173
def test_few_files_big_tree_1_revision(self):
251
175
tree, files = self.create_with_commits(1000, 1, directory_name="a")
252
176
self.commit_some_revisions(tree, files[:5], 1, 1)
253
177
self._time_read_write()
255
def test_few_files_big_tree_100_revision(self):
257
tree, files = self.create_with_commits(1000, 1, directory_name="a")
258
self.commit_some_revisions(tree, files[:5], 100, 1)
259
self._time_read_write()
261
179
def test_some_files_big_tree_1_revision(self):
263
181
tree, files = self.create_with_commits(1000, 1, directory_name="a")
264
182
self.commit_some_revisions(tree, files[:100], 1, 1)
265
183
self._time_read_write()
267
def test_some_files_big_tree_100_revision(self):
269
tree, files = self.create_with_commits(1000, 1, directory_name="a")
270
self.commit_some_revisions(tree, files[:100], 100, 1)
271
self._time_read_write()
273
def test_many_files_big_tree_1_revision(self):
275
tree, files = self.create_with_commits(1000, 1, directory_name="a")
276
self.commit_some_revisions(tree, files[:1000], 1, 1)
277
self._time_read_write()
279
def test_many_files_big_tree_100_revision(self):
281
tree, files = self.create_with_commits(1000, 1, directory_name="a")
282
self.commit_some_revisions(tree, files[:1000], 100, 1)
283
self._time_read_write()
286
186
if __name__ == '__main__':
287
187
# USE the following if you want to regenerate the above test functions
288
188
for treesize, treesize_h in [(5, "small"), (100, "moderate"),
290
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some"),
190
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some")]:
292
191
if bundlefiles > treesize:
294
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.
296
200
def test_%s_files_%s_tree_%s_revision(self):