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.v8_log_importer'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.importer.v8_log_importer', function() { 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var V8LogImporter = tracing.importer.V8LogImporter; 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('tickEventInSharedLibrary', function() { 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var lines = [ 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'shared-library,"/usr/lib/libc++.1.dylib",0x99d8aae0,0x99dce729', 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'tick,0x99d8aae4,0xbff02f08,12158,0,0x0,5']; 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var m = new tracing.TraceModel(lines.join('\n')); 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var p = m.processes[-32]; 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var threads = p.findAllThreadsNamed('V8 PC'); 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var t = threads[0]; 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, t.samples.length); 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('/usr/lib/libc++.1.dylib', t.samples[0].title); 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('tickEventInGeneratedCode', function() { 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var lines = [ 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'shared-library,"/usr/lib/libc++.1.dylib",0x99d8aae0,0x99dce729', 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'code-creation,Stub,2,0x5b60ce80,1259,"StringAddStub"', 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'tick,0x5b60ce84,0xbff02f08,12158,0,0x0,5']; 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var m = new tracing.TraceModel(lines.join('\n')); 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var p = m.processes[-32]; 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var threads = p.findAllThreadsNamed('V8 PC'); 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var t = threads[0]; 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, t.samples.length); 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('StringAddStub', t.samples[0].title); 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('tickEventInUknownCode', function() { 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var lines = [ 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'shared-library,"/usr/lib/libc++.1.dylib",0x99d8aae0,0x99dce729', 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'code-creation,Stub,2,0x5b60ce80,1259,"StringAddStub"', 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'tick,0x4,0xbff02f08,12158,0,0x0,5']; 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var m = new tracing.TraceModel(lines.join('\n')); 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var p = m.processes[-32]; 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var threads = p.findAllThreadsNamed('V8 PC'); 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var t = threads[0]; 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(1, t.samples.length); 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('UnknownCode', t.samples[0].title); 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('timerEventSliceCreation', function() { 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var lines = ['timer-event,"V8.External",38189483,3']; 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var m = new tracing.TraceModel(lines.join('\n')); 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var p = m.processes[-32]; 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var threads = p.findAllThreadsNamed('V8 Timers'); 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertNotUndefined(threads); 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(threads.length, 1); 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var t = threads[0]; 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(t.sliceGroup.length, 1); 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('processThreadCreation', function() { 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var lines = ['timer-event,"V8.External",38189483,3']; 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var m = new tracing.TraceModel(lines.join('\n')); 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertNotUndefined(m); 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var p = m.processes[-32]; 6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertNotUndefined(p); 6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var threads = p.findAllThreadsNamed('V8 Timers'); 6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertNotUndefined(threads); 7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(threads.length, 1); 7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var t = threads[0]; 7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(t.name, 'V8 Timers'); 7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('canImport', function() { 7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertTrue(V8LogImporter.canImport( 7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'timer-event,"V8.External",38189483,3')); 7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertFalse(V8LogImporter.canImport('')); 7966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertFalse(V8LogImporter.canImport([])); 8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 8166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 82