166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved.
266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be
366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file.
466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict';
666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.test_utils');
866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.importer.linux_perf_importer');
966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.importer.linux_perf.power_parser', function() {
1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('powerFrequencyImport', function() {
1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var lines = [
1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      ' kworker/0:3-6880  [000]  2784.783015: power_frequency: ' +
1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                 'type=2 state=1000000 cpu_id=0',
1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      ' kworker/1:2-7269  [001]  2784.788993: power_frequency: ' +
1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                 'type=2 state=800000 cpu_id=1',
1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      ' kworker/1:2-7269  [001]  2784.993120: power_frequency: ' +
1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                 'type=2 state=1300000 cpu_id=1'
1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    ];
2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var m = new tracing.TraceModel(lines.join('\n'), false);
2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, m.importErrors.length);
2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = m.kernel.cpus[0];
2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, c0.slices.length);
256833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis    assertEquals(1, c0.counters['Clock Frequency'].series[0].samples.length);
2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c1 = m.kernel.cpus[1];
2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, c1.slices.length);
296833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis    assertEquals(2, c1.counters['Clock Frequency'].series[0].samples.length);
3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('cpuFrequencyImport', function() {
3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var lines = [
3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '     kworker/1:0-9665  [001] 15051.007301: cpu_frequency: ' +
3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                     'state=800000 cpu_id=1',
3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '     kworker/1:0-9665  [001] 15051.010278: cpu_frequency: ' +
3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                     'state=1300000 cpu_id=1',
3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '     kworker/0:2-7972  [000] 15051.010278: cpu_frequency: ' +
3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                     'state=1000000 cpu_id=0',
4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '     kworker/0:2-7972  [000] 15051.020304: cpu_frequency: ' +
4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                     'state=800000 cpu_id=0'
4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    ];
4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var m = new tracing.TraceModel(lines.join('\n'), false);
4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, m.importErrors.length);
4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = m.kernel.cpus[0];
4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, c0.slices.length);
486833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis    assertEquals(2, c0.counters['Clock Frequency'].series[0].samples.length);
4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c1 = m.kernel.cpus[1];
5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, c1.slices.length);
526833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis    assertEquals(2, c1.counters['Clock Frequency'].series[0].samples.length);
5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('cpuIdleImport', function() {
5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var lines = [
5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '          <idle>-0     [000] 15050.992883: cpu_idle: ' +
5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis          'state=1 cpu_id=0',
5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '          <idle>-0     [000] 15050.993027: cpu_idle: ' +
6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis          'state=4294967295 cpu_id=0',
6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '          <idle>-0     [001] 15050.993132: cpu_idle: ' +
6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis          'state=1 cpu_id=1',
6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '          <idle>-0     [001] 15050.993276: cpu_idle: ' +
6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis          'state=4294967295 cpu_id=1',
6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '          <idle>-0     [001] 15050.993279: cpu_idle: ' +
6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis          'state=3 cpu_id=1',
6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      '          <idle>-0     [001] 15050.993457: cpu_idle: ' +
6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis          'state=4294967295 cpu_id=1'
6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    ];
7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var m = new tracing.TraceModel(lines.join('\n'), false);
7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, m.importErrors.length);
7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = m.kernel.cpus[0];
7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, c0.slices.length);
756833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis    assertEquals(2, c0.counters['C-State'].series[0].samples.length);
7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c1 = m.kernel.cpus[1];
7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertEquals(0, c1.slices.length);
796833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis    assertEquals(4, c1.counters['C-State'].series[0].samples.length);
8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
8166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis});
82