Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Unified Diff: tracing/tracing/metrics/system_health/power_metric_test.html

Issue 2380183004: Fail gracefully if no Chrome trace or insufficient power samples (reland) (Closed)
Patch Set: fix whitespace Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tracing/tracing/metrics/system_health/power_metric.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/metrics/system_health/power_metric_test.html
diff --git a/tracing/tracing/metrics/system_health/power_metric_test.html b/tracing/tracing/metrics/system_health/power_metric_test.html
index d89937a3bd78de363dc06955a9b7586c9602216a..29ef4b4806242c46b293b36b162a4ad00cfcb0ec 100644
--- a/tracing/tracing/metrics/system_health/power_metric_test.html
+++ b/tracing/tracing/metrics/system_health/power_metric_test.html
@@ -35,16 +35,66 @@ function getMetricValueAvg(values, name) {
tr.b.unittest.testSuite(function() {
test('powerMetric_noPowerSeries', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- tr.metrics.sh.powerMetric(valueSet, model);
- assert.lengthOf(valueSet, 0);
+ assert.throws(() => {tr.metrics.sh.powerMetric(valueSet, model)});
+ });
+
+ test('powerMetric_emptyPowerSeries', function() {
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ });
+ var valueSet = new tr.v.ValueSet();
+ assert.throws(() => {tr.metrics.sh.powerMetric(valueSet, model)});
});
- test('powerMetric_generic_oneStageEachType', function() {
+ test('powerMetric_noChromeTrace', function() {
+ var model = tr.c.TestUtils.newModel(function(model) {
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ });
+ var valueSet = new tr.v.ValueSet();
+ assert.throws(() => {tr.metrics.sh.powerMetric(valueSet, model)});
+ });
+
+ test('powerMetric_emptyChromeTrace', function() {
var model = new tr.Model();
var valueSet = new tr.v.ValueSet();
var rendererProcess = model.getOrCreateProcess(1234);
@@ -58,6 +108,102 @@ tr.b.unittest.testSuite(function() {
model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 0, 500));
model.userModel.expectations.push(new tr.model.um.IdleExpectation(
model, 500, 500));
+ assert.throws(() => {tr.metrics.sh.powerMetric(valueSet, model)});
+ });
+
+ test('powerMetric_powerSeriesStartsLate', function() {
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 300; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.LoadExpectation(
+ model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 0, 500));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 500, 500));
+ });
+ var valueSet = new tr.v.ValueSet();
+ assert.throws(() => {tr.metrics.sh.powerMetric(valueSet, model)});
+ });
+
+ test('powerMetric_powerSeriesEndsEarly', function() {
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 700; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.LoadExpectation(
+ model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 0, 500));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 500, 500));
+ });
+ var valueSet = new tr.v.ValueSet();
+ assert.throws(() => {tr.metrics.sh.powerMetric(valueSet, model)});
+ });
+
+ test('powerMetric_generic_oneStageEachType_irBeyondChrome', function() {
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.LoadExpectation(
+ model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 0, 500));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 500, 1500));
+ });
+ var valueSet = new tr.v.ValueSet();
tr.metrics.sh.powerMetric(valueSet, model);
assert.equal(getMetricValueSum(valueSet,
@@ -75,23 +221,38 @@ tr.b.unittest.testSuite(function() {
});
test('powerMetric_generic_multipleStagesEachType', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.LoadExpectation(
+ model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 0, 200));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 200, 300));
+ model.userModel.expectations.push(new tr.model.um.LoadExpectation(
+ model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 500, 200));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 700, 300));
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- model.device.powerSeries = new tr.model.PowerSeries(model.device);
- for (var i = 0; i <= 1000; i++) {
- model.device.powerSeries.addPowerSample(i.toString(), i.toString());
- }
- model.userModel.expectations.push(new tr.model.um.LoadExpectation(
- model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 0, 200));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 200, 300));
- model.userModel.expectations.push(new tr.model.um.LoadExpectation(
- model, tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL, 500, 200));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 700, 300));
tr.metrics.sh.powerMetric(valueSet, model);
assert.equal(getMetricValueSum(valueSet,
@@ -108,7 +269,7 @@ tr.b.unittest.testSuite(function() {
'idle:power'), 600, 0.5);
});
- test('powerMetric_loading_oneInterval', function() {
+ test('powerMetric_loading_oneInterval_samplesBeyondChrome', function() {
// Interval of load is [200, 15400].
// Trace goes until 22150.
var model = tr.c.TestUtils.newModel(function(model) {
@@ -182,6 +343,8 @@ tr.b.unittest.testSuite(function() {
model.device.powerSeries.addPowerSample(i.toString(), '20');
for (var i = 15401; i <= 22160; i++)
model.device.powerSeries.addPowerSample(i.toString(), '10');
+ for (var i = 22160; i <= 30000; i++)
+ model.device.powerSeries.addPowerSample(i.toString(), '10');
});
var valueSet = new tr.v.ValueSet();
@@ -264,19 +427,34 @@ tr.b.unittest.testSuite(function() {
});
test('powerMetric_scroll_oneStageEachType', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, tr.importer.INITIATOR_TYPE.SCROLL, 0, 500));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 500, 500));
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- model.device.powerSeries = new tr.model.PowerSeries(model.device);
- for (var i = 0; i <= 1000; i++) {
- model.device.powerSeries.addPowerSample(i.toString(), i.toString());
- }
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, tr.importer.INITIATOR_TYPE.SCROLL, 0, 500));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 500, 500));
tr.metrics.sh.powerMetric(valueSet, model);
assert.equal(getMetricValueSum(valueSet,
@@ -288,23 +466,38 @@ tr.b.unittest.testSuite(function() {
});
test('powerMetric_scroll_multipleStagesEachType', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, tr.importer.INITIATOR_TYPE.SCROLL, 0, 200));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 200, 300));
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, tr.importer.INITIATOR_TYPE.SCROLL, 500, 200));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 700, 300));
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- model.device.powerSeries = new tr.model.PowerSeries(model.device);
- for (var i = 0; i <= 1000; i++) {
- model.device.powerSeries.addPowerSample(i.toString(), i.toString());
- }
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, tr.importer.INITIATOR_TYPE.SCROLL, 0, 200));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 200, 300));
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, tr.importer.INITIATOR_TYPE.SCROLL, 500, 200));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 700, 300));
tr.metrics.sh.powerMetric(valueSet, model);
assert.equal(getMetricValueSum(valueSet,
@@ -316,22 +509,37 @@ tr.b.unittest.testSuite(function() {
});
test('powerMetric_frameBased_multipleFrames', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 70,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, "Video", 1, 69));
+ 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');
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, "Video", 1, 70));
- 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);
assert.closeTo(getMetricValueAvg(valueSet, 'per_frame:energy'),
0.00344, 1e-4)
@@ -340,22 +548,37 @@ tr.b.unittest.testSuite(function() {
});
test('powerMetric_frameBased_oneFrame', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 6,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, "Video", 1, 5));
+ 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');
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, "Video", 1, 6));
- 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);
assert.closeTo(getMetricValueAvg(valueSet, 'per_frame:energy'),
0.0011, 1e-4)
@@ -364,42 +587,72 @@ tr.b.unittest.testSuite(function() {
});
test('powerMetric_video_oneStageEachType', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, "Video", 0, 500));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 500, 500));
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain';
- model.device.powerSeries = new tr.model.PowerSeries(model.device);
- for (var i = 0; i <= 1000; i++) {
- model.device.powerSeries.addPowerSample(i.toString(), i.toString());
- }
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, "Video", 0, 500));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 500, 500));
tr.metrics.sh.powerMetric(valueSet, model);
assert.closeTo(getMetricValueAvg(valueSet, 'video:power'), 250, 0.5);
});
test('powerMetric_video_multipleStagesEachType', function() {
- var model = new tr.Model();
+ var model = tr.c.TestUtils.newModel(function(model) {
+ var rendererProcess = model.getOrCreateProcess(1234);
+ var mainThread = rendererProcess.getOrCreateThread(1);
+ mainThread.name = 'CrRendererMain';
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 0,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
+ cat: 'blink.user_timing',
+ title: 'navigationStart',
+ start: 1000,
+ duration: 0.0,
+ args: {frame: '0xdeadbeef'}
+ }));
+ model.device.powerSeries = new tr.model.PowerSeries(model.device);
+ for (var i = 0; i <= 1000; i++) {
+ model.device.powerSeries.addPowerSample(i.toString(), i.toString());
+ }
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, tr.importer.INITIATOR_TYPE.VIDEO, 0, 200));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 200, 300));
+ model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
+ model, tr.importer.INITIATOR_TYPE.VIDEO, 500, 200));
+ model.userModel.expectations.push(new tr.model.um.IdleExpectation(
+ model, 700, 300));
+ });
var valueSet = new tr.v.ValueSet();
- var rendererProcess = model.getOrCreateProcess(1234);
- var mainThread = rendererProcess.getOrCreateThread(1);
- mainThread.name = 'CrRendererMain'
- model.device.powerSeries = new tr.model.PowerSeries(model.device);
- for (var i = 0; i <= 1000; i++) {
- model.device.powerSeries.addPowerSample(i.toString(), i.toString());
- }
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, tr.importer.INITIATOR_TYPE.VIDEO, 0, 200));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 200, 300));
- model.userModel.expectations.push(new tr.model.um.AnimationExpectation(
- model, tr.importer.INITIATOR_TYPE.VIDEO, 500, 200));
- model.userModel.expectations.push(new tr.model.um.IdleExpectation(
- model, 700, 300));
tr.metrics.sh.powerMetric(valueSet, model);
assert.closeTo(getMetricValueAvg(valueSet, 'video:power'), 350, 0.5);
« no previous file with comments | « tracing/tracing/metrics/system_health/power_metric.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698