blob: 52b5714229267d9e18290669116c86ac6d17475b [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/metrics/system_health/power_metric.html">
<link rel="import" href="/tracing/value/value_set.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
test('powerMetric_multipleFrames', function() {
var model = new tr.Model();
var valueSet = new tr.v.ValueSet();
model.device.powerSeries = new tr.model.PowerSeries(model.device);
// We want values in different frames, so they must go up by more than 16.66
// milliseconds.
model.device.powerSeries.addPowerSample('1', '.1');
model.device.powerSeries.addPowerSample('2', '.1');
model.device.powerSeries.addPowerSample('18', '.2');
model.device.powerSeries.addPowerSample('36', '.3');
model.device.powerSeries.addPowerSample('53', '.4');
model.device.powerSeries.addPowerSample('70', '.5');
tr.metrics.sh.powerMetric(valueSet, model);
var powerEntries = valueSet.valueDicts.filter(
(dict) => dict.name === 'energy_consumed_per_frame');
var powerEntry = tr.b.getOnlyElement(powerEntries);
assert.equal(powerEntry.centralBins[0].count, 5);
assert.closeTo(powerEntry.running.sum, 0.0172, 1e-4);
});
test('powerMetric_oneFrame', function() {
var model = new tr.Model();
var valueSet = new tr.v.ValueSet();
model.device.powerSeries = new tr.model.PowerSeries(model.device);
// We want values in the same frame, so they must go up by less than 16.66
// milliseconds.
model.device.powerSeries.addPowerSample('1', '.1');
model.device.powerSeries.addPowerSample('2', '.1');
model.device.powerSeries.addPowerSample('3', '.2');
model.device.powerSeries.addPowerSample('4', '.3');
model.device.powerSeries.addPowerSample('5', '.4');
model.device.powerSeries.addPowerSample('6', '.5');
tr.metrics.sh.powerMetric(valueSet, model);
var powerEntries = valueSet.valueDicts.filter(
(dict) => dict.name === 'energy_consumed_per_frame');
var powerEntry = tr.b.getOnlyElement(powerEntries);
assert.equal(powerEntry.centralBins[0].count, 1);
assert.closeTo(powerEntry.running.sum, 0.0011, 1e-4);
});
test('powerMetric_noPowerSeries', function() {
var model = new tr.Model();
var valueSet = new tr.v.ValueSet();
tr.metrics.sh.powerMetric(valueSet, model);
var powerEntries = valueSet.valueDicts.filter(
(dict) => dict.name === 'energy_consumed_per_frame');
assert.lengthOf(powerEntries, 0);
});
});
</script>