Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / py_trace_event / src / trace_event_impl / log_single_thread_test.py
1 # Copyright 2011 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 import json
5 import math
6 import tempfile
7 import time
8 import unittest
9 from .log import *
10 from .trace_test import *
11
12 class SingleThreadTest(TraceTest):
13   def test_one_func(self):
14     actual_diff = []
15     def func1():
16       trace_begin("func1")
17       start = time.time()
18       time.sleep(0.25)
19       end = time.time()
20       actual_diff.append(end-start) # Pass via array because of Python scoping
21       trace_end("func1")
22
23     res = self.go(func1)
24     tids = res.findThreadIds()
25     self.assertEquals(1, len(tids))
26     events = res.findEventsOnThread(tids[0])
27     self.assertEquals(2, len(events))
28     self.assertEquals('B', events[0]["ph"])
29     self.assertEquals('E', events[1]["ph"])
30     measured_diff = events[1]["ts"] - events[0]["ts"]
31     actual_diff = 1000000 * actual_diff[0]
32     self.assertTrue(math.fabs(actual_diff - measured_diff) < 1000)
33
34   def test_redundant_flush(self):
35     def func1():
36       trace_begin("func1")
37       time.sleep(0.25)
38       trace_flush()
39       trace_flush()
40       trace_end("func1")
41
42     res = self.go(func1)
43     events = res.findEventsOnThread(res.findThreadIds()[0])
44     self.assertEquals(2, len(events))
45     self.assertEquals('B', events[0]["ph"])
46     self.assertEquals('E', events[1]["ph"])
47
48   def test_nested_func(self):
49     def func1():
50       trace_begin("func1")
51       time.sleep(0.25)
52       func2()
53       trace_end("func1")
54
55     def func2():
56       trace_begin("func2")
57       time.sleep(0.05)
58       trace_end("func2")
59
60     res = self.go(func1)
61     self.assertEquals(1, len(res.findThreadIds()))
62
63     tids = res.findThreadIds()
64     self.assertEquals(1, len(tids))
65     events = res.findEventsOnThread(tids[0])
66     efmt = ["%s %s" % (e["ph"], e["name"]) for e in events]
67     self.assertEquals(
68       ["B func1",
69        "B func2",
70        "E func2",
71        "E func1"],
72       efmt);
73