blob: a9e3dce210b1dddd0c1b60cfbefb82d029004233 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright 2016 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/extras/importer/trace_event_importer.html">
<link rel="import" href="/tracing/metrics/cpu_process_metric.html">
<link rel="import" href="/tracing/value/value_set.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
function makeModel(events) {
return tr.c.TestUtils.newModelWithEvents([events]);
}
test('cpuProcessMetric_noData', function() {
var values = new tr.v.ValueSet();
var events = [
{name: 'a', args: {}, pid: 52, ts: 524, cat: 'foo', tid: 53, ph: 'B'},
{name: 'a', args: {}, pid: 52, ts: 560, cat: 'foo', tid: 53, ph: 'B'}
];
tr.metrics.sh.cpuProcessMetric(values, makeModel(events));
assert.lengthOf(values.toArray(), 0);
});
test('cpuProcessMetric_singleSnapshots', function() {
var values = new tr.v.ValueSet();
var events = [
{
'name': 'CPUSnapshots',
'args': {
'snapshot': {
'processes': [
{'path': '/usr/sbin/crudd', 'pCpu': '99.0', 'pid': '13495',
'pMem': '0.0', 'name': 'crudd'},
{'path': '/opt/chrome/chrome', 'pCpu': '0.8',
'pid': '29660', 'pMem': '0.9', 'name': 'chrome'},
{'path': '/opt/chrome/chrome', 'pCpu': '0.3',
'pid': '29661', 'pMem': '0.9', 'name': 'chrome'}
]
}
},
'pid': 52, 'ts': '2226221225693.658', tid: 53,
'tid': undefined, 'ph': 'O', 'local': true, 'id': '0x1000'
}
];
tr.metrics.sh.cpuProcessMetric(values, makeModel(events));
assert.lengthOf(values.getValuesNamed('cpu:percent:chrome'), 1);
assert.lengthOf(values.getValuesNamed('cpu:percent:crudd'), 1);
var chromeValue = values.getValuesNamed('cpu:percent:chrome')[0];
var chromeStatistics = chromeValue.running;
assert.strictEqual(chromeStatistics.count, 1);
assert.closeTo(chromeStatistics.mean, 0.011, 1e-5);
assert.closeTo(chromeStatistics.max, 0.011, 1e-5);
assert.instanceOf(chromeValue.diagnostics.get('paths'), tr.v.d.Generic);
assert.lengthOf(chromeValue.diagnostics.get('paths').value, 1);
assert.strictEqual(chromeValue.diagnostics.get('paths').value[0],
'/opt/chrome/chrome');
});
test('cpuProcessMetric_multipleSnapshots', function() {
var values = new tr.v.ValueSet();
var events = [
{
'name': 'CPUSnapshots',
'args': {
'snapshot': {
'processes': [
{'path': '/usr/sbin/crudd', 'pCpu': '99.0', 'pid': '13495',
'pMem': '0.0', 'name': 'crudd'},
{'path': '/opt/chrome/chrome', 'pCpu': '0.8',
'pid': '29660', 'pMem': '0.9', 'name': 'chrome'}
]
}
},
'pid': 52, 'ts': '2226221225693.658', tid: 53,
'tid': undefined, 'ph': 'O', 'local': true, 'id': '0x1000'
},
{
'name': 'CPUSnapshots',
'args': {
'snapshot': {
'processes': [
{'path': '/usr/sbin/crudd', 'pCpu': '1.3', 'pid': '13495',
'pMem': '0.0', 'name': 'crudd'},
{'path': '/opt/chrome/chrome', 'pCpu': '0.6',
'pid': '29660', 'pMem': '0.9', 'name': 'chrome'},
{'path': '/opt/chromium/chrome', 'pCpu': '0.1',
'pid': '29660', 'pMem': '0.9', 'name': 'chrome'},
{'path': '/usr/sbin/mnp_logger', 'pCpu': '0.2', 'pid': '6543',
'pMem': '0.1', 'name': 'mnp_logger'}
]
}
},
'pid': 52, 'ts': '2226222262064.4473', tid: 53,
'tid': undefined, 'ph': 'O', 'local': true, 'id': '0x1000'
}
];
tr.metrics.sh.cpuProcessMetric(values, makeModel(events));
assert.lengthOf(values.getValuesNamed('cpu:percent:chrome'), 1);
assert.lengthOf(values.getValuesNamed('cpu:percent:crudd'), 1);
assert.lengthOf(values.getValuesNamed('cpu:percent:mnp_logger'), 1);
var chromeValue = values.getValuesNamed('cpu:percent:chrome')[0];
var chromeStatistics = chromeValue.running;
assert.strictEqual(chromeStatistics.count, 2);
assert.closeTo(chromeStatistics.mean, 0.0075, 1e-5);
assert.strictEqual(chromeStatistics.max, 0.008);
assert.instanceOf(chromeValue.diagnostics.get('paths'), tr.v.d.Generic);
assert.lengthOf(chromeValue.diagnostics.get('paths').value, 2);
assert.strictEqual(chromeValue.diagnostics.get('paths').value[0],
'/opt/chrome/chrome');
});
});
</script>