~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_lsprof.py

  • Committer: Ian Clatworthy
  • Date: 2010-03-03 03:28:30 UTC
  • mto: (4797.31.1 integration-2.1)
  • mto: This revision was merged to the branch mainline in revision 5075.
  • Revision ID: ian.clatworthy@canonical.com-20100303032830-qf3ty4z40i410bem
add What's New to the list of PDF documents generated

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Tests for profiling data collection."""
18
18
 
64
64
 
65
65
    def _tempfile(self, ext):
66
66
        dir = self.test_dir
67
 
        return os.path.join(dir, "tmp_profile_data." + ext)
 
67
        return bzrlib.osutils.pathjoin(dir, "tmp_profile_data." + ext)
68
68
 
69
69
    def test_stats_save_to_txt(self):
70
70
        f = self._tempfile("txt")
77
77
        self.stats.save(f)
78
78
        lines = open(f).readlines()
79
79
        self.assertEqual(lines[0], "events: Ticks\n")
 
80
        f = bzrlib.osutils.pathjoin(self.test_dir, "callgrind.out.foo")
 
81
        self.stats.save(f)
 
82
        lines = open(f).readlines()
 
83
        self.assertEqual(lines[0], "events: Ticks\n")
80
84
        # Test explicit format nommination
81
85
        f2 = self._tempfile("txt")
82
86
        self.stats.save(f2, format="callgrind")
88
92
        self.stats.save(f)
89
93
        data1 = cPickle.load(open(f))
90
94
        self.assertEqual(type(data1), bzrlib.lsprof.Stats)
 
95
 
 
96
 
 
97
class TestBzrProfiler(tests.TestCase):
 
98
 
 
99
    _test_needs_features = [LSProfFeature]
 
100
 
 
101
    def test_start_call_stuff_stop(self):
 
102
        profiler = bzrlib.lsprof.BzrProfiler()
 
103
        profiler.start()
 
104
        try:
 
105
            def a_function():
 
106
                pass
 
107
            a_function()
 
108
        finally:
 
109
            stats = profiler.stop()
 
110
        stats.freeze()
 
111
        lines = [str(data) for data in stats.data]
 
112
        lines = [line for line in lines if 'a_function' in line]
 
113
        self.assertLength(1, lines)