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..c578b6f07eb6c0477b33c1f7af291fbb11425aeb |
--- /dev/null |
+++ b/tools/telemetry/telemetry/timeline/trace_data_unittest.py |
@@ -0,0 +1,80 @@ |
+# 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() |
+ |
+ self.assertIn('traceEvents', d) |
+ self.assertIn('[1, 2, 3]', d) |
+ |
+ json.loads(d) |
+ |
+ def testValidateWithNonPrimativeRaises(self): |
+ with self.assertRaises(trace_data.NonSerializableTraceData): |
+ trace_data.TraceData({'hello': TraceDataTest}) |
+ |
+ def testValidateWithCircularReferenceRaises(self): |
+ a = [] |
+ d = {'foo': a} |
+ a.append(d) |
+ with self.assertRaises(trace_data.NonSerializableTraceData): |
+ trace_data.TraceData(d) |
+ |
+ def testEmptyArrayValue(self): |
+ # We can import empty lists and empty string. |
+ d = trace_data.TraceData([]) |
+ self.assertFalse(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ |
+ def testEmptyStringValue(self): |
+ d = trace_data.TraceData('') |
+ self.assertFalse(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ |
+ def testListForm(self): |
+ d = trace_data.TraceData([{'ph': 'B'}]) |
+ self.assertTrue(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ self.assertEquals(1, len(d.GetEventsFor(trace_data.CHROME_TRACE_PART))) |
+ |
+ def testStringForm(self): |
+ d = trace_data.TraceData('[{"ph": "B"}]') |
+ self.assertTrue(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ self.assertEquals(1, len(d.GetEventsFor(trace_data.CHROME_TRACE_PART))) |
+ |
+ def testStringForm2(self): |
+ d = trace_data.TraceData('{"inspectorTimelineEvents": [1]}') |
+ self.assertTrue(d.HasEventsFor(trace_data.INSPECTOR_TRACE_PART)) |
+ self.assertEquals(1, len(d.GetEventsFor(trace_data.INSPECTOR_TRACE_PART))) |
+ |
+ def testCorrectlyMalformedStringForm(self): |
+ d = trace_data.TraceData("""[ |
+ {"ph": "B"}""") |
+ self.assertTrue(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ |
+ def testCorrectlyMalformedStringForm2(self): |
+ d = trace_data.TraceData("""[ |
+ {"ph": "B"},""") |
+ self.assertTrue(d.HasEventsFor(trace_data.CHROME_TRACE_PART)) |
+ |
+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) |