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

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

Issue 2293533002: Refactor NumericBuilder to HistogramBinBoundaries. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: rebase Created 4 years, 4 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/histogram.html ('k') | tracing/tracing/value/numeric.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/value/histogram_test.html
diff --git a/tracing/tracing/value/histogram_test.html b/tracing/tracing/value/histogram_test.html
index 37833f51959793231bd8424b8092032e9cb12baa..1f470ac304d9a8ab70d2415c647cf5756020f477 100644
--- a/tracing/tracing/value/histogram_test.html
+++ b/tracing/tracing/value/histogram_test.html
@@ -12,18 +12,19 @@ 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);
+ var unitlessNumber = tr.v.Unit.byName.unitlessNumber;
+ var unitlessNumber_sIB = tr.v.Unit.byName.unitlessNumber_smallerIsBetter;
- function checkBuilder(builder, expectedMinBoundary, expectedMaxBoundary,
+ var TEST_BOUNDARIES = tr.v.HistogramBinBoundaries.createLinear(0, 1000, 10);
+
+ function checkBoundaries(boundaries, expectedMinBoundary, expectedMaxBoundary,
expectedUnit, expectedBinRanges) {
- assert.strictEqual(builder.minBinBoundary, expectedMinBoundary);
- assert.strictEqual(builder.maxBinBoundary, expectedMaxBoundary);
+ assert.strictEqual(boundaries.minBinBoundary, expectedMinBoundary);
+ assert.strictEqual(boundaries.maxBinBoundary, expectedMaxBoundary);
- // Check that the builder can be used multiple times.
+ // Check that the boundaries can be used multiple times.
for (var i = 0; i < 3; i++) {
- var numeric = builder.build();
+ var numeric = new tr.v.Histogram(expectedUnit, boundaries);
assert.instanceOf(numeric, tr.v.Histogram);
assert.strictEqual(numeric.unit, expectedUnit);
assert.strictEqual(numeric.numValues, 0);
@@ -31,8 +32,6 @@ tr.b.unittest.testSuite(function() {
assert.lengthOf(numeric.allBins, expectedBinRanges.length);
for (var j = 0; j < expectedBinRanges.length; j++) {
var bin = numeric.allBins[j];
- assert.instanceOf(bin, tr.v.HistogramBin);
- assert.strictEqual(bin.parentNumeric, numeric);
assert.strictEqual(bin.count, 0);
assert.isTrue(bin.range.equals(expectedBinRanges[j]));
}
@@ -40,14 +39,13 @@ 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();
+ assert.strictEqual(
+ new tr.v.Histogram(unitlessNumber).getDifferenceSignificance(
+ new tr.v.Histogram(unitlessNumber)), tr.v.Significance.DONT_CARE);
+
+ var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 10);
+ var numericA = new tr.v.Histogram(unitlessNumber_sIB, boundaries);
+ var numericB = new tr.v.Histogram(unitlessNumber_sIB, boundaries);
for (var i = 0; i < 100; ++i) {
numericA.add(i);
numericB.add(i * 0.85);
@@ -64,7 +62,7 @@ tr.b.unittest.testSuite(function() {
});
test('numericBasic', function() {
- var n = TEST_NUMERIC_BUILDER.build();
+ var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
assert.equal(n.getBinForValue(250).range.min, 200);
assert.equal(n.getBinForValue(250).range.max, 300);
@@ -103,7 +101,7 @@ tr.b.unittest.testSuite(function() {
});
test('numericNans', function() {
- var n = TEST_NUMERIC_BUILDER.build();
+ var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
var dm0 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('b')});
var dm1 = tr.v.d.DiagnosticMap.fromObject({'foo': new tr.v.d.Generic('c')});
@@ -122,9 +120,9 @@ tr.b.unittest.testSuite(function() {
assert.instanceOf(n2.nanDiagnosticMaps[0].get('foo'), tr.v.d.Generic);
});
- test('addNumericsValid', function() {
- var n0 = TEST_NUMERIC_BUILDER.build();
- var n1 = TEST_NUMERIC_BUILDER.build();
+ test('addHistogramsValid', function() {
+ var n0 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
+ var n1 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
var dm0 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('a0')});
var dm1 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('b0')});
@@ -196,29 +194,27 @@ tr.b.unittest.testSuite(function() {
tr.v.d.Generic);
});
- test('addNumericsInvalid', function() {
- var n0 = tr.v.NumericBuilder.createLinear(tr.v.Unit.byName.timeDurationInMs,
- tr.b.Range.fromExplicitRange(0, 1000), 10).build();
- var n1 = tr.v.NumericBuilder.createLinear(tr.v.Unit.byName.timeDurationInMs,
- tr.b.Range.fromExplicitRange(0, 1001), 10).build();
- var n2 = tr.v.NumericBuilder.createLinear(tr.v.Unit.byName.timeDurationInMs,
- tr.b.Range.fromExplicitRange(0, 1000), 11).build();
+ test('addHistogramsInvalid', function() {
+ var n0 = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs,
+ tr.v.HistogramBinBoundaries.createLinear(0, 1000, 10));
+ var n1 = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs,
+ tr.v.HistogramBinBoundaries.createLinear(0, 1001, 10));
+ var n2 = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs,
+ tr.v.HistogramBinBoundaries.createLinear(0, 1000, 11));
assert.throws(n0.addNumeric.bind(n0, n1), Error);
- assert.throws(n0.addNumeric.bind(n0, n1), Error);
+ assert.throws(n0.addNumeric.bind(n0, n2), Error);
});
test('addNumericWithNonDiagnosticMapThrows', function() {
- var n = TEST_NUMERIC_BUILDER.build();
+ var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
assert.throws(n.add.bind(42, 'foo'), Error);
});
test('numericPercentile', function() {
function check(array, min, max, bins, precision) {
- var n = tr.v.NumericBuilder.createLinear(
- tr.v.Unit.byName.timeDurationInMs,
- tr.b.Range.fromExplicitRange(min, max),
- bins).build();
+ var boundaries = tr.v.HistogramBinBoundaries.createLinear(min, max, bins);
+ var n = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs, boundaries);
array.forEach((x) => n.add(
x, tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('x')})));
[0.25, 0.5, 0.75, 0.8, 0.95, 0.99].forEach(function(percent) {
@@ -248,11 +244,11 @@ tr.b.unittest.testSuite(function() {
check([1, 1], 0, 10, 1, 10);
});
- test('numericBuilder_addBinBoundary', function() {
- var b = new tr.v.NumericBuilder(tr.v.Unit.byName.timeDurationInMs, -100);
+ test('histogramBinBoundaries_addBinBoundary', function() {
+ var b = new tr.v.HistogramBinBoundaries(-100);
b.addBinBoundary(50);
- checkBuilder(b, -100, 50, tr.v.Unit.byName.timeDurationInMs, [
+ checkBoundaries(b, -100, 50, tr.v.Unit.byName.timeDurationInMs, [
tr.b.Range.fromExplicitRange(-Number.MAX_VALUE, -100),
tr.b.Range.fromExplicitRange(-100, 50),
tr.b.Range.fromExplicitRange(50, Number.MAX_VALUE)
@@ -261,7 +257,7 @@ tr.b.unittest.testSuite(function() {
b.addBinBoundary(60);
b.addBinBoundary(75);
- checkBuilder(b, -100, 75, tr.v.Unit.byName.timeDurationInMs, [
+ checkBoundaries(b, -100, 75, tr.v.Unit.byName.timeDurationInMs, [
tr.b.Range.fromExplicitRange(-Number.MAX_VALUE, -100),
tr.b.Range.fromExplicitRange(-100, 50),
tr.b.Range.fromExplicitRange(50, 60),
@@ -270,11 +266,11 @@ tr.b.unittest.testSuite(function() {
]);
});
- test('numericBuilder_addLinearBins', function() {
- var b = new tr.v.NumericBuilder(tr.v.Unit.byName.powerInWatts, 1000);
+ test('histogramBinBoundaries_addLinearBins', function() {
+ var b = new tr.v.HistogramBinBoundaries(1000);
b.addLinearBins(1200, 5);
- checkBuilder(b, 1000, 1200, tr.v.Unit.byName.powerInWatts, [
+ checkBoundaries(b, 1000, 1200, tr.v.Unit.byName.powerInWatts, [
tr.b.Range.fromExplicitRange(-Number.MAX_VALUE, 1000),
tr.b.Range.fromExplicitRange(1000, 1040),
tr.b.Range.fromExplicitRange(1040, 1080),
@@ -285,11 +281,11 @@ tr.b.unittest.testSuite(function() {
]);
});
- test('numericBuilder_addExponentialBins', function() {
- var b = new tr.v.NumericBuilder(tr.v.Unit.byName.energyInJoules, 0.5);
+ test('histogramBinBoundaries_addExponentialBins', function() {
+ var b = new tr.v.HistogramBinBoundaries(0.5);
b.addExponentialBins(8, 4);
- checkBuilder(b, 0.5, 8, tr.v.Unit.byName.energyInJoules, [
+ checkBoundaries(b, 0.5, 8, tr.v.Unit.byName.energyInJoules, [
tr.b.Range.fromExplicitRange(-Number.MAX_VALUE, 0.5),
tr.b.Range.fromExplicitRange(0.5, 1),
tr.b.Range.fromExplicitRange(1, 2),
@@ -299,15 +295,15 @@ tr.b.unittest.testSuite(function() {
]);
});
- test('numericBuilder_combined', function() {
- var b = new tr.v.NumericBuilder(tr.v.Unit.byName.unitlessNumber, -273.15);
+ test('histogramBinBoundaries_combined', function() {
+ var b = new tr.v.HistogramBinBoundaries(-273.15);
b.addBinBoundary(-50);
b.addLinearBins(4, 3);
b.addExponentialBins(16, 2);
b.addLinearBins(17, 4);
b.addBinBoundary(100);
- checkBuilder(b, -273.15, 100, tr.v.Unit.byName.unitlessNumber, [
+ checkBoundaries(b, -273.15, 100, tr.v.Unit.byName.unitlessNumber, [
tr.b.Range.fromExplicitRange(-Number.MAX_VALUE, -273.15),
tr.b.Range.fromExplicitRange(-273.15, -50),
tr.b.Range.fromExplicitRange(-50, -32),
@@ -324,8 +320,8 @@ tr.b.unittest.testSuite(function() {
]);
});
- test('numericBuilder_throws', function() {
- var b0 = new tr.v.NumericBuilder(tr.v.Unit.byName.timeStampInMs, -7);
+ test('histogramBinBoundaries_throws', function() {
+ var b0 = new tr.v.HistogramBinBoundaries(-7);
assert.throws(function() { b0.addBinBoundary(-10 /* must be > -7 */); });
assert.throws(function() { b0.addBinBoundary(-7 /* must be > -7 */); });
assert.throws(function() { b0.addLinearBins(-10 /* must be > -7 */, 10); });
@@ -336,19 +332,15 @@ tr.b.unittest.testSuite(function() {
b0.addExponentialBins(16, 4);
});
- var b1 = new tr.v.NumericBuilder(tr.v.Unit.byName.sizeInBytes, 8);
- assert.throws(
- function() { b1.addExponentialBins(20, 0 /* must be > 0 */); });
- assert.throws(
- function() { b1.addExponentialBins(5 /* must be > 8 */, 3); });
- assert.throws(
- function() { b1.addExponentialBins(8 /* must be > 8 */, 3); });
+ var b1 = new tr.v.HistogramBinBoundaries(8);
+ assert.throws(() => b1.addExponentialBins(20, 0 /* must be > 0 */));
+ assert.throws(() => b1.addExponentialBins(5 /* must be > 8 */, 3));
+ assert.throws(() => b1.addExponentialBins(8 /* must be > 8 */, 3));
});
test('getSummarizedScalarNumericsWithNames', function() {
- var n = tr.v.NumericBuilder.createLinear(
- tr.v.Unit.byName.timeDurationInMs, tr.b.Range.fromExplicitRange(0, 100),
- 100).build();
+ var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100);
+ var n = new tr.v.Histogram(unitlessNumber, boundaries);
n.add(50);
n.add(60);
@@ -381,9 +373,8 @@ tr.b.unittest.testSuite(function() {
});
test('getSummarizedScalarNumericsWithNamesNoSummaryOptions', function() {
- var n = tr.v.NumericBuilder.createLinear(
- tr.v.Unit.byName.timeDurationInMs, tr.b.Range.fromExplicitRange(0, 100),
- 100).build();
+ var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100);
+ var n = new tr.v.Histogram(unitlessNumber, boundaries);
n.add(50);
n.add(60);
@@ -404,9 +395,8 @@ tr.b.unittest.testSuite(function() {
});
test('getSummarizedScalarNumericsWithNamesEmptyNumericValue', function() {
- var n = tr.v.NumericBuilder.createLinear(
- tr.v.Unit.byName.timeDurationInMs, tr.b.Range.fromExplicitRange(0, 100),
- 100).build();
+ var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100);
+ var n = new tr.v.Histogram(unitlessNumber, boundaries);
n.customizeSummaryOptions({
count: true,
@@ -439,8 +429,8 @@ tr.b.unittest.testSuite(function() {
});
test('sampleValues', function() {
- var n0 = TEST_NUMERIC_BUILDER.build();
- var n1 = TEST_NUMERIC_BUILDER.build();
+ var n0 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
+ var n1 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
// maxNumSampleValues defaults to numBins * 10, which, including the
// underflowBin and overflowBin plus this builder's 10 central bins,
// is 12 * 10.
@@ -467,7 +457,7 @@ tr.b.unittest.testSuite(function() {
n0.add(i);
assert.strictEqual(n0.sampleValues.length, n0.maxNumSampleValues);
- var n3 = TEST_NUMERIC_BUILDER.build();
+ var n3 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES);
n3.maxNumSampleValues = 10;
for (var i = 0; i < 100; ++i)
n3.add(i);
@@ -505,42 +495,6 @@ tr.b.unittest.testSuite(function() {
assert.lengthOf(numeric.sampleValues, 2);
assert.lengthOf(numeric.allBins, 4);
});
-
- 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.Histogram);
- assert.instanceOf(mergedB, tr.v.Histogram);
-
- assert.strictEqual(mergedA.maxNumSampleValues, 1000);
- // numValues does not include non-number samples.
- assert.strictEqual(mergedA.numValues, 101);
- assert.strictEqual(mergedA.numNans, 1);
-
- assert.strictEqual(mergedB.maxNumSampleValues, 1000);
- // numValues does not include non-number samples.
- assert.strictEqual(mergedB.numValues, 101);
- assert.strictEqual(mergedB.numNans, 1);
-
- // 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/histogram.html ('k') | tracing/tracing/value/numeric.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698