Index: tools/telemetry/telemetry/timeline/trace_data_unittest.py |
diff --git a/tools/telemetry/telemetry/timeline/trace_data_unittest.py b/tools/telemetry/telemetry/timeline/trace_data_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..db5f2b380cbcec92b0f55c36acffdf41bd17d031 |
--- /dev/null |
+++ b/tools/telemetry/telemetry/timeline/trace_data_unittest.py |
@@ -0,0 +1,85 @@ |
+# Copyright 2014 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import cStringIO |
+import json |
+import logging |
+import unittest |
+ |
+from telemetry.core import util |
+from telemetry.timeline import trace_data |
+ |
+class TraceDataTest(unittest.TestCase): |
+ def testSerialize(self): |
+ ri = trace_data.TraceData({'traceEvents': [1,2,3]}) |
+ f = cStringIO.StringIO() |
+ ri.Serialize(f) |
+ d = f.getvalue() |
+ |
+ assert 'traceEvents' in d |
slamm
2014/12/22 17:12:32
self.assertIn('traceEvents', d)
sullivan
2014/12/22 19:28:38
Done.
|
+ assert '[1, 2, 3]' in d |
slamm
2014/12/22 17:12:32
self.assertIn('[1, 2, 3]', d)
sullivan
2014/12/22 19:28:38
Done.
|
+ |
+ json.loads(d) |
+ |
+ def testValidate(self): |
slamm
2014/12/22 17:12:32
Split into 2 tests.
def testValidateWithNonPrimat
sullivan
2014/12/22 19:28:38
Done.
|
+ self.assertRaisesRegexp( |
+ Exception, |
+ 'TraceData cannot be serialized: .* is not JSON serializable', |
+ trace_data.TraceData, |
+ ({'hello': TraceDataTest})) |
slamm
2014/12/22 17:12:32
With a module-defined exception, this check is sim
sullivan
2014/12/22 19:28:38
Done.
|
+ |
+ a = [] |
+ d = {'foo': a} |
+ a.append(d) |
+ self.assertRaisesRegexp( |
+ Exception, |
+ 'TraceData cannot be serialized: Circular reference detected', |
slamm
2014/12/22 17:12:32
I did not see this exception raised in the code.
sullivan
2014/12/22 19:28:38
Raised by json parsing.
|
+ trace_data.TraceData, |
+ d) |
+ |
+ def testEmptyArrayValue(self): |
+ # We can import empty lists and empty string. |
+ d = trace_data.TraceData([]) |
+ assert d.HasEventsFor(trace_data.CHROME_TRACE_PART) == False |
slamm
2014/12/22 17:12:32
self.assertFalse(d.HasEventsFor(trace_data.CHROME_
sullivan
2014/12/22 19:28:38
Done.
|
+ |
+ def testEmptyStringValue(self): |
+ d = trace_data.TraceData('') |
+ assert d.HasEventsFor(trace_data.CHROME_TRACE_PART) == False |
+ |
+ def testListForm(self): |
+ d = trace_data.TraceData([{'ph': 'B'}]) |
+ assert d.HasEventsFor(trace_data.CHROME_TRACE_PART) == True |
+ assert len(d.GetEventsFor(trace_data.CHROME_TRACE_PART)) == 1 |
+ |
+ def testStringForm(self): |
+ d = trace_data.TraceData('[{"ph": "B"}]') |
+ assert d.HasEventsFor(trace_data.CHROME_TRACE_PART) == True |
+ assert len(d.GetEventsFor(trace_data.CHROME_TRACE_PART)) == 1 |
+ |
+ def testStringForm2(self): |
+ d = trace_data.TraceData('{"inspectorTimelineEvents": [1]}') |
+ assert d.HasEventsFor(trace_data.INSPECTOR_TRACE_PART) |
+ assert len(d.GetEventsFor(trace_data.INSPECTOR_TRACE_PART)) == 1 |
+ |
+ def testCorrectlyMalformedStringForm(self): |
+ d = trace_data.TraceData("""[ |
+ {"ph": "B"}""") |
+ assert d.HasEventsFor(trace_data.CHROME_TRACE_PART) == True |
+ |
+ def testCorrectlyMalformedStringForm2(self): |
+ d = trace_data.TraceData("""[ |
+ {"ph": "B"},""") |
+ assert d.HasEventsFor(trace_data.CHROME_TRACE_PART) == True |
+ |
+class TraceDataBuilderTest(unittest.TestCase): |
+ def testBasicChrome(self): |
+ builder = trace_data.TraceDataBuilder() |
+ builder.AddEventsTo(trace_data.CHROME_TRACE_PART, [1,2,3]) |
+ builder.AddEventsTo(trace_data.TAB_ID_PART, ['tab-7']) |
+ |
+ d = builder.AsData() |
+ self.assertTrue(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ self.assertTrue(d.HasEventsFor(trace_data.TAB_ID_PART)) |
+ |
+ self.assertRaises(Exception, builder.AsData) |