1#!/usr/bin/env python
2# Copyright (c) 2012 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import pyauto_tracing
7import pyauto
8import tracer
9
10
11class TracingSmokeTest(pyauto.PyUITest):
12  """Test basic functionality of the tracing API."""
13  def setUp(self):
14    super(TracingSmokeTest, self).setUp()
15    self._tracer_factory = tracer.TracerFactory(self)
16
17  def testGetData(self):
18    """Check that we can find a CrBrowserMain thread."""
19    tracer = self._tracer_factory.Produce()
20    tracer.BeginTracing()
21    model = tracer.EndTracing()
22    self.assertEqual(1, len(model.FindAllThreadsNamed('CrBrowserMain')))
23
24  def testMultipleTraces(self):
25    """Check that we can run multiple traces on the same tracer."""
26    tracer = self._tracer_factory.Produce()
27    tracer.BeginTracing()
28    model1 = tracer.EndTracing()
29    tracer.BeginTracing()
30    model2 = tracer.EndTracing()
31    self.assertEqual(1, len(model1.FindAllThreadsNamed('CrBrowserMain')))
32    self.assertEqual(1, len(model2.FindAllThreadsNamed('CrBrowserMain')))
33
34  def testMultipleTracers(self):
35    """Check that we can run multiple traces with multiple tracers."""
36    tracer1 = self._tracer_factory.Produce()
37    tracer2 = self._tracer_factory.Produce()
38    # Nested calls to beginTracing is untested and probably won't work.
39    tracer1.BeginTracing()
40    model1 = tracer1.EndTracing()
41    tracer2.BeginTracing()
42    model2 = tracer2.EndTracing()
43    self.assertEqual(1, len(model1.FindAllThreadsNamed('CrBrowserMain')))
44    self.assertEqual(1, len(model2.FindAllThreadsNamed('CrBrowserMain')))
45
46  def testModelValidAfterTracer(self):
47    """Check that a TimelineModel is valid after its Tracer is gone."""
48    tracer = self._tracer_factory.Produce()
49    del self._tracer_factory
50    tracer.BeginTracing()
51    model = tracer.EndTracing()
52    del tracer
53    self.assertEqual(1, len(model.FindAllThreadsNamed('CrBrowserMain')))
54
55
56if __name__ == '__main__':
57  pyauto_tracing.Main()
58