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