Chromium Code Reviews| 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) |