1
# Copyright (C) 2006 by Canonical Ltd
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License version 2 as published by
5
# the Free Software Foundation.
7
# This program is distributed in the hope that it will be useful,
8
# but WITHOUT ANY WARRANTY; without even the implied warranty of
9
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
# GNU General Public License for more details.
12
# You should have received a copy of the GNU General Public License
13
# along with this program; if not, write to the Free Software
14
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
"""Tests for bzr benchmark utilities performance."""
21
from bzrlib.benchmarks import Benchmark
22
from bzrlib.benchmarks.tree_creator.kernel_like import (
23
KernelLikeTreeCreator,
24
KernelLikeAddedTreeCreator,
25
KernelLikeCommittedTreeCreator,
27
from bzrlib.tests import TestSkipped
30
class MakeKernelLikeTreeBenchmark(Benchmark):
32
def test_make_kernel_like_tree(self):
33
"""Making a kernel sized tree should be ~ 5seconds on modern disk."""
34
# on roberts machine: this originally took: 7372ms/ 7479ms
35
# with the LocalTransport._abspath call: 3730ms/ 3778ms
36
# with AtomicFile tuning: 2888ms/ 2926ms
37
# switching to transport.append: 1468ms/ 2849ms
38
self.time(self.make_kernel_like_tree)
40
def test_02_make_kernel_like_tree(self):
41
"""Hardlinking a kernel-like working tree should be ~1s"""
42
# make sure kernel_like_tree is cached
43
creator = KernelLikeTreeCreator(self, link_working=True)
44
if not creator.is_caching_enabled():
45
raise TestSkipped('caching is disabled')
46
creator.ensure_cached()
47
self.time(creator.create, root='bar')
49
def test_03_make_kernel_like_added_tree(self):
50
"""Time the first creation of a kernel like added tree"""
51
creator = KernelLikeAddedTreeCreator(self)
52
creator.disable_cache()
53
self.time(creator.create, root='foo')
55
def test_04_make_kernel_like_added_tree(self):
56
"""Time the second creation of a kernel like added tree
57
(this should be a clone)
59
# make sure kernel_like_added_tree is cached
60
creator = KernelLikeAddedTreeCreator(self, link_working=True)
61
if not creator.is_caching_enabled():
62
# Caching is disabled, this test is meaningless
63
raise TestSkipped('caching is disabled')
64
creator.ensure_cached()
65
self.time(creator.create, root='bar')
67
def test_05_make_kernel_like_committed_tree(self):
68
"""Time the first creation of a committed kernel like tree"""
69
creator = KernelLikeCommittedTreeCreator(self)
70
creator.disable_cache()
71
self.time(creator.create, root='foo')
73
def test_06_make_kernel_like_committed_tree(self):
74
"""Time the second creation of a committed kernel like tree
75
(this should be a clone)
77
creator = KernelLikeCommittedTreeCreator(self,
80
if not creator.is_caching_enabled():
81
# Caching is disabled, this test is meaningless
82
raise TestSkipped('caching is disabled')
83
creator.ensure_cached()
84
self.time(creator.create, root='bar')
86
def test_07_make_kernel_like_committed_tree_hardlink(self):
87
"""Time the creation of a committed kernel like tree
88
(this should also hardlink the .bzr/ directory)
90
creator = KernelLikeCommittedTreeCreator(self,
93
if not creator.is_caching_enabled():
94
# Caching is disabled, this test is meaningless
95
raise TestSkipped('caching is disabled')
96
creator.ensure_cached()
97
self.time(creator.create, root='bar')