1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 base.require('tracing.test_utils');
8 base.require('tracing.importer.linux_perf_importer');
10 base.unittest.testSuite('tracing.importer.linux_perf.disk_parser', function() {
11 test('diskImport', function() {
13 // NB: spliced from different traces; mismatched timestamps don't matter
14 'AsyncTask #2-18830 [000] ...1 154578.668286: ext4_sync_file_enter: ' +
15 'dev 259,1 ino 81993 parent 81906 datasync 1',
16 'mmcqd/0-81 [000] d..2 154578.668390: block_rq_issue: ' +
17 '179,0 WS 0 () 3427120 + 16 [mmcqd/0]',
18 'mmcqd/0-81 [000] d..2 154578.669181: block_rq_complete: ' +
19 '179,0 WS () 3427120 + 16 [0]',
20 'mmcqd/0-81 [001] d..2 154578.670853: block_rq_issue: ' +
21 '179,0 FWS 0 () 18446744073709551615 + 0 [mmcqd/0]',
22 'mmcqd/0-81 [001] d..2 154578.670869: block_rq_complete: ' +
23 '179,0 FWS () 18446744073709551615 + 0 [0]',
24 'AsyncTask #2-18830 [001] ...1 154578.670901: ext4_sync_file_exit: ' +
25 'dev 259,1 ino 81993 ret 0',
26 'mmcqd/0-81 [001] d..2 154578.877038: block_rq_issue: ' +
27 '179,0 R 0 () 3255256 + 8 [mmcqd/0]',
28 'mmcqd/0-81 [001] d..2 154578.877110: block_rq_issue: ' +
29 '179,0 R 0 () 3255288 + 8 [mmcqd/0]',
30 'mmcqd/0-81 [000] d..2 154578.877345: block_rq_complete: ' +
31 '179,0 R () 3255256 + 8 [0]',
32 'mmcqd/0-81 [000] d..2 154578.877466: block_rq_complete: ' +
33 '179,0 R () 3255288 + 8 [0]'
35 var m = new tracing.TraceModel(lines.join('\n'), false);
36 assertFalse(m.hasImportWarnings);
38 var blockThread = undefined;
39 var ext4Thread = undefined;
40 m.getAllThreads().forEach(function(t) {
45 case 'ext4:AsyncTask #2':
49 throw new unittest.TestError('Unexpected thread named ' + t.name);
52 assertNotUndefined(blockThread);
53 assertNotUndefined(ext4Thread);
55 assertEquals(4, blockThread.asyncSliceGroup.length);
57 var slice = blockThread.asyncSliceGroup.slices[0];
58 assertEquals('block', slice.category);
59 assertEquals('write sync', slice.title);
60 assertEquals('179,0', slice.args.device);
61 assertEquals(0, slice.args.error);
62 assertEquals(16, slice.args.numSectors);
63 assertEquals(3427120, slice.args.sector);
65 assertEquals(1, ext4Thread.asyncSliceGroup.length);
67 slice = ext4Thread.asyncSliceGroup.slices[0];
68 assertEquals('ext4', slice.category);
69 assertEquals('fdatasync', slice.title);
70 assertEquals('259,1', slice.args.device);
71 assertEquals(0, slice.args.error);
72 assertEquals(81993, slice.args.inode);