• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3<!--
4Copyright (c) 2013 The Chromium Authors. All rights reserved.
5Use of this source code is governed by a BSD-style license that can be
6found 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
16base.require('unittest');
17base.require('test_utils');
18base.require('importer.linux_perf_importer');
19
20function 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