Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: tools/telemetry/telemetry/timeline/trace_data_unittest.py

Issue 805463002: Implement ubertracing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merg Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698