Home | History | Annotate | Download | only in linux_perf
      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