| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 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. |
| --> |
| |
| <link rel="import" href="/core/test_utils.html"> |
| <link rel="import" href="/extras/importer/linux_perf/linux_perf_importer.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tv.b.unittest.testSuite(function() { |
| test('androidUserlandImport', function() { |
| var lines = [ |
| 'SurfaceFlinger-4831 [001] ...1 80909.598554: tracing_mark_write: B|4829|onMessageReceived', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598572: tracing_mark_write: B|4829|handleMessageInvalidate', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598590: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598604: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598627: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598651: tracing_mark_write: B|4829|updateTexImage', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598675: tracing_mark_write: B|4829|acquireBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598695: tracing_mark_write: B|4829|' + // @suppress longLineCheck |
| 'com.android.launcher/com.android.launcher2.Launcher: 0', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598709: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598733: tracing_mark_write: C|4829|' + // @suppress longLineCheck |
| 'com.android.launcher/com.android.launcher2.Launcher|0', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598746: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598844: tracing_mark_write: B|4829|releaseBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598862: tracing_mark_write: B|4829|' + // @suppress longLineCheck |
| 'com.android.launcher/com.android.launcher2.Launcher: 2', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598876: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598892: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598925: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598955: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598988: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.599001: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599021: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.599036: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599068: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599087: tracing_mark_write: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599104: tracing_mark_write: E' |
| ]; |
| var m = new tv.c.TraceModel(lines.join('\n'), false); |
| assert.isFalse(m.hasImportWarnings); |
| |
| var threads = m.getAllThreads(); |
| assert.equal(threads.length, 1); |
| |
| var thread = threads[0]; |
| assert.equal(thread.parent.pid, 4829); |
| assert.equal(thread.tid, 4831); |
| assert.equal(thread.name, 'SurfaceFlinger'); |
| assert.equal(thread.sliceGroup.length, 11); |
| }); |
| |
| test('androidUserlandImportWithSpacesInThreadName', function() { |
| var lines = [ |
| 'Surface Flinger -4831 [001] ...1 80909.598590: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck |
| 'Surface Flinger -4831 [001] ...1 80909.598604: tracing_mark_write: E' // @suppress longLineCheck |
| ]; |
| var m = new tv.c.TraceModel(lines.join('\n'), false); |
| assert.isFalse(m.hasImportWarnings); |
| |
| var threads = m.getAllThreads(); |
| assert.equal(threads.length, 1); |
| |
| var thread = threads[0]; |
| assert.equal(thread.parent.pid, 4829); |
| assert.equal(thread.tid, 4831); |
| assert.equal(thread.name, 'Surface Flinger '); |
| assert.equal(thread.sliceGroup.length, 1); |
| }); |
| |
| test('androidAsyncUserlandImport', function() { |
| var lines = [ |
| 'ndroid.launcher-9649 ( 9649) [000] ...1 1990280.663276: ' + |
| 'tracing_mark_write: S|9649|animator:childrenOutlineAlpha|' + |
| '1113053968', |
| 'ndroid.launcher-9649 ( 9649) [000] ...1 1990280.781445: ' + |
| 'tracing_mark_write: F|9649|animator:childrenOutlineAlpha|' + |
| '1113053968' |
| ]; |
| var m = new tv.c.TraceModel(lines.join('\n'), false); |
| assert.isFalse(m.hasImportWarnings); |
| |
| var threads = m.getAllThreads(); |
| assert.equal(threads.length, 1); |
| |
| var thread = threads[0]; |
| assert.equal(thread.parent.pid, 9649); |
| assert.equal(thread.tid, 9649); |
| assert.equal(thread.name, 'ndroid.launcher'); |
| assert.equal(thread.sliceGroup.length, 0); |
| assert.equal(thread.asyncSliceGroup.length, 1); |
| |
| var slice = thread.asyncSliceGroup.slices[0]; |
| assert.equal(slice.title, 'animator:childrenOutlineAlpha'); |
| assert.closeTo(118.169, slice.duration, 1e-5); |
| }); |
| |
| test('androidUserlandLegacyKernelImport', function() { |
| var lines = [ |
| 'SurfaceFlinger-4831 [001] ...1 80909.598554: 0: B|4829|onMessageReceived', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598572: 0: B|4829|handleMessageInvalidate', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598590: 0: B|4829|latchBuffer', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598604: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598627: 0: B|4829|latchBuffer', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598651: 0: B|4829|updateTexImage', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598675: 0: B|4829|acquireBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598695: 0: B|4829|' + |
| 'com.android.launcher/com.android.launcher2.Launcher: 0', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598709: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598733: 0: C|4829|' + |
| 'com.android.launcher/com.android.launcher2.Launcher|0', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598746: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598844: 0: B|4829|releaseBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.598862: 0: B|4829|' + |
| 'com.android.launcher/com.android.launcher2.Launcher: 2', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598876: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598892: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598925: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598955: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.598988: 0: B|4829|latchBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.599001: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599021: 0: B|4829|latchBuffer', // @suppress longLineCheck |
| 'SurfaceFlinger-4831 [001] ...1 80909.599036: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599068: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599087: 0: E', |
| 'SurfaceFlinger-4831 [001] ...1 80909.599104: 0: E' |
| ]; |
| var m = new tv.c.TraceModel(lines.join('\n'), false); |
| assert.isFalse(m.hasImportWarnings); |
| |
| var threads = m.getAllThreads(); |
| assert.equal(threads.length, 1); |
| |
| var thread = threads[0]; |
| assert.equal(thread.parent.pid, 4829); |
| assert.equal(thread.tid, 4831); |
| assert.equal(thread.name, 'SurfaceFlinger'); |
| assert.equal(thread.sliceGroup.length, 11); |
| }); |
| |
| test('androidUserlandChromiumImport', function() { |
| var lines = [ |
| 'SandboxedProces-2894 [001] ...1 253.780659: tracing_mark_write: B|2867|DoWorkLoop|arg1=1|cat1', // @suppress longLineCheck |
| 'SandboxedProces-2894 [001] ...1 253.780671: tracing_mark_write: B|2867|DeferOrRunPendingTask|source=test=test;task=xyz|cat2', // @suppress longLineCheck |
| 'SandboxedProces-2894 [001] ...1 253.780671: tracing_mark_write: E|2867|DeferOrRunPendingTask||cat1', // @suppress longLineCheck |
| 'SandboxedProces-2894 [001] ...1 253.780686: tracing_mark_write: B|2867|MessageLoop::RunTask|source=ipc/ipc_sync_message_filter.cc:Send|cat2', // @suppress longLineCheck |
| 'SandboxedProces-2894 [001] ...1 253.780700: tracing_mark_write: E|2867|MessageLoop::RunTask||cat1', // @suppress longLineCheck |
| 'SandboxedProces-2894 [001] ...1 253.780750: tracing_mark_write: C|2867|counter1|10|cat1', // @suppress longLineCheck |
| 'SandboxedProces-2894 [001] ...1 253.780859: tracing_mark_write: E|2867|DoWorkLoop|arg2=2|cat2', // @suppress longLineCheck |
| 'SandboxedProces-2894 [000] ...1 255.663276: tracing_mark_write: S|2867|async|1113053968|arg1=1;arg2=2|cat1', // @suppress longLineCheck |
| 'SandboxedProces-2894 [000] ...1 255.663276: tracing_mark_write: F|2867|async|1113053968|arg3=3|cat1', // @suppress longLineCheck |
| 'SandboxedProces-2894 [000] ...1 255.663276: tracing_mark_write: trace_event_clock_sync: parent_ts=128' // @suppress longLineCheck |
| ]; |
| var m = new tv.c.TraceModel(lines.join('\n'), false); |
| assert.isFalse(m.hasImportWarnings); |
| |
| var threads = m.getAllThreads(); |
| assert.equal(threads.length, 1); |
| |
| var thread = threads[0]; |
| assert.equal(thread.parent.pid, 2867); |
| assert.equal(thread.tid, 2894); |
| assert.equal(thread.name, 'SandboxedProces'); |
| assert.equal(thread.sliceGroup.length, 3); |
| |
| assert.equal(thread.sliceGroup.slices[0].args['arg1'], '1'); |
| assert.equal(thread.sliceGroup.slices[0].args['arg2'], '2'); |
| |
| assert.equal(thread.sliceGroup.slices[1].args['source'], 'test=test'); |
| assert.equal(thread.sliceGroup.slices[1].category, 'cat2'); |
| assert.equal('DeferOrRunPendingTask', |
| thread.sliceGroup.slices[1].title); |
| assert.equal(thread.sliceGroup.slices[1].args['task'], 'xyz'); |
| |
| assert.equal('ipc/ipc_sync_message_filter.cc:Send', |
| thread.sliceGroup.slices[2].args['source']); |
| |
| assert.equal(thread.asyncSliceGroup.length, 1); |
| assert.equal(thread.asyncSliceGroup.slices[0].args['arg1'], '1'); |
| assert.equal(thread.asyncSliceGroup.slices[0].args['arg2'], '2'); |
| assert.equal(thread.asyncSliceGroup.slices[0].args['arg3'], '3'); |
| |
| var counters = m.getAllCounters(); |
| assert.equal(counters.length, 1); |
| assert.equal(counters[0].category, 'cat1'); |
| assert.equal(counters[0].name, 'counter1'); |
| |
| assert.equal(counters[0].numSamples, 1); |
| assert.equal(counters[0].getSeries(0).getSample(0).value, 10); |
| |
| assert.equal(Math.round((253.780659 - (255.663276 - 128)) * 1000), |
| Math.round(thread.sliceGroup.slices[0].start)); |
| }); |
| }); |
| </script> |