13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
"""Tests for bzr bundle performance."""
23
23
from bzrlib import bzrdir
24
from bzrlib.add import smart_add
24
25
from bzrlib.benchmarks import Benchmark
25
26
from bzrlib.branch import Branch
26
27
from bzrlib.bundle.apply_bundle import install_bundle
33
34
class BundleBenchmark(Benchmark):
34
35
"""Benchmarks for bzr bundle performance and bzr merge with a bundle."""
36
37
def test_create_bundle_known_kernel_like_tree(self):
37
38
"""Create a bundle for a kernel sized tree with no ignored, unknowns,
38
39
or added and one commit.
40
41
self.make_kernel_like_committed_tree()
41
self.time(self.run_bzr, ['bundle', '--revision', '..-1'])
42
self.time(self.run_bzr, 'bundle', '--revision', '..-1')
43
44
def test_create_bundle_many_commit_tree (self):
44
"""Create a bundle for a tree with many commits but no changes."""
45
"""Create a bundle for a tree with many commits but no changes."""
45
46
self.make_many_commit_tree()
46
self.time(self.run_bzr, ['bundle', '--revision', '..-1'])
47
self.time(self.run_bzr, 'bundle', '--revision', '..-1')
48
49
def test_create_bundle_heavily_merged_tree(self):
49
"""Create a bundle for a heavily merged tree."""
50
"""Create a bundle for a heavily merged tree."""
50
51
self.make_heavily_merged_tree()
51
self.time(self.run_bzr, ['bundle', '--revision', '..-1'])
52
self.time(self.run_bzr, 'bundle', '--revision', '..-1')
53
54
def test_apply_bundle_known_kernel_like_tree(self):
54
55
"""Create a bundle for a kernel sized tree with no ignored, unknowns,
55
56
or added and one commit.
57
58
tree = self.make_kernel_like_committed_tree('tree')
59
60
f = open('bundle', 'wb')
66
67
tree2 = self.make_branch_and_tree('branch_a')
67
68
os.chdir('branch_a')
68
self.time(self.run_bzr, ['merge', '../bundle'])
69
self.time(self.run_bzr, 'merge', '../bundle')
71
72
class BundleLibraryLevelWriteBenchmark(Benchmark):
72
73
""" Benchmarks for the write_bundle library function. """
185
186
if __name__ == '__main__':
186
# USE the following if you want to regenerate the above test functions
187
# USE the following if you want to regenerate the above test functions
187
188
for treesize, treesize_h in [(5, "small"), (100, "moderate"),
189
190
for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some")]:
190
191
if bundlefiles > treesize:
192
193
for num_revisions in [1, 100]:
193
if (num_revisions >= 100 and
194
if (num_revisions >= 100 and
194
195
(bundlefiles >= 100 or treesize >= 1000)):
195
196
# Skip the 100x100x? tests.
196
197
# And the 100x?x1000