<!DOCTYPE html>
<html>
<!--
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.
-->
<head>
<title>LinuxPerfAndroidParser tests</title>
<script src="base.js"></script>
</head>
<body>
<script>
'use strict';
base.require('unittest');
base.require('test_utils');
base.require('linux_perf_importer');
function testAndroidUserlandImport() {
var lines = [
'SurfaceFlinger-4831 [001] ...1 80909.598554: tracing_mark_write: B|4829|onMessageReceived',
'SurfaceFlinger-4831 [001] ...1 80909.598572: tracing_mark_write: B|4829|handleMessageInvalidate',
'SurfaceFlinger-4831 [001] ...1 80909.598590: tracing_mark_write: B|4829|latchBuffer',
'SurfaceFlinger-4831 [001] ...1 80909.598604: tracing_mark_write: E',
'SurfaceFlinger-4831 [001] ...1 80909.598627: tracing_mark_write: B|4829|latchBuffer',
'SurfaceFlinger-4831 [001] ...1 80909.598651: tracing_mark_write: B|4829|updateTexImage',
'SurfaceFlinger-4831 [001] ...1 80909.598675: tracing_mark_write: B|4829|acquireBuffer',
'SurfaceFlinger-4831 [001] ...1 80909.598695: tracing_mark_write: B|4829|' +
'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|' +
'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',
'SurfaceFlinger-4831 [001] ...1 80909.598862: tracing_mark_write: B|4829|' +
'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',
'SurfaceFlinger-4831 [001] ...1 80909.599001: tracing_mark_write: E',
'SurfaceFlinger-4831 [001] ...1 80909.599021: tracing_mark_write: B|4829|latchBuffer',
'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 tracing.TimelineModel(lines.join('\n'), false);
assertEquals(0, m.importErrors.length);
var threads = m.getAllThreads();
assertEquals(1, threads.length);
var thread = threads[0];
assertEquals(4829, thread.pid);
assertEquals(4831, thread.tid);
assertEquals('SurfaceFlinger', thread.name);
assertEquals(11, thread.slices.length);
}
function testAndroidUserlandImportWithSpacesInThreadName() {
var lines = [
'Surface Flinger -4831 [001] ...1 80909.598590: tracing_mark_write: B|4829|latchBuffer',
'Surface Flinger -4831 [001] ...1 80909.598604: tracing_mark_write: E',
];
var m = new tracing.TimelineModel(lines.join('\n'), false);
assertEquals(0, m.importErrors.length);
var threads = m.getAllThreads();
assertEquals(1, threads.length);
var thread = threads[0];
assertEquals(4829, thread.pid);
assertEquals(4831, thread.tid);
assertEquals('Surface Flinger ', thread.name);
assertEquals(1, thread.slices.length);
}
function testAndroidUserlandLegacyKernelImport() {
var lines = [
'SurfaceFlinger-4831 [001] ...1 80909.598554: 0: B|4829|onMessageReceived',
'SurfaceFlinger-4831 [001] ...1 80909.598572: 0: B|4829|handleMessageInvalidate',
'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',
'SurfaceFlinger-4831 [001] ...1 80909.598675: 0: B|4829|acquireBuffer',
'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',
'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',
'SurfaceFlinger-4831 [001] ...1 80909.599001: 0: E',
'SurfaceFlinger-4831 [001] ...1 80909.599021: 0: B|4829|latchBuffer',
'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 tracing.TimelineModel(lines.join('\n'), false);
assertEquals(0, m.importErrors.length);
var threads = m.getAllThreads();
assertEquals(1, threads.length);
var thread = threads[0];
assertEquals(4829, thread.pid);
assertEquals(4831, thread.tid);
assertEquals('SurfaceFlinger', thread.name);
assertEquals(11, thread.slices.length);
}
</script>
</body>
</html>