1 <!DOCTYPE html> 2 <html> 3 <!-- 4 Copyright (c) 2013 The Chromium Authors. All rights reserved. 5 Use of this source code is governed by a BSD-style license that can be 6 found in the LICENSE file. 7 --> 8 <head> 9 <title>importer.linux_perf.DiskParser tests</title> 10 <script src="../../base.js"></script> 11 </head> 12 <body> 13 <script> 14 'use strict'; 15 16 base.require('unittest'); 17 base.require('test_utils'); 18 base.require('importer.linux_perf_importer'); 19 20 function testDiskImport() { 21 var lines = [ 22 // NB: spliced from different traces; mismatched timestamps don't matter 23 'AsyncTask #2-18830 [000] ...1 154578.668286: ext4_sync_file_enter: ' + 24 'dev 259,1 ino 81993 parent 81906 datasync 1', 25 'mmcqd/0-81 [000] d..2 154578.668390: block_rq_issue: ' + 26 '179,0 WS 0 () 3427120 + 16 [mmcqd/0]', 27 'mmcqd/0-81 [000] d..2 154578.669181: block_rq_complete: ' + 28 '179,0 WS () 3427120 + 16 [0]', 29 'mmcqd/0-81 [001] d..2 154578.670853: block_rq_issue: ' + 30 '179,0 FWS 0 () 18446744073709551615 + 0 [mmcqd/0]', 31 'mmcqd/0-81 [001] d..2 154578.670869: block_rq_complete: ' + 32 '179,0 FWS () 18446744073709551615 + 0 [0]', 33 'AsyncTask #2-18830 [001] ...1 154578.670901: ext4_sync_file_exit: ' + 34 'dev 259,1 ino 81993 ret 0', 35 'mmcqd/0-81 [001] d..2 154578.877038: block_rq_issue: ' + 36 '179,0 R 0 () 3255256 + 8 [mmcqd/0]', 37 'mmcqd/0-81 [001] d..2 154578.877110: block_rq_issue: ' + 38 '179,0 R 0 () 3255288 + 8 [mmcqd/0]', 39 'mmcqd/0-81 [000] d..2 154578.877345: block_rq_complete: ' + 40 '179,0 R () 3255256 + 8 [0]', 41 'mmcqd/0-81 [000] d..2 154578.877466: block_rq_complete: ' + 42 '179,0 R () 3255288 + 8 [0]' 43 ]; 44 var m = new tracing.Model(lines.join('\n'), false); 45 assertEquals(0, m.importErrors.length); 46 47 var blockThread = undefined; 48 var ext4Thread = undefined; 49 m.getAllThreads().forEach(function(t) { 50 switch (t.name) { 51 case 'block:mmcqd/0': 52 blockThread = t; 53 break; 54 case 'ext4:AsyncTask #2': 55 ext4Thread = t; 56 break; 57 default: 58 throw new unittest.TestError('Unexpected thread named ' + t.name); 59 } 60 }); 61 assertNotUndefined(blockThread); 62 assertNotUndefined(ext4Thread); 63 64 assertEquals(4, blockThread.asyncSlices.length); 65 66 var slice = blockThread.asyncSlices.slices[0]; 67 assertEquals('block', slice.category); 68 assertEquals('write sync', slice.title); 69 assertEquals('179,0', slice.args.device); 70 assertEquals(0, slice.args.error); 71 assertEquals(16, slice.args.numSectors); 72 assertEquals(3427120, slice.args.sector); 73 74 assertEquals(1, ext4Thread.asyncSlices.length); 75 76 slice = ext4Thread.asyncSlices.slices[0]; 77 assertEquals('ext4', slice.category); 78 assertEquals('fdatasync', slice.title); 79 assertEquals('259,1', slice.args.device); 80 assertEquals(0, slice.args.error); 81 assertEquals(81993, slice.args.inode); 82 } 83 84 </script> 85 </body> 86 </html> 87