1
# Copyright (C) 2005, 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 profiling data collection."""
24
from bzrlib import tests
27
class LSProf(tests.Feature):
31
from bzrlib import lsprof
38
_TXT_HEADER = " CallCount Recursive Total(ms) " + \
39
"Inline(ms) module:lineno(function)\n"
43
"A simple routine to profile."
44
result = sorted(['abc', 'def', 'ghi'])
48
"Collect and return some dummy profile data."
49
from bzrlib.lsprof import profile
50
ret, stats = profile(_junk_callable)
54
class TestStatsSave(tests.TestCaseInTempDir):
57
self.requireFeature(LSProf())
58
super(tests.TestCaseInTempDir, self).setUp()
59
self.stats = _collect_stats()
61
def _tempfile(self, ext):
63
return os.path.join(dir, "tmp_profile_data." + ext)
65
def test_stats_save_to_txt(self):
66
f = self._tempfile("txt")
68
lines = open(f).readlines()
69
self.assertEqual(lines[0], _TXT_HEADER)
71
def test_stats_save_to_callgrind(self):
72
f = self._tempfile("callgrind")
74
lines = open(f).readlines()
75
self.assertEqual(lines[0], "events: Ticks\n")
76
# Test explicit format nommination
77
f2 = self._tempfile("txt")
78
self.stats.save(f2, format="callgrind")
79
lines2 = open(f2).readlines()
80
self.assertEqual(lines2[0], "events: Ticks\n")
82
def test_stats_save_to_pickle(self):
83
f = self._tempfile("pkl")
85
data1 = cPickle.load(open(f))
86
self.assertEqual(type(data1), bzrlib.lsprof.Stats)