OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
| 5 import cStringIO |
5 import json | 6 import json |
6 import os | 7 import os |
| 8 import unittest |
7 | 9 |
8 from telemetry import tab_test_case | 10 from telemetry import tab_test_case |
| 11 from telemetry import tracing_backend |
9 from telemetry import util | 12 from telemetry import util |
10 | 13 |
11 | 14 |
12 class TracingBackendTest(tab_test_case.TabTestCase): | 15 class TracingBackendTest(tab_test_case.TabTestCase): |
13 def _StartServer(self): | 16 def _StartServer(self): |
14 base_dir = os.path.dirname(__file__) | 17 base_dir = os.path.dirname(__file__) |
15 self._browser.SetHTTPServerDirectory(os.path.join(base_dir, '..', | 18 self._browser.SetHTTPServerDirectory(os.path.join(base_dir, '..', |
16 'unittest_data')) | 19 'unittest_data')) |
17 | 20 |
18 def _WaitForAnimationFrame(self): | 21 def _WaitForAnimationFrame(self): |
19 def _IsDone(): | 22 def _IsDone(): |
20 js_is_done = """done""" | 23 js_is_done = """done""" |
21 return bool(self._tab.EvaluateJavaScript(js_is_done)) | 24 return bool(self._tab.EvaluateJavaScript(js_is_done)) |
22 util.WaitFor(_IsDone, 5) | 25 util.WaitFor(_IsDone, 5) |
23 | 26 |
24 def testGotTrace(self): | 27 def testGotTrace(self): |
25 self._StartServer() | 28 self._StartServer() |
26 self._browser.StartTracing() | 29 self._browser.StartTracing() |
27 self._browser.http_server.UrlOf('image.png') | 30 self._browser.http_server.UrlOf('image.png') |
28 self.assertTrue(self._browser.supports_tracing) | 31 self.assertTrue(self._browser.supports_tracing) |
29 self._browser.StopTracing() | 32 self._browser.StopTracing() |
30 trace = self._browser.GetTrace() | 33 model = self._browser.GetTraceResultAndReset().AsTimelineModel() |
31 json_trace = json.loads(trace) | 34 events = model.GetAllEvents() |
32 self.assertTrue('traceEvents' in json_trace) | 35 assert len(events) > 0 |
33 self.assertTrue(json_trace['traceEvents']) | 36 |
| 37 class TracingResultImplTest(unittest.TestCase): |
| 38 def testWrite1(self): |
| 39 ri = tracing_backend.TraceResultImpl([]) |
| 40 f = cStringIO.StringIO() |
| 41 ri.Serialize(f) |
| 42 v = f.getvalue() |
| 43 |
| 44 j = json.loads(v) |
| 45 assert 'traceEvents' in j |
| 46 self.assertEquals(j['traceEvents'], []) |
| 47 |
| 48 def testWrite2(self): |
| 49 ri = tracing_backend.TraceResultImpl([ |
| 50 '"foo"', |
| 51 '"bar"']) |
| 52 f = cStringIO.StringIO() |
| 53 ri.Serialize(f) |
| 54 v = f.getvalue() |
| 55 |
| 56 j = json.loads(v) |
| 57 assert 'traceEvents' in j |
| 58 self.assertEquals(j['traceEvents'], ['foo', 'bar']) |
| 59 |
| 60 def testWrite3(self): |
| 61 ri = tracing_backend.TraceResultImpl([ |
| 62 '"foo"', |
| 63 '"bar"', |
| 64 '"baz"']) |
| 65 f = cStringIO.StringIO() |
| 66 ri.Serialize(f) |
| 67 v = f.getvalue() |
| 68 |
| 69 j = json.loads(v) |
| 70 assert 'traceEvents' in j |
| 71 self.assertEquals(j['traceEvents'], |
| 72 ['foo', 'bar', 'baz']) |
OLD | NEW |