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> |