3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/analysis/cpu_slice_view.html">
9 <link rel="import" href="/tracing/trace_model.html">
10 <link rel="import" href="/tracing/importer/linux_perf_importer.html">
15 tv.unittest.testSuite(function() {
16 function createBasicModel() {
18 'Android.launcher-584 [001] d..3 12622.506890: sched_switch: prev_comm=Android.launcher prev_pid=584 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=217 next_prio=120', // @suppress longLineCheck
19 ' Binder_1-217 [001] d..3 12622.506918: sched_switch: prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=D ==> next_comm=Android.launcher next_pid=584 next_prio=120', // @suppress longLineCheck
20 'Android.launcher-584 [001] d..4 12622.506936: sched_wakeup: comm=Binder_1 pid=217 prio=120 success=1 target_cpu=001', // @suppress longLineCheck
21 'Android.launcher-584 [001] d..3 12622.506950: sched_switch: prev_comm=Android.launcher prev_pid=584 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=217 next_prio=120', // @suppress longLineCheck
22 ' Binder_1-217 [001] ...1 12622.507057: tracing_mark_write: B|128|queueBuffer', // @suppress longLineCheck
23 ' Binder_1-217 [001] ...1 12622.507175: tracing_mark_write: E',
24 ' Binder_1-217 [001] d..3 12622.507253: sched_switch: prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=S ==> next_comm=Android.launcher next_pid=584 next_prio=120' // @suppress longLineCheck
27 return new tracing.TraceModel(lines.join('\n'), false);
30 test('cpuSliceView_withCpuSliceOnExistingThread', function() {
31 var m = createBasicModel();
33 var cpu = m.kernel.cpus[1];
34 assertNotUndefined(cpu);
35 var cpuSlice = cpu.slices[0];
36 assertEquals('Binder_1', cpuSlice.title);
38 var thread = m.findAllThreadsNamed('Binder_1')[0];
39 assertNotUndefined(thread);
40 assertEquals(cpuSlice.threadThatWasRunning, thread);
42 var view = new tracing.analysis.CpuSliceView();
43 view.modelEvent = cpuSlice;
44 this.addHTMLOutput(view);
46 // Clicking the analysis link should focus the Binder1's timeslice.
47 var didSelectionChangeHappen = false;
48 view.addEventListener('requestSelectionChange', function(e) {
49 assertEquals(1, e.selection.length);
50 assertEquals(thread.timeSlices[0], e.selection[0]);
51 didSelectionChangeHappen = true;
53 view.querySelector('.analysis-link').click();
54 assertTrue(didSelectionChangeHappen);
57 test('cpuSliceViewWithCpuSliceOnMissingThread', function() {
58 var m = createBasicModel();
60 var cpu = m.kernel.cpus[1];
61 assertNotUndefined(cpu);
62 var cpuSlice = cpu.slices[1];
63 assertEquals('Android.launcher', cpuSlice.title);
64 assertUndefined(cpuSlice.thread);
66 var view = new tracing.analysis.CpuSliceView();
67 view.modelEvent = cpuSlice;
68 this.addHTMLOutput(view);