1
# Copyright (C) 2006 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 as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
"""Tests for bzr benchmark utilities performance."""
22
from bzrlib.benchmarks import Benchmark
23
from bzrlib.benchmarks.tree_creator.kernel_like import (
24
KernelLikeTreeCreator,
25
KernelLikeAddedTreeCreator,
26
KernelLikeCommittedTreeCreator,
28
from bzrlib.tests import TestSkipped
31
class MakeKernelLikeTreeBenchmark(Benchmark):
33
def test_make_kernel_like_tree(self):
34
"""Making a kernel sized tree should be ~ 5seconds on modern disk."""
35
# on roberts machine: this originally took: 7372ms/ 7479ms
36
# with the LocalTransport._abspath call: 3730ms/ 3778ms
37
# with AtomicFile tuning: 2888ms/ 2926ms
38
# switching to transport.append_bytes: 1468ms/ 2849ms
39
self.time(self.make_kernel_like_tree)
41
def test_02_make_kernel_like_tree(self):
42
"""Hardlinking a kernel-like working tree should be ~1s"""
43
# make sure kernel_like_tree is cached
44
creator = KernelLikeTreeCreator(self, link_working=True)
45
if not creator.is_caching_enabled():
46
raise TestSkipped('caching is disabled')
47
creator.ensure_cached()
48
self.time(creator.create, root='bar')
50
def test_03_make_kernel_like_added_tree(self):
51
"""Time the first creation of a kernel like added tree"""
52
creator = KernelLikeAddedTreeCreator(self)
53
creator.disable_cache()
54
self.time(creator.create, root='foo')
56
def test_04_make_kernel_like_added_tree(self):
57
"""Time the second creation of a kernel like added tree
58
(this should be a clone)
60
# make sure kernel_like_added_tree is cached
61
creator = KernelLikeAddedTreeCreator(self, link_working=True)
62
if not creator.is_caching_enabled():
63
# Caching is disabled, this test is meaningless
64
raise TestSkipped('caching is disabled')
65
creator.ensure_cached()
66
self.time(creator.create, root='bar')
68
def test_05_make_kernel_like_committed_tree(self):
69
"""Time the first creation of a committed kernel like tree"""
70
creator = KernelLikeCommittedTreeCreator(self)
71
creator.disable_cache()
72
self.time(creator.create, root='foo')
74
def test_06_make_kernel_like_committed_tree(self):
75
"""Time the second creation of a committed kernel like tree
76
(this should be a clone)
78
creator = KernelLikeCommittedTreeCreator(self,
81
if not creator.is_caching_enabled():
82
# Caching is disabled, this test is meaningless
83
raise TestSkipped('caching is disabled')
84
creator.ensure_cached()
85
self.time(creator.create, root='bar')
87
def test_07_make_kernel_like_committed_tree_hardlink(self):
88
"""Time the creation of a committed kernel like tree
89
(this should also hardlink the .bzr/ directory)
91
creator = KernelLikeCommittedTreeCreator(self,
94
if not creator.is_caching_enabled():
95
# Caching is disabled, this test is meaningless
96
raise TestSkipped('caching is disabled')
97
creator.ensure_cached()
98
self.time(creator.create, root='bar')