| Index: tracing/tracing/trace_data/trace_data_unittest.py
|
| diff --git a/tracing/tracing/trace_data/trace_data_unittest.py b/tracing/tracing/trace_data/trace_data_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..eea6cb20321bdce562d2f7dfdd094fe72ed61131
|
| --- /dev/null
|
| +++ b/tracing/tracing/trace_data/trace_data_unittest.py
|
| @@ -0,0 +1,103 @@
|
| +# 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 datetime
|
| +import exceptions
|
| +import os
|
| +import shutil
|
| +import tempfile
|
| +import unittest
|
| +
|
| +import trace_data
|
| +from tracing_build import html2trace
|
| +
|
| +
|
| +class TraceDataTest(unittest.TestCase):
|
| + def testSerialize(self):
|
| + test_dir = tempfile.mkdtemp()
|
| + trace_path = os.path.join(test_dir, 'test_trace.json')
|
| + try:
|
| + ri = trace_data.CreateTraceDataFromRawData({'traceEvents': [1, 2, 3]})
|
| + ri.Serialize(trace_path)
|
| + with open(trace_path) as f:
|
| + json_traces = html2trace.ReadTracesFromHTMLFilePath(f)
|
| + self.assertEqual(json_traces, [{'traceEvents': [1, 2, 3]}])
|
| + finally:
|
| + shutil.rmtree(test_dir)
|
| +
|
| + def testEmptyArrayValue(self):
|
| + # We can import empty lists and empty string.
|
| + d = trace_data.CreateTraceDataFromRawData([])
|
| + self.assertFalse(d.HasTracesFor(trace_data.CHROME_TRACE_PART))
|
| +
|
| + def testInvalidTrace(self):
|
| + with self.assertRaises(AssertionError):
|
| + trace_data.CreateTraceDataFromRawData({'hello': 1})
|
| +
|
| + def testListForm(self):
|
| + d = trace_data.CreateTraceDataFromRawData([{'ph': 'B'}])
|
| + self.assertTrue(d.HasTracesFor(trace_data.CHROME_TRACE_PART))
|
| + events = d.GetTracesFor(trace_data.CHROME_TRACE_PART)[0].get(
|
| + 'traceEvents', [])
|
| + self.assertEquals(1, len(events))
|
| +
|
| + def testStringForm(self):
|
| + d = trace_data.CreateTraceDataFromRawData('[{"ph": "B"}]')
|
| + self.assertTrue(d.HasTracesFor(trace_data.CHROME_TRACE_PART))
|
| + events = d.GetTracesFor(trace_data.CHROME_TRACE_PART)[0].get(
|
| + 'traceEvents', [])
|
| + self.assertEquals(1, len(events))
|
| +
|
| +
|
| +class TraceDataBuilderTest(unittest.TestCase):
|
| + def testBasicChrome(self):
|
| + builder = trace_data.TraceDataBuilder()
|
| + builder.AddTraceFor(trace_data.CHROME_TRACE_PART,
|
| + {'traceEvents': [1, 2, 3]})
|
| + builder.AddTraceFor(trace_data.TAB_ID_PART, ['tab-7'])
|
| + builder.AddTraceFor(trace_data.BATTOR_TRACE_PART, 'battor data here')
|
| +
|
| + d = builder.AsData()
|
| + self.assertTrue(d.HasTracesFor(trace_data.CHROME_TRACE_PART))
|
| + self.assertTrue(d.HasTracesFor(trace_data.TAB_ID_PART))
|
| + self.assertTrue(d.HasTracesFor(trace_data.BATTOR_TRACE_PART))
|
| +
|
| + self.assertRaises(Exception, builder.AsData)
|
| +
|
| + def testSetTraceFor(self):
|
| + telemetry_trace = {
|
| + 'traceEvents': [1, 2, 3],
|
| + 'metadata': {
|
| + 'field1': 'value1'
|
| + }
|
| + }
|
| +
|
| + builder = trace_data.TraceDataBuilder()
|
| + builder.AddTraceFor(trace_data.TELEMETRY_PART, telemetry_trace)
|
| + d = builder.AsData()
|
| +
|
| + self.assertEqual(d.GetTracesFor(trace_data.TELEMETRY_PART),
|
| + [telemetry_trace])
|
| +
|
| + def testSetTraceForRaisesWithInvalidPart(self):
|
| + builder = trace_data.TraceDataBuilder()
|
| +
|
| + self.assertRaises(exceptions.AssertionError,
|
| + lambda: builder.AddTraceFor('not_a_trace_part', {}))
|
| +
|
| + def testSetTraceForRaisesWithInvalidTrace(self):
|
| + builder = trace_data.TraceDataBuilder()
|
| +
|
| + self.assertRaises(
|
| + exceptions.AssertionError,
|
| + lambda: builder.AddTraceFor(trace_data.TELEMETRY_PART,
|
| + datetime.time.min))
|
| +
|
| + def testSetTraceForRaisesAfterAsData(self):
|
| + builder = trace_data.TraceDataBuilder()
|
| + builder.AsData()
|
| +
|
| + self.assertRaises(
|
| + exceptions.Exception,
|
| + lambda: builder.AddTraceFor(trace_data.TELEMETRY_PART, {}))
|
|
|