| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/core/test_utils.html"> |
| <link rel="import" href="/extras/importer/linux_perf/ftrace_importer.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { // @suppress longLineCheck |
| test('diskImport', function() { |
| var lines = [ |
| // NB: spliced from different traces; mismatched timestamps don't matter |
| 'AsyncTask #2-18830 [000] ...1 154578.668286: ext4_sync_file_enter: ' + |
| 'dev 259,1 ino 81993 parent 81906 datasync 1', |
| 'Binder_A-3179 [001] ...1 1354.510088: f2fs_sync_file_enter: ' + |
| 'dev = (259,14), ino = 4882, pino = 313, i_mode = 0x81b0, i_size = ' + |
| '25136, i_nlink = 1, i_blocks = 8, i_advise = 0x0', |
| 'Binder_A-3179 [001] ...1 1354.514013: f2fs_sync_file_exit: ' + |
| 'dev = (259,14), ino = 4882, checkpoint is not needed, datasync = 1, ret = 0', // @suppress longLineCheck |
| 'mmcqd/0-81 [000] d..2 154578.668390: block_rq_issue: ' + |
| '179,0 WS 0 () 3427120 + 16 [mmcqd/0]', |
| 'mmcqd/0-81 [000] d..2 154578.669181: block_rq_complete: ' + |
| '179,0 WS () 3427120 + 16 [0]', |
| 'mmcqd/0-81 [001] d..2 154578.670853: block_rq_issue: ' + |
| '179,0 FWS 0 () 18446744073709551615 + 0 [mmcqd/0]', |
| 'mmcqd/0-81 [001] d..2 154578.670869: block_rq_complete: ' + |
| '179,0 FWS () 18446744073709551615 + 0 [0]', |
| 'AsyncTask #2-18830 [001] ...1 154578.670901: ext4_sync_file_exit: ' + |
| 'dev 259,1 ino 81993 ret 0', |
| 'mmcqd/0-81 [001] d..2 154578.877038: block_rq_issue: ' + |
| '179,0 R 0 () 3255256 + 8 [mmcqd/0]', |
| 'mmcqd/0-81 [001] d..2 154578.877110: block_rq_issue: ' + |
| '179,0 R 0 () 3255288 + 8 [mmcqd/0]', |
| 'mmcqd/0-81 [000] d..2 154578.877345: block_rq_complete: ' + |
| '179,0 R () 3255256 + 8 [0]', |
| 'mmcqd/0-81 [000] d..2 154578.877466: block_rq_complete: ' + |
| '179,0 R () 3255288 + 8 [0]', |
| 'ContactsProvide-1184 [000] ...1 66.613719: f2fs_write_begin: ' + |
| 'dev = (253,2), ino = 3342, pos = 0, len = 75, flags = 0', |
| 'ContactsProvide-1184 [000] ...1 66.613733: f2fs_write_end: ' + |
| 'dev = (253,2), ino = 3342, pos = 0, len = 75, copied = 75' |
| ]; |
| var m = new tr.Model(lines.join('\n'), false); |
| assert.isFalse(m.hasImportWarnings); |
| |
| var blockThread = undefined; |
| var ext4Thread = undefined; |
| var f2fsSyncThread = undefined; |
| var f2fsWriteThread = undefined; |
| |
| m.getAllThreads().forEach(function(t) { |
| switch (t.name) { |
| case 'block:mmcqd/0': |
| blockThread = t; |
| break; |
| case 'ext4:AsyncTask #2': |
| ext4Thread = t; |
| break; |
| case 'f2fs:Binder_A': |
| f2fsSyncThread = t; |
| break; |
| case 'f2fs:ContactsProvide': |
| f2fsWriteThread = t; |
| break; |
| default: |
| throw new unittest.TestError('Unexpected thread named ' + t.name); |
| } |
| }); |
| assert.isDefined(blockThread); |
| assert.isDefined(ext4Thread); |
| assert.isDefined(f2fsSyncThread); |
| assert.isDefined(f2fsWriteThread); |
| |
| assert.equal(blockThread.asyncSliceGroup.length, 4); |
| |
| var slice = blockThread.asyncSliceGroup.slices[0]; |
| assert.equal(slice.category, 'block'); |
| assert.equal(slice.title, 'write sync'); |
| assert.equal(slice.args.device, '179,0'); |
| assert.equal(slice.args.error, 0); |
| assert.equal(slice.args.numSectors, 16); |
| assert.equal(slice.args.sector, 3427120); |
| |
| assert.equal(ext4Thread.asyncSliceGroup.length, 1); |
| |
| slice = ext4Thread.asyncSliceGroup.slices[0]; |
| assert.equal(slice.category, 'ext4'); |
| assert.equal(slice.title, 'fdatasync'); |
| assert.equal(slice.args.device, '259,1'); |
| assert.equal(slice.args.error, 0); |
| assert.equal(slice.args.inode, 81993); |
| |
| assert.equal(f2fsSyncThread.asyncSliceGroup.length, 1); |
| |
| slice = f2fsSyncThread.asyncSliceGroup.slices[0]; |
| assert.equal(slice.category, 'f2fs'); |
| assert.equal(slice.title, 'fsync'); |
| assert.equal(slice.args.device, '259,14'); |
| assert.equal(slice.args.error, 0); |
| assert.equal(slice.args.inode, 4882); |
| |
| assert.equal(f2fsWriteThread.asyncSliceGroup.length, 1); |
| |
| slice = f2fsWriteThread.asyncSliceGroup.slices[0]; |
| assert.equal(slice.category, 'f2fs'); |
| assert.equal(slice.title, 'f2fs_write'); |
| assert.equal(slice.args.device, '253,2'); |
| assert.equal(slice.args.inode, 3342); |
| assert.equal(slice.args.error, false); |
| }); |
| }); |
| </script> |