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

Unified Diff: tracing/tracing/value/numeric_test.html

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 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/value/numeric.html ('k') | tracing/tracing/value/ui/all_value_set_views.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/value/numeric_test.html
diff --git a/tracing/tracing/value/numeric_test.html b/tracing/tracing/value/numeric_test.html
index ed586ededfb45e6ac2428c17c5117a30e932c4f8..208bb90acd2591c72e0b6995262b45586fe378cc 100644
--- a/tracing/tracing/value/numeric_test.html
+++ b/tracing/tracing/value/numeric_test.html
@@ -7,6 +7,7 @@ found in the LICENSE file.
<link rel="import" href="/tracing/base/range.html">
<link rel="import" href="/tracing/base/statistics.html">
+<link rel="import" href="/tracing/value/diagnostics/generic.html">
<link rel="import" href="/tracing/value/numeric.html">
<link rel="import" href="/tracing/value/unit.html">
@@ -14,7 +15,6 @@ found in the LICENSE file.
'use strict';
tr.b.unittest.testSuite(function() {
-
var TEST_NUMERIC_BUILDER = tr.v.NumericBuilder.createLinear(
tr.v.Unit.byName.timeDurationInMs, tr.b.Range.fromExplicitRange(0, 1000),
10);
@@ -42,6 +42,30 @@ tr.b.unittest.testSuite(function() {
}
}
+ test('significance', function() {
+ assert.strictEqual(TEST_NUMERIC_BUILDER.build().getDifferenceSignificance(
+ TEST_NUMERIC_BUILDER.build()), tr.v.Significance.DONT_CARE);
+
+ var builder = tr.v.NumericBuilder.createLinear(
+ tr.v.Unit.byName.unitlessNumber_smallerIsBetter,
+ tr.b.Range.fromExplicitRange(0, 100), 10);
+ var numericA = builder.build();
+ var numericB = builder.build();
+ for (var i = 0; i < 100; ++i) {
+ numericA.add(i);
+ numericB.add(i * 0.85);
+ }
+
+ assert.strictEqual(numericA.getDifferenceSignificance(numericB),
+ tr.v.Significance.INSIGNIFICANT);
+ assert.strictEqual(numericB.getDifferenceSignificance(numericA),
+ tr.v.Significance.INSIGNIFICANT);
+ assert.strictEqual(numericA.getDifferenceSignificance(numericB, 0.1),
+ tr.v.Significance.SIGNIFICANT);
+ assert.strictEqual(numericB.getDifferenceSignificance(numericA, 0.1),
+ tr.v.Significance.SIGNIFICANT);
+ });
+
test('nonUnitThrows', function() {
assert.throws(function() { new tr.v.NumericBase('foo', -273.15); });
});
@@ -55,16 +79,16 @@ tr.b.unittest.testSuite(function() {
var n = TEST_NUMERIC_BUILDER.build();
assert.equal(n.getBinForValue(250).range.min, 200);
assert.equal(n.getBinForValue(250).range.max, 300);
- n.add(-1, 'a');
- n.add(0, 'b');
- n.add(0, 'c');
- n.add(500, 'c');
- n.add(999, 'd');
- n.add(1000, 'd');
+ n.add(-1, new tr.v.d.Generic('a'));
+ n.add(0, new tr.v.d.Generic('b'));
+ n.add(0, new tr.v.d.Generic('c'));
+ n.add(500, new tr.v.d.Generic('c'));
+ n.add(999, new tr.v.d.Generic('d'));
+ n.add(1000, new tr.v.d.Generic('d'));
assert.equal(n.underflowBin.count, 1);
assert.equal(n.getBinForValue(0).count, 2);
- assert.deepEqual(n.getBinForValue(0).sourceInfos,
+ assert.deepEqual(n.getBinForValue(0).diagnostics.map(d => d.value),
['b', 'c']);
assert.equal(n.getBinForValue(500).count, 1);
@@ -77,56 +101,68 @@ tr.b.unittest.testSuite(function() {
test('numericNans', function() {
var n = TEST_NUMERIC_BUILDER.build();
- n.add(undefined, 'b');
- n.add(NaN, 'c');
+ n.add(undefined, new tr.v.d.Generic('b'));
+ n.add(NaN, new tr.v.d.Generic('c'));
+ n.add(undefined);
+ n.add(NaN);
- assert.equal(n.numNans, 2);
- assert.deepEqual(n.nanSourceInfos, ['b', 'c']);
+ assert.equal(n.numNans, 4);
+ assert.deepEqual(n.nanDiagnostics.map(d => d.value), ['b', 'c']);
+
+ var n2 = n.clone();
+ assert.instanceOf(n2.nanDiagnostics[0], tr.v.d.Generic);
});
test('addNumericsValid', function() {
var n0 = TEST_NUMERIC_BUILDER.build();
var n1 = TEST_NUMERIC_BUILDER.build();
- n0.add(-1, 'a0');
- n0.add(0, 'b0');
- n0.add(0, 'c0');
- n0.add(500, 'c0');
- n0.add(1000, 'd0');
- n0.add(NaN, 'e0');
-
- n1.add(-1, 'a1');
- n1.add(0, 'b1');
- n1.add(0, 'c1');
- n1.add(999, 'd1');
- n1.add(1000, 'd1');
- n1.add(NaN, 'e1');
+ n0.add(-1, new tr.v.d.Generic('a0'));
+ n0.add(0, new tr.v.d.Generic('b0'));
+ n0.add(0, new tr.v.d.Generic('c0'));
+ n0.add(500, new tr.v.d.Generic('c0'));
+ n0.add(1000, new tr.v.d.Generic('d0'));
+ n0.add(NaN, new tr.v.d.Generic('e0'));
+
+ n1.add(-1, new tr.v.d.Generic('a1'));
+ n1.add(0, new tr.v.d.Generic('b1'));
+ n1.add(0, new tr.v.d.Generic('c1'));
+ n1.add(999, new tr.v.d.Generic('d1'));
+ n1.add(1000, new tr.v.d.Generic('d1'));
+ n1.add(NaN, new tr.v.d.Generic('e1'));
n0.addNumeric(n1);
assert.equal(n0.numNans, 2);
- assert.deepEqual(n0.nanSourceInfos, ['e0', 'e1']);
+ assert.deepEqual(n0.nanDiagnostics.map(d => d.value), ['e0', 'e1']);
assert.equal(n0.underflowBin.count, 2);
- assert.deepEqual(n0.underflowBin.sourceInfos, ['a0', 'a1']);
+ assert.deepEqual(n0.underflowBin.diagnostics.map(d => d.value),
+ ['a0', 'a1']);
assert.equal(n0.getBinForValue(0).count, 4);
- assert.deepEqual(n0.getBinForValue(0).sourceInfos,
+ assert.deepEqual(n0.getBinForValue(0).diagnostics.map(d => d.value),
['b0', 'c0', 'b1', 'c1']);
assert.equal(n0.getBinForValue(500).count, 1);
- assert.deepEqual(n0.getBinForValue(500).sourceInfos, ['c0']);
+ assert.deepEqual(n0.getBinForValue(500).diagnostics.map(d => d.value),
+ ['c0']);
assert.equal(n0.getBinForValue(999).count, 1);
- assert.deepEqual(n0.getBinForValue(999).sourceInfos, ['d1']);
+ assert.deepEqual(n0.getBinForValue(999).diagnostics.map(d => d.value),
+ ['d1']);
assert.equal(n0.overflowBin.count, 2);
- assert.deepEqual(n0.overflowBin.sourceInfos, ['d0', 'd1']);
+ assert.deepEqual(n0.overflowBin.diagnostics.map(d => d.value),
+ ['d0', 'd1']);
assert.equal(n0.numValues, 10);
assert.closeTo(n0.average, 349.7, 0.1);
assert.equal(2, n0.maxCount);
assert.equal(2, n1.maxCount);
+
+ var n02 = n0.clone();
+ assert.instanceOf(n02.underflowBin.diagnostics[0], tr.v.d.Generic);
});
test('addNumericsInvalid', function() {
@@ -189,7 +225,7 @@ tr.b.unittest.testSuite(function() {
tr.v.Unit.byName.timeDurationInMs,
tr.b.Range.fromExplicitRange(min, max),
bins).build();
- array.forEach((x) => n.add(x, 'x'));
+ array.forEach((x) => n.add(x, new tr.v.d.Generic('x')));
[0.25, 0.5, 0.75, 0.8, 0.95, 0.99].forEach(function(percent) {
var expected = tr.b.Statistics.percentile(array, percent);
var actual = n.getApproximatePercentile(percent);
@@ -415,6 +451,120 @@ tr.b.unittest.testSuite(function() {
assert.strictEqual(values.pct_099_5.value, 0);
assert.strictEqual(values.pct_100.value, 0);
});
+
+ test('sampleValues', function() {
+ var n0 = TEST_NUMERIC_BUILDER.build();
+ var n1 = TEST_NUMERIC_BUILDER.build();
+ // maxNumSampleValues defaults to numBins * 10, which, including the
+ // underflowBin and overflowBin plus this builder's 10 central bins,
+ // is 12 * 10.
+ assert.strictEqual(n0.maxNumSampleValues, 120);
+ assert.strictEqual(n1.maxNumSampleValues, 120);
+ var values0 = [];
+ var values1 = [];
+ for (var i = 0; i < 10; ++i) {
+ values0.push(i);
+ n0.add(i);
+ }
+ for (var i = 10; i < 20; ++i) {
+ values1.push(i);
+ n1.add(i);
+ }
+ assert.deepEqual(n0.sampleValues, values0);
+ assert.deepEqual(n1.sampleValues, values1);
+ n0.addNumeric(n1);
+ assert.deepEqual(n0.sampleValues, values0.concat(values1));
+ var n2 = n0.clone();
+ assert.deepEqual(n2.sampleValues, values0.concat(values1));
+
+ for (var i = 0; i < 200; ++i)
+ n0.add(i);
+ assert.strictEqual(n0.sampleValues.length, n0.maxNumSampleValues);
+
+ var n3 = TEST_NUMERIC_BUILDER.build();
+ n3.maxNumSampleValues = 10;
+ for (var i = 0; i < 100; ++i)
+ n3.add(i);
+ assert.strictEqual(n3.sampleValues.length, 10);
+ });
+
+ test('mergeScalarNumerics', function() {
+ var scalarA = new tr.v.ScalarNumeric(tr.v.Unit.byName.timeDurationInMs, 10);
+ var scalarB = new tr.v.ScalarNumeric(tr.v.Unit.byName.timeDurationInMs, 20);
+
+ var numeric = scalarA.merge(scalarB);
+ assert.instanceOf(numeric, tr.v.Numeric);
+ assert.strictEqual(numeric.range.min, 10);
+ assert.strictEqual(numeric.range.max, 20);
+ assert.strictEqual(numeric.maxNumSampleValues, 1000);
+ assert.strictEqual(numeric.numValues, 2);
+ assert.strictEqual(numeric.numNans, 0);
+ assert.lengthOf(numeric.sampleValues, 2);
+ assert.lengthOf(numeric.allBins, 4);
+
+ scalarB.value = scalarA.value;
+ numeric = scalarA.merge(scalarB);
+ assert.instanceOf(numeric, tr.v.Numeric);
+ assert.strictEqual(numeric.maxNumSampleValues, 1000);
+ assert.strictEqual(numeric.numValues, 2);
+ assert.strictEqual(numeric.numNans, 0);
+ assert.lengthOf(numeric.sampleValues, 2);
+ assert.lengthOf(numeric.allBins, 4);
+ assert.strictEqual(numeric.range.min, 9);
+ assert.strictEqual(numeric.range.max, 10);
+
+ scalarA.value = 'i am not a number';
+ scalarB.value = 'i am also not a number';
+ numeric = scalarA.merge(scalarB);
+ assert.instanceOf(numeric, tr.v.Numeric);
+ assert.strictEqual(numeric.maxNumSampleValues, 1000);
+ assert.strictEqual(numeric.numValues, 0);
+ assert.strictEqual(numeric.numNans, 2);
+ assert.lengthOf(numeric.sampleValues, 2);
+ assert.lengthOf(numeric.allBins, 4);
+ assert.strictEqual(numeric.range.min, 0);
+ assert.strictEqual(numeric.range.max, 1);
+ });
+
+ test('mergeNumericWithScalar', function() {
+ var scalar = new tr.v.ScalarNumeric(
+ tr.v.Unit.byName.timeDurationInMs, 1010);
+ var numeric = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric.add(Math.random() * 1000);
+ numeric.add('i am not a number');
+
+ var mergedA = scalar.merge(numeric);
+ var mergedB = numeric.merge(scalar);
+ assert.instanceOf(mergedA, tr.v.Numeric);
+ assert.instanceOf(mergedB, tr.v.Numeric);
+
+ assert.strictEqual(mergedA.maxNumSampleValues, 1000);
+ // numValues does not include non-number samples.
+ assert.strictEqual(mergedA.numValues, 101);
+ assert.strictEqual(mergedA.numNans, 1);
+ assert.strictEqual(mergedA.range.min, numeric.running.min);
+ assert.strictEqual(mergedA.range.max, 1010);
+
+ assert.strictEqual(mergedB.maxNumSampleValues, 1000);
+ // numValues does not include non-number samples.
+ assert.strictEqual(mergedB.numValues, 101);
+ assert.strictEqual(mergedB.numNans, 1);
+ assert.strictEqual(mergedB.range.min, numeric.running.min);
+ assert.strictEqual(mergedB.range.max, 1010);
+
+ // Normalize away some insignificant differences so that deepEqual can test
+ // the significant fields.
+ var mergedAdict = mergedA.asDict();
+ var mergedBdict = mergedB.asDict();
+ mergedAdict.sampleValues.sort();
+ mergedBdict.sampleValues.sort();
+ for (var stat in mergedAdict.running) {
+ mergedAdict.running[stat] = Math.round(mergedAdict.running[stat]);
+ mergedBdict.running[stat] = Math.round(mergedBdict.running[stat]);
+ }
+ assert.deepEqual(mergedAdict, mergedBdict);
+ });
});
</script>
« no previous file with comments | « tracing/tracing/value/numeric.html ('k') | tracing/tracing/value/ui/all_value_set_views.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698