| Index: tools/telemetry/telemetry/inspector_timeline_unittest.py
|
| diff --git a/tools/telemetry/telemetry/inspector_timeline_unittest.py b/tools/telemetry/telemetry/inspector_timeline_unittest.py
|
| index 9e0ac7b2a6ea3609931d52fbfc03f00dce1e9eca..6a7af8d058b820547b40d11b6b950b1ce045d9b9 100644
|
| --- a/tools/telemetry/telemetry/inspector_timeline_unittest.py
|
| +++ b/tools/telemetry/telemetry/inspector_timeline_unittest.py
|
| @@ -1,63 +1,102 @@
|
| # Copyright (c) 2012 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 os
|
| import unittest
|
|
|
| -from telemetry import inspector_timeline
|
| from telemetry import tab_test_case
|
| from telemetry import util
|
| +from telemetry.inspector_timeline import InspectorTimeline
|
| +
|
| +_SAMPLE_MESSAGE = {
|
| + 'children': [
|
| + {'data': {},
|
| + 'startTime': 1352783525921.823,
|
| + 'type': 'BeginFrame',
|
| + 'usedHeapSize': 1870736},
|
| + {'children': [],
|
| + 'data': {'height': 723,
|
| + 'width': 1272,
|
| + 'x': 0,
|
| + 'y': 0},
|
| + 'endTime': 1352783525921.8992,
|
| + 'frameId': '10.2',
|
| + 'startTime': 1352783525921.8281,
|
| + 'type': 'Layout',
|
| + 'usedHeapSize': 1870736},
|
| + {'children': [
|
| + {'children': [],
|
| + 'data': {'imageType': 'PNG'},
|
| + 'endTime': 1352783525927.7939,
|
| + 'startTime': 1352783525922.4241,
|
| + 'type': 'DecodeImage',
|
| + 'usedHeapSize': 1870736}
|
| + ],
|
| + 'data': {'height': 432,
|
| + 'width': 1272,
|
| + 'x': 0,
|
| + 'y': 8},
|
| + 'endTime': 1352783525927.9822,
|
| + 'frameId': '10.2',
|
| + 'startTime': 1352783525921.9292,
|
| + 'type': 'Paint',
|
| + 'usedHeapSize': 1870736}
|
| + ],
|
| + 'data': {},
|
| + 'endTime': 1352783525928.041,
|
| + 'startTime': 1352783525921.8049,
|
| + 'type': 'Program'}
|
| +
|
| +class InspectorEventParsingTest(unittest.TestCase):
|
| + def testParsingWithSampleData(self):
|
| + root_event = InspectorTimeline.RawEventToTimelineEvent(_SAMPLE_MESSAGE)
|
| + self.assertTrue(root_event)
|
| + decode_image_event = [
|
| + child for child in root_event.GetAllChildrenRecursive()
|
| + if child.name == 'DecodeImage'][0]
|
| + self.assertEquals(decode_image_event.args['data']['imageType'], 'PNG')
|
| + self.assertTrue(decode_image_event.duration_ms > 0)
|
|
|
| + def testParsingWithSimpleData(self):
|
| + raw_event = {'type': 'Foo',
|
| + 'startTime': 1,
|
| + 'endTime': 3,
|
| + 'children': []}
|
| + event = InspectorTimeline.RawEventToTimelineEvent(raw_event)
|
| + self.assertEquals('Foo', event.name)
|
| + self.assertEquals(1, event.start_time_ms)
|
| + self.assertEquals(3, event.end_time_ms)
|
| + self.assertEquals(2, event.duration_ms)
|
| + self.assertEquals([], event.children)
|
|
|
| -_SAMPLE_STREAM = [
|
| -{u'method': u'Timeline.eventRecorded',
|
| - u'params': {u'record': {u'children': [
|
| - {u'data': {},
|
| - u'startTime': 1352783525921.823,
|
| - u'type': u'BeginFrame',
|
| - u'usedHeapSize': 1870736},
|
| - {u'children': [],
|
| - u'data': {u'height': 723,
|
| - u'width': 1272,
|
| - u'x': 0,
|
| - u'y': 0},
|
| - u'endTime': 1352783525921.8992,
|
| - u'frameId': u'10.2',
|
| - u'startTime': 1352783525921.8281,
|
| - u'type': u'Layout',
|
| - u'usedHeapSize': 1870736},
|
| - {u'children': [{u'children': [],
|
| - u'data': {u'imageType': u'PNG'},
|
| - u'endTime': 1352783525927.7939,
|
| - u'startTime': 1352783525922.4241,
|
| - u'type': u'DecodeImage',
|
| - u'usedHeapSize': 1870736}],
|
| - u'data': {u'height': 432,
|
| - u'width': 1272,
|
| - u'x': 0,
|
| - u'y': 8},
|
| - u'endTime': 1352783525927.9822,
|
| - u'frameId': u'10.2',
|
| - u'startTime': 1352783525921.9292,
|
| - u'type': u'Paint',
|
| - u'usedHeapSize': 1870736}],
|
| -u'data': {},
|
| -u'endTime': 1352783525928.041,
|
| -u'startTime': 1352783525921.8049,
|
| -u'type': u'Program'}}},
|
| -]
|
| + def testParsingWithArgs(self):
|
| + raw_event = {'type': 'Foo',
|
| + 'startTime': 1,
|
| + 'endTime': 3,
|
| + 'foo': 7,
|
| + 'bar': {'x': 1}}
|
| + event = InspectorTimeline.RawEventToTimelineEvent(raw_event)
|
| + self.assertEquals('Foo', event.name)
|
| + self.assertEquals(1, event.start_time_ms)
|
| + self.assertEquals(3, event.end_time_ms)
|
| + self.assertEquals(2, event.duration_ms)
|
| + self.assertEquals([], event.children)
|
| + self.assertEquals(7, event.args['foo'])
|
| + self.assertEquals(1, event.args['bar']['x'])
|
|
|
| + def testEventsWithNoStartTimeAreDropped(self):
|
| + raw_event = {'type': 'Foo',
|
| + 'endTime': 1,
|
| + 'children': []}
|
| + event = InspectorTimeline.RawEventToTimelineEvent(raw_event)
|
| + self.assertEquals(None, event)
|
|
|
| -class InspectorTimelineTest(unittest.TestCase):
|
| - def testTimelineEventParsing(self):
|
| - timeline_events = inspector_timeline.TimelineEvents()
|
| - for raw_events in _SAMPLE_STREAM:
|
| - timeline_events.AppendRawEvents(raw_events)
|
| - decode_image_events = timeline_events.GetAllOfType('DecodeImage')
|
| - self.assertEquals(len(decode_image_events), 1)
|
| - self.assertEquals(decode_image_events[0].data['imageType'], 'PNG')
|
| - self.assertTrue(decode_image_events[0].elapsed_time > 0)
|
| + def testEventsWithNoEndTimeAreDropped(self):
|
| + raw_event = {'type': 'Foo',
|
| + 'endTime': 1,
|
| + 'children': []}
|
| + event = InspectorTimeline.RawEventToTimelineEvent(raw_event)
|
| + self.assertEquals(None, event)
|
|
|
|
|
| class InspectorTimelineTabTest(tab_test_case.TabTestCase):
|
| @@ -75,7 +114,7 @@ class InspectorTimelineTabTest(tab_test_case.TabTestCase):
|
| def testGotTimeline(self):
|
| self._StartServer()
|
| image_url = self._browser.http_server.UrlOf('image.png')
|
| - with inspector_timeline.InspectorTimeline.Recorder(self._tab.timeline):
|
| + with InspectorTimeline.Recorder(self._tab.timeline):
|
| self._tab.runtime.Execute(
|
| """
|
| var done = false;
|
| @@ -86,7 +125,7 @@ window.webkitRequestAnimationFrame(function() { done = true; });
|
| """ % image_url)
|
| self._WaitForAnimationFrame()
|
|
|
| - r = self._tab.timeline.timeline_events.GetAllOfType('DecodeImage')
|
| + r = self._tab.timeline.timeline_model.GetAllOfName('DecodeImage')
|
| self.assertTrue(len(r) > 0)
|
| - self.assertEquals(r[0].data['imageType'], 'PNG')
|
| - self.assertTrue(r[0].elapsed_time > 0)
|
| + self.assertEquals(r[0].args['data']['imageType'], 'PNG')
|
| + self.assertTrue(r[0].duration_ms > 0)
|
|
|