166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.test_utils'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.importer.linux_perf_importer'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.importer.linux_perf.kfunc_parser', function() { 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('kernelFunctionParser', function() { 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var lines = [ 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906759: graph_ent: func=sys_write', 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906769: graph_ret: func=sys_write', 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906785: graph_ent: func=sys_write', 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] ...1 3431.906798: tracing_mark_write: B|' + 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis '127|dequeueBuffer', 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906802: graph_ret: func=sys_write', 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906842: graph_ent: func=sys_write', 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] ...1 3431.906849: tracing_mark_write: E', 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906853: graph_ret: func=sys_write', 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906896: graph_ent: func=sys_write', 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'Binder_2-127 ( 127) [001] .... 3431.906906: graph_ret: func=sys_write' 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ]; 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var m = new tracing.TraceModel(lines.join('\n'), false); 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(0, m.importErrors.length); 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var process = m.processes[127]; 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertNotNull(process); 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var thread = process.threads[127]; 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertNotNull(thread); 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var slices = thread.sliceGroup.slices; 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(7, thread.sliceGroup.length); 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis // Slice 0 is an un-split sys_write 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('sys_write', slices[0].title); 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis // Slices 1 & 2 are a split sys_write 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('sys_write', slices[1].title); 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('sys_write (cont.)', slices[2].title); 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis // Slices 3 & 5 are a split sys_write with the dequeueBuffer in between 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('sys_write', slices[3].title); 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('dequeueBuffer', slices[4].title); 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('sys_write (cont.)', slices[5].title); 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis // Slice 6 is another un-split sys_write 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('sys_write', slices[6].title); 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 53