mali_parser_test.js revision 6833e18b1d4077bf3a727b4422cc2acdbeee35a7
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.
4
5'use strict';
6
7base.require('tracing.test_utils');
8base.require('tracing.importer.linux_perf_importer');
9
10base.unittest.testSuite('tracing.importer.linux_perf.mali_parser', function() {
11  test('maliDDKImport', function() {
12    var linesNoThread = [
13      // Row 1 open
14      '           chrome-1780  [001] ...1   28.562633: tracing_mark_write: ' +
15          'mali_driver: cros_trace_print_enter: ' +
16          'gles/src/dispatch/mali_gles_dispatch_entrypoints.c992: ' +
17          'glTexSubImage2D',
18      // Row 2 open
19      '           chrome-1780  [001] ...1   28.562655: tracing_mark_write: ' +
20          'mali_driver: cros_trace_print_enter: ' +
21          'gles/src/texture/mali_gles_texture_api.c996: ' +
22          'gles_texture_tex_sub_image_2d',
23      // Row 3 open
24      '            chrome-1780  [001] ...1   28.562671: tracing_mark_write: ' +
25          'mali_driver: cros_trace_print_enter: ' +
26          'gles/src/texture/mali_gles_texture_slave.c295: ' +
27          'gles_texturep_slave_map_master',
28      // Row 3 close
29      '           chrome-1780  [001] ...1   28.562684: tracing_mark_write: ' +
30          'mali_driver: cros_trace_print_exit: ' +
31          'gles/src/texture/mali_gles_texture_slave.c295: ',
32      // Row 3 open
33      '           chrome-1780  [001] ...1   28.562700: tracing_mark_write: ' +
34          'mali_driver: cros_trace_print_enter: ' +
35          'gles/src/texture/mali_gles_texture_slave.c1505: ' +
36          'gles2_texturep_upload_2d',
37      // Row 4 open
38      '           chrome-1780  [001] ...1   28.562726: tracing_mark_write: ' +
39          'mali_driver: cros_trace_print_enter: ' +
40          'gles/src/texture/mali_gles_texture_slave.c1612: ' +
41          'gles2_texturep_upload_2d: pixel array: wait for dependencies',
42      // Row 5 open
43      '           chrome-1780  [001] ...1   28.562742: tracing_mark_write: ' +
44          'mali_driver: cros_trace_print_enter: ' +
45          'cobj/src/mali_cobj_surface_operations.c1693: ' +
46          'cobj_convert_pixels_to_surface',
47      // Row 6 open
48      '           chrome-1780  [001] ...1   28.562776: tracing_mark_write: ' +
49          'mali_driver: cros_trace_print_enter: ' +
50          'cobj/src/mali_cobj_surface_operations.c1461: ' +
51          'cobj_convert_pixels',
52      // Row 7 open
53      '           chrome-1780  [001] ...1   28.562791: tracing_mark_write: ' +
54          'mali_driver: cros_trace_print_enter: ' +
55          'cobj/src/mali_cobj_surface_operations.c1505: ' +
56          'cobj_convert_pixels: fast-path linear copy',
57      // Row 8 open
58      '           chrome-1780  [001] ...1   28.562808: tracing_mark_write: ' +
59          'mali_driver: cros_trace_print_enter: ' +
60          'cobj/src/mali_cobj_surface_operations.c1511: ' +
61          'cobj_convert_pixels: reorder-only',
62      // Row 8 close
63      '           chrome-1780  [001] ...1   28.563383: tracing_mark_write: ' +
64          'mali_driver: cros_trace_print_exit: ' +
65          'cobj/src/mali_cobj_surface_operations.c1511',
66      // Row 7 close
67      '           chrome-1780  [001] ...1   28.563397: tracing_mark_write: ' +
68          'mali_driver: cros_trace_print_exit: ' +
69          'cobj/src/mali_cobj_surface_operations.c1505',
70      // Row 6 close
71      '           chrome-1780  [001] ...1   28.563409: tracing_mark_write: ' +
72          'mali_driver: cros_trace_print_exit: ' +
73          'cobj/src/mali_cobj_surface_operations.c1461',
74      // Row 5 close
75      '           chrome-1780  [001] ...1   28.563438: tracing_mark_write: ' +
76          'mali_driver: cros_trace_print_exit: ' +
77          'cobj/src/mali_cobj_surface_operations.c1693',
78      // Row 4 close
79      '           chrome-1780  [001] ...1   28.563451: tracing_mark_write: ' +
80          'mali_driver: cros_trace_print_exit: ' +
81          'gles/src/texture/mali_gles_texture_slave.c1612',
82      // Row 3 close
83      '           chrome-1780  [001] ...1   28.563462: tracing_mark_write: ' +
84          'mali_driver: cros_trace_print_exit: ' +
85          'gles/src/texture/mali_gles_texture_slave.c1505',
86      // Row 2 close
87      '           chrome-1780  [001] ...1   28.563475: tracing_mark_write: ' +
88          'mali_driver: cros_trace_print_exit: ' +
89          'gles/src/texture/mali_gles_texture_api.c996',
90      // Row 1 close
91      '           chrome-1780  [001] ...1   28.563486: tracing_mark_write: ' +
92          'mali_driver: cros_trace_print_exit: ' +
93          'gles/src/dispatch/mali_gles_dispatch_entrypoints.c992'
94    ];
95
96    var linesWithThread = [
97      // Row 1 open
98      '           chrome-1780  [001] ...1   28.562633: tracing_mark_write: ' +
99          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
100          'gles/src/dispatch/mali_gles_dispatch_entrypoints.c@992: ' +
101          'glTexSubImage2D',
102      // Row 2 open
103      '           chrome-1780  [001] ...1   28.562655: tracing_mark_write: ' +
104          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
105          'gles/src/texture/mali_gles_texture_api.c@996: ' +
106          'gles_texture_tex_sub_image_2d',
107      // Row 3 open
108      '            chrome-1780  [001] ...1   28.562671: tracing_mark_write: ' +
109          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
110          'gles/src/texture/mali_gles_texture_slave.c@295: ' +
111          'gles_texturep_slave_map_master',
112      // Row 3 close
113      '           chrome-1780  [001] ...1   28.562684: tracing_mark_write: ' +
114          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
115          'gles/src/texture/mali_gles_texture_slave.c@295: ',
116      // Row 3 open
117      '           chrome-1780  [001] ...1   28.562700: tracing_mark_write: ' +
118          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
119          'gles/src/texture/mali_gles_texture_slave.c@1505: ' +
120          'gles2_texturep_upload_2d',
121      // Row 4 open
122      '           chrome-1780  [001] ...1   28.562726: tracing_mark_write: ' +
123          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
124          'gles/src/texture/mali_gles_texture_slave.c@1612: ' +
125          'gles2_texturep_upload_2d: pixel array: wait for dependencies',
126      // Row 5 open
127      '           chrome-1780  [001] ...1   28.562742: tracing_mark_write: ' +
128          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
129          'cobj/src/mali_cobj_surface_operations.c@1693: ' +
130          'cobj_convert_pixels_to_surface',
131      // Row 6 open
132      '           chrome-1780  [001] ...1   28.562776: tracing_mark_write: ' +
133          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
134          'cobj/src/mali_cobj_surface_operations.c@1461: ' +
135          'cobj_convert_pixels',
136      // Row 7 open
137      '           chrome-1780  [001] ...1   28.562791: tracing_mark_write: ' +
138          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
139          'cobj/src/mali_cobj_surface_operations.c@1505: ' +
140          'cobj_convert_pixels: fast-path linear copy',
141      // Row 8 open
142      '           chrome-1780  [001] ...1   28.562808: tracing_mark_write: ' +
143          'mali_driver: (mali-1878934320) cros_trace_print_enter: ' +
144          'cobj/src/mali_cobj_surface_operations.c@1511: ' +
145          'cobj_convert_pixels: reorder-only',
146      // Row 8 close
147      '           chrome-1780  [001] ...1   28.563383: tracing_mark_write: ' +
148          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
149          'cobj/src/mali_cobj_surface_operations.c@1511',
150      // Row 7 close
151      '           chrome-1780  [001] ...1   28.563397: tracing_mark_write: ' +
152          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
153          'cobj/src/mali_cobj_surface_operations.c@1505',
154      // Row 6 close
155      '           chrome-1780  [001] ...1   28.563409: tracing_mark_write: ' +
156          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
157          'cobj/src/mali_cobj_surface_operations.c@1461',
158      // Row 5 close
159      '           chrome-1780  [001] ...1   28.563438: tracing_mark_write: ' +
160          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
161          'cobj/src/mali_cobj_surface_operations.c@1693',
162      // Row 4 close
163      '           chrome-1780  [001] ...1   28.563451: tracing_mark_write: ' +
164          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
165          'gles/src/texture/mali_gles_texture_slave.c@1612',
166      // Row 3 close
167      '           chrome-1780  [001] ...1   28.563462: tracing_mark_write: ' +
168          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
169          'gles/src/texture/mali_gles_texture_slave.c@1505',
170      // Row 2 close
171      '           chrome-1780  [001] ...1   28.563475: tracing_mark_write: ' +
172          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
173          'gles/src/texture/mali_gles_texture_api.c@996',
174      // Row 1 close
175      '           chrome-1780  [001] ...1   28.563486: tracing_mark_write: ' +
176          'mali_driver: (mali-1878934320) cros_trace_print_exit: ' +
177          'gles/src/dispatch/mali_gles_dispatch_entrypoints.c@992'
178    ];
179    var traceNoThread =
180        new tracing.TraceModel(linesNoThread.join('\n'), false);
181    var traceWithThread =
182        new tracing.TraceModel(linesWithThread.join('\n'), false);
183    assertEquals(0, traceNoThread.importErrors.length);
184    assertEquals(0, traceWithThread.importErrors.length);
185
186    var threadsNoThread = traceNoThread.getAllThreads();
187    var threadsWithThread = traceWithThread.getAllThreads();
188    assertEquals(1, threadsNoThread.length);
189    assertEquals(1, threadsWithThread.length);
190
191    var maliThreadNoThread = threadsNoThread[0];
192    var maliThreadWithThread = threadsWithThread[0];
193    assertEquals('mali', maliThreadNoThread.tid);
194    assertEquals('mali-1878934320', maliThreadWithThread.tid);
195    assertEquals(9, maliThreadNoThread.sliceGroup.length);
196    assertEquals(9, maliThreadWithThread.sliceGroup.length);
197  });
198
199  test('DVFSFrequencyImport', function() {
200    var lines = [
201      '     kworker/u:0-5     [001] ....  1174.839552: mali_dvfs_set_clock: ' +
202                     'frequency=266',
203      '     kworker/u:0-5     [000] ....  1183.840486: mali_dvfs_set_clock: ' +
204                     'frequency=400'
205    ];
206    var m = new tracing.TraceModel(lines.join('\n'), false);
207    assertEquals(0, m.importErrors.length);
208
209    var counters = m.getAllCounters();
210    assertEquals(1, counters.length);
211
212    var c0 = counters[0];
213    assertEquals(c0.name, 'DVFS Frequency');
214    assertEquals(2, c0.series[0].samples.length);
215  });
216
217  test('DVFSVoltageImport', function() {
218    var lines = [
219      '    kworker/u:0-5     [001] ....  1174.839562: mali_dvfs_set_voltage: ' +
220                     'voltage=937500',
221      '    kworker/u:0-5     [000] ....  1183.840009: mali_dvfs_set_voltage: ' +
222                     'voltage=1100000'
223    ];
224    var m = new tracing.TraceModel(lines.join('\n'), false);
225    assertEquals(0, m.importErrors.length);
226
227    var counters = m.getAllCounters();
228    assertEquals(1, counters.length);
229
230    var c0 = counters[0];
231    assertEquals(c0.name, 'DVFS Voltage');
232    assertEquals(2, c0.series[0].samples.length);
233  });
234
235  test('DVFSUtilizationImport', function() {
236    var lines = [
237      '     kworker/u:0-5     [001] ....  1174.839552: mali_dvfs_event: ' +
238                     'utilization=7',
239      '     kworker/u:0-5     [000] ....  1183.840486: mali_dvfs_event: ' +
240                     'utilization=37'
241    ];
242    var m = new tracing.TraceModel(lines.join('\n'), false);
243    assertEquals(0, m.importErrors.length);
244
245    var counters = m.getAllCounters();
246    assertEquals(1, counters.length);
247
248    var c0 = counters[0];
249    assertEquals(c0.name, 'DVFS Utilization');
250    assertEquals(2, c0.series[0].samples.length);
251  });
252
253  test('maliHWCImport', function() {
254    var lines = [
255      '     kworker/u:0-5     [000] ....    78.896588: ' +
256                     'mali_hwc_ACTIVE: val=238',
257      '     kworker/u:0-5     [000] ....    79.046889: ' +
258                     'mali_hwc_ARITH_CYCLES_L0: val=1967',
259      '     kworker/u:0-5     [000] ....    79.046888: ' +
260                     'mali_hwc_ARITH_CYCLES_REG: val=136',
261      '     kworker/u:0-5     [000] ....    79.046890: ' +
262                     'mali_hwc_ARITH_FRAG_DEPEND: val=19676',
263      '     kworker/u:0-5     [000] ....    79.046886: ' +
264                     'mali_hwc_ARITH_WORDS: val=255543',
265      '     kworker/u:0-5     [000] ....    79.046920: ' +
266                     'mali_hwc_AXI_BEATS_READ: val=257053',
267      '     kworker/u:0-5     [000] ....    78.896594: ' +
268                     'mali_hwc_AXI_TLB_STALL: val=1',
269      '     kworker/u:0-5     [000] ....    78.946646: ' +
270                     'mali_hwc_AXI_TLB_TRANSACTION: val=4',
271      '     kworker/u:0-5     [000] ....    79.046853: ' +
272                     'mali_hwc_BACK_FACING: val=104',
273      '     kworker/u:0-5     [000] ....    79.046880: ' +
274                     'mali_hwc_COMPUTE_ACTIVE: val=17462',
275      '     kworker/u:0-5     [000] ....    79.046884: ' +
276                     'mali_hwc_COMPUTE_CYCLES_DESC: val=3933',
277      '     kworker/u:0-5     [000] ....    79.046881: ' +
278                     'mali_hwc_COMPUTE_TASKS: val=15',
279      '     kworker/u:0-5     [000] ....    79.046883: ' +
280                     'mali_hwc_COMPUTE_THREADS: val=60',
281      '     kworker/u:0-5     [000] ....    79.046860: ' +
282                     'mali_hwc_FRAG_ACTIVE: val=690986',
283      '     kworker/u:0-5     [000] ....    79.046864: ' +
284                     'mali_hwc_FRAG_CYCLE_DESC: val=13980',
285      '     kworker/u:0-5     [000] ....    79.046876: ' +
286                     'mali_hwc_FRAG_CYCLE_NO_TILE: val=3539',
287      '     kworker/u:0-5     [000] ....    79.046865: ' +
288                     'mali_hwc_FRAG_CYCLES_PLR: val=1499',
289      '     kworker/u:0-5     [000] ....    79.046869: ' +
290                     'mali_hwc_FRAG_CYCLES_RAST: val=1999',
291      '     kworker/u:0-5     [000] ....    79.046868: ' +
292                     'mali_hwc_FRAG_CYCLES_TRISETUP: val=22353',
293      '     kworker/u:0-5     [000] ....    79.046867: ' +
294                     'mali_hwc_FRAG_CYCLES_VERT: val=20763',
295      '     kworker/u:0-5     [000] ....    79.046872: ' +
296                     'mali_hwc_FRAG_DUMMY_THREADS: val=1968',
297      '     kworker/u:0-5     [000] ....    79.046877: ' +
298                     'mali_hwc_FRAG_NUM_TILES: val=1840',
299      '     kworker/u:0-5     [000] ....    79.046862: ' +
300                     'mali_hwc_FRAG_PRIMATIVES: val=3752',
301      '     kworker/u:0-5     [000] ....    79.046863: ' +
302                     'mali_hwc_FRAG_PRIMATIVES_DROPPED: val=18',
303      '     kworker/u:0-5     [000] ....    79.046874: ' +
304                     'mali_hwc_FRAG_QUADS_EZS_TEST: val=117925',
305      '     kworker/u:0-5     [000] ....    79.046873: ' +
306                     'mali_hwc_FRAG_QUADS_RAST: val=117889',
307      '     kworker/u:0-5     [000] ....    79.046870: ' +
308                     'mali_hwc_FRAG_THREADS: val=471507',
309      '     kworker/u:0-5     [000] ....    79.046879: ' +
310                     'mali_hwc_FRAG_TRANS_ELIM: val=687',
311      '     kworker/u:0-5     [000] ....    80.315162: ' +
312                     'mali_hwc_FRONT_FACING: val=56',
313      '     kworker/u:0-5     [000] ....    78.896582: ' +
314                     'mali_hwc_GPU_ACTIVE: val=1316',
315      '     kworker/u:0-5     [000] ....    78.896584: ' +
316                     'mali_hwc_IRQ_ACTIVE: val=17',
317      '     kworker/u:0-5     [000] ....    79.046834: ' +
318                     'mali_hwc_JS0_ACTIVE: val=709444',
319      '     kworker/u:0-5     [000] ....    79.046831: ' +
320                     'mali_hwc_JS0_JOBS: val=2',
321      '     kworker/u:0-5     [000] ....    79.046832: ' +
322                     'mali_hwc_JS0_TASKS: val=7263',
323      '     kworker/u:0-5     [000] ....    79.046836: ' +
324                     'mali_hwc_JS0_WAIT_DEPEND: val=665876',
325      '     kworker/u:0-5     [000] ....    79.046835: ' +
326                     'mali_hwc_JS0_WAIT_ISSUE: val=910',
327      '     kworker/u:0-5     [000] ....    79.046840: ' +
328                     'mali_hwc_JS1_ACTIVE: val=153980',
329      '     kworker/u:0-5     [000] ....    79.046838: ' +
330                     'mali_hwc_JS1_JOBS: val=133',
331      '     kworker/u:0-5     [000] ....    79.046839: ' +
332                     'mali_hwc_JS1_TASKS: val=128',
333      '     kworker/u:0-5     [000] ....    79.046843: ' +
334                     'mali_hwc_JS1_WAIT_FINISH: val=74404',
335      '     kworker/u:0-5     [000] ....    79.046842: ' +
336                     'mali_hwc_JS1_WAIT_ISSUE: val=10146',
337      '     kworker/u:0-5     [000] ....    78.896603: ' +
338                     'mali_hwc_L2_ANY_LOOKUP: val=22',
339      '     kworker/u:0-5     [000] ....    79.046942: ' +
340                     'mali_hwc_L2_CLEAN_MISS: val=116',
341      '     kworker/u:0-5     [000] ....    79.063515: ' +
342                     'mali_hwc_L2_EXT_AR_STALL: val=9',
343      '     kworker/u:0-5     [000] ....    78.963384: ' +
344                     'mali_hwc_L2_EXT_BARRIER: val=1',
345      '     kworker/u:0-5     [000] ....    79.063516: ' +
346                     'mali_hwc_L2_EXT_R_BUF_FULL: val=43',
347      '     kworker/u:0-5     [000] ....    78.896611: ' +
348                     'mali_hwc_L2_EXT_READ: val=4',
349      '     kworker/u:0-5     [000] ....    78.896612: ' +
350                     'mali_hwc_L2_EXT_READ_LINE: val=4',
351      '     kworker/u:0-5     [000] ....    79.046956: ' +
352                     'mali_hwc_L2_EXT_R_RAW: val=1',
353      '     kworker/u:0-5     [000] ....    79.063518: ' +
354                     'mali_hwc_L2_EXT_R_W_HAZARD: val=15',
355      '     kworker/u:0-5     [000] ....    78.963381: ' +
356                     'mali_hwc_L2_EXT_WRITE: val=25',
357      '     kworker/u:0-5     [000] ....    79.046952: ' +
358                     'mali_hwc_L2_EXT_WRITE_LINE: val=63278',
359      '     kworker/u:0-5     [000] ....    78.963382: ' +
360                     'mali_hwc_L2_EXT_WRITE_SMALL: val=1',
361      '     kworker/u:0-5     [000] ....    79.814532: ' +
362                     'mali_hwc_L2_EXT_W_STALL: val=9',
363      '     kworker/u:0-5     [000] ....    78.896602: ' +
364                     'mali_hwc_L2_READ_BEATS: val=16',
365      '     kworker/u:0-5     [000] ....    78.896607: ' +
366                     'mali_hwc_L2_READ_HIT: val=11',
367      '     kworker/u:0-5     [000] ....    78.896604: ' +
368                     'mali_hwc_L2_READ_LOOKUP: val=19',
369      '     kworker/u:0-5     [000] ....    78.896606: ' +
370                     'mali_hwc_L2_READ_REPLAY: val=2',
371      '     kworker/u:0-5     [000] ....    79.046940: ' +
372                     'mali_hwc_L2_READ_SNOOP: val=24',
373      '     kworker/u:0-5     [000] ....    79.046959: ' +
374                     'mali_hwc_L2_REPLAY_FULL: val=6629',
375      '     kworker/u:0-5     [000] .N..    80.565684: ' +
376                     'mali_hwc_L2_SNOOP_FULL: val=5',
377      '     kworker/u:0-5     [000] ....    79.046937: ' +
378                     'mali_hwc_L2_SREAD_LOOKUP: val=241',
379      '     kworker/u:0-5     [000] ....    79.046944: ' +
380                     'mali_hwc_L2_SWRITE_LOOKUP: val=133',
381      '     kworker/u:0-5     [000] ....    78.896614: ' +
382                     'mali_hwc_L2_TAG_HAZARD: val=4',
383      '     kworker/u:0-5     [000] ....    78.963368: ' +
384                     'mali_hwc_L2_WRITE_BEATS: val=96',
385      '     kworker/u:0-5     [000] ....    79.046947: ' +
386                     'mali_hwc_L2_WRITE_HIT: val=78265',
387      '     kworker/u:0-5     [000] ....    78.896608: ' +
388                     'mali_hwc_L2_WRITE_LOOKUP: val=3',
389      '     kworker/u:0-5     [000] ....    79.046946: ' +
390                     'mali_hwc_L2_WRITE_REPLAY: val=15879',
391      '     kworker/u:0-5     [000] ....    79.046912: ' +
392                     'mali_hwc_LSC_LINE_FETCHES: val=15',
393      '     kworker/u:0-5     [000] ....    79.046909: ' +
394                     'mali_hwc_LSC_READ_HITS: val=2961',
395      '     kworker/u:0-5     [000] ....    79.046911: ' +
396                     'mali_hwc_LSC_READ_MISSES: val=22',
397      '     kworker/u:0-5     [000] ....    79.046914: ' +
398                     'mali_hwc_LSC_SNOOPS: val=10',
399      '     kworker/u:0-5     [000] ....    79.046893: ' +
400                     'mali_hwc_LS_ISSUES: val=524219',
401      '     kworker/u:0-5     [000] ....    79.046894: ' +
402                     'mali_hwc_LS_REISSUES_MISS: val=439',
403      '     kworker/u:0-5     [000] ....    79.046895: ' +
404                     'mali_hwc_LS_REISSUES_VD: val=52007',
405      '     kworker/u:0-5     [000] ....    79.046919: ' +
406                     'mali_hwc_LS_TLB_HIT: val=3043',
407      '     kworker/u:0-5     [000] ....    79.046918: ' +
408                     'mali_hwc_LS_TLB_MISS: val=5',
409      '     kworker/u:0-5     [000] ....    79.046891: ' +
410                     'mali_hwc_LS_WORDS: val=471514',
411      '     kworker/u:0-5     [000] ....    79.046925: ' +
412                     'mali_hwc_MMU_HIT: val=771',
413      '     kworker/u:0-5     [000] ....    79.046924: ' +
414                     'mali_hwc_MMU_NEW_MISS: val=494',
415      '     kworker/u:0-5     [000] ....    79.046922: ' +
416                     'mali_hwc_MMU_REPLAY_MISS: val=841',
417      '     kworker/u:0-5     [000] ....    79.046921: ' +
418                     'mali_hwc_MMU_TABLE_WALK: val=3119',
419      '     kworker/u:0-5     [000] ....    79.046848: ' +
420                     'mali_hwc_POINTS: val=5',
421      '     kworker/u:0-5     [000] ....    79.046856: ' +
422                     'mali_hwc_PRIM_CLIPPED: val=70',
423      '     kworker/u:0-5     [000] ....    79.046855: ' +
424                     'mali_hwc_PRIM_CULLED: val=26',
425      '     kworker/u:0-5     [000] ....    79.046854: ' +
426                     'mali_hwc_PRIM_VISIBLE: val=109',
427      '     kworker/u:0-5     [000] ....    79.046898: ' +
428                     'mali_hwc_TEX_BUBBLES: val=24874',
429      '     kworker/u:0-5     [000] ....    79.046905: ' +
430                     'mali_hwc_TEX_RECIRC_DESC: val=5937',
431      '     kworker/u:0-5     [000] ....    79.046904: ' +
432                     'mali_hwc_TEX_RECIRC_FMISS: val=209450',
433      '     kworker/u:0-5     [000] ....    78.896592: ' +
434                     'mali_hwc_TEX_RECIRC_MULTI: val=238',
435      '     kworker/u:0-5     [000] ....    79.046908: ' +
436                     'mali_hwc_TEX_RECIRC_PMISS: val=9672',
437      '     kworker/u:0-5     [000] ....    79.046903: ' +
438                     'mali_hwc_TEX_THREADS: val=660900',
439      '     kworker/u:0-5     [000] ....    79.046897: ' +
440                     'mali_hwc_TEX_WORDS: val=471193',
441      '     kworker/u:0-5     [000] ....    79.046901: ' +
442                     'mali_hwc_TEX_WORDS_DESC: val=707',
443      '     kworker/u:0-5     [000] ....    79.046900: ' +
444                     'mali_hwc_TEX_WORDS_L0: val=32',
445      '     kworker/u:0-5     [000] ....    79.046846: ' +
446                     'mali_hwc_TRIANGLES: val=130',
447      '     kworker/u:0-5     [000] ....    79.046885: ' +
448                     'mali_hwc_TRIPIPE_ACTIVE: val=691001',
449      '     kworker/u:0-5     [000] ....    78.896600: ' +
450                     'mali_hwc_UTLB_NEW_MISS: val=6',
451      '     kworker/u:0-5     [000] ....    78.896599: ' +
452                     'mali_hwc_UTLB_REPLAY_FULL: val=248',
453      '     kworker/u:0-5     [000] ....    78.896597: ' +
454                     'mali_hwc_UTLB_REPLAY_MISS: val=1',
455      '     kworker/u:0-5     [000] ....    78.896596: ' +
456                     'mali_hwc_UTLB_STALL: val=1',
457      '     kworker/u:0-5     [000] ....    79.046850: ' +
458                     'mali_hwc_VCACHE_HIT: val=311',
459      '     kworker/u:0-5     [000] ....    79.046851: ' +
460                     'mali_hwc_VCACHE_MISS: val=70'
461    ];
462    var m = new tracing.TraceModel(lines.join('\n'), false);
463    assertEquals(0, m.importErrors.length);
464
465    var counters = m.getAllCounters();
466    assertEquals(103, counters.length);
467
468    // all counters should have 1 sample
469    for (var tI = 0; tI < counters.length; tI++) {
470      var counter = counters[tI];
471      assertEquals(1, counter.series[0].samples.length);
472    }
473    // TODO(sleffler) verify counter names? (not sure if it's worth the effort)
474  });
475});
476