Index: tracing/tracing/base/multi_dimensional_view_test.html |
diff --git a/tracing/tracing/base/multi_dimensional_view_test.html b/tracing/tracing/base/multi_dimensional_view_test.html |
index b669db03ac58922bce84cc01986fd3ee12c4dbe2..9aeb6d4b0402eec7bfa55c124b3c440e864f3c16 100644 |
--- a/tracing/tracing/base/multi_dimensional_view_test.html |
+++ b/tracing/tracing/base/multi_dimensional_view_test.html |
@@ -147,13 +147,14 @@ tr.b.unittest.testSuite(function() { |
return builder; |
} |
- function builderTest(testName, dimensions, valueCount, pathEntries, |
- expectedTopDownTreeViewStructure, expectedTopDownHeavyViewStructure, |
- expectedBottomUpHeavyViewStructure) { |
+ function builderTest(testName, dimensions, valueCount, setComplete, |
+ pathEntries, expectedTopDownTreeViewStructure, |
+ expectedTopDownHeavyViewStructure, expectedBottomUpHeavyViewStructure) { |
test('builder_' + testName, function() { |
// Create a multi-dimensional tree builder and add all paths to it. |
var builder = |
createBuilderWithEntries(dimensions, valueCount, pathEntries); |
+ builder.complete = setComplete; |
// Build and check the views. |
checkTree( |
@@ -425,6 +426,7 @@ tr.b.unittest.testSuite(function() { |
} |
builderTest('zeroDimensions_noPaths', 0 /* dimensions */, 1 /* valueCount */, |
+ false /* setComplete */, |
[], |
{ // Top-down tree view. |
title: [], |
@@ -462,6 +464,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('zeroDimensions_withPaths', 0 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [], values: [2], kind: SELF }, |
{ path: [], values: [3], kind: TOTAL }, |
@@ -503,6 +506,7 @@ tr.b.unittest.testSuite(function() { |
}); |
builderTest('oneDimension_noPaths', 1 /* dimensions */, 1 /* valueCount */, |
+ false /* setComplete */, |
[], |
{ // Top-down tree view. |
title: [undefined], |
@@ -546,6 +550,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('oneDimension_zeroLengthPath', 1 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [[]], values: [42], kind: SELF } |
], |
@@ -591,6 +596,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('oneDimension_noRecursion', 1 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A', 'B', 'C']], values: [10], kind: SELF }, |
{ path: [['A', 'B']], values: [20], kind: SELF }, |
@@ -1006,6 +1012,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('oneDimension_simpleRecursion', 1 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A']], values: [10], kind: SELF }, |
{ path: [['A', 'A', 'A']], values: [20], kind: SELF }, |
@@ -1222,6 +1229,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('oneDimension_complexRecursion', 1 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A', 'B', 'C']], values: [10], kind: SELF }, |
{ path: [['A', 'D', 'B', 'C', 'A', 'B', 'C']], values: [20], |
@@ -2474,6 +2482,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('oneDimension_withTotalSizes', 1 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['B', 'C']], values: [10], kind: TOTAL }, |
{ path: [['B', 'C', 'D']], values: [5], kind: TOTAL }, |
@@ -2781,6 +2790,7 @@ tr.b.unittest.testSuite(function() { |
}); |
builderTest('oneDimension_protoTitle', 1 /* dimensions */, 1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['__proto__']], values: [45], kind: SELF }, |
{ path: [['A']], values: [18], kind: SELF }, |
@@ -2955,6 +2965,7 @@ tr.b.unittest.testSuite(function() { |
// documentation). |
builderTest('oneDimension_documentationExample', 1 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A']], values: [10], kind: SELF }, |
{ path: [['A']], values: [30], kind: TOTAL }, |
@@ -3293,6 +3304,7 @@ tr.b.unittest.testSuite(function() { |
}); |
builderTest('twoDimensions_noPaths', 2 /* dimensions */, 1 /* valueCount */, |
+ false /* setComplete */, |
[], |
{ // Top-down tree view. |
title: [undefined, undefined], |
@@ -3341,6 +3353,7 @@ tr.b.unittest.testSuite(function() { |
// (MultiDimensionalViewNode.finalizeTotalValues_ documentation). |
builderTest('twoDimensions_totalCalculation', 2 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [[], []], values: [10], kind: SELF }, |
{ path: [['A'], []], values: [21], kind: SELF }, |
@@ -3573,6 +3586,7 @@ tr.b.unittest.testSuite(function() { |
// (MultiDimensionalViewNode documentation). |
builderTest('twoDimensions_documentationExample1', 2 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A', 'B'], ['T1', 'T2']], values: [1], kind: TOTAL }, |
{ path: [['A', 'B'], ['T1']], values: [2], kind: TOTAL }, |
@@ -4251,6 +4265,7 @@ tr.b.unittest.testSuite(function() { |
// (MultiDimensionalViewBuilder documentation). |
builderTest('twoDimensions_documentationExample2', 2 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['Saturday'], ['Cooking']], values: [1], kind: SELF }, |
{ path: [['Saturday'], ['Sports', 'Football']], values: [2], |
@@ -4954,6 +4969,7 @@ tr.b.unittest.testSuite(function() { |
// See https://goo.gl/KY7zVE. |
builderTest('twoDimensions_heapDumpExample', 2 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['BrMain', 'Init'], ['T']], values: [151], kind: TOTAL }, |
{ path: [['BrMain', 'Init'], ['W']], values: [83], kind: TOTAL }, |
@@ -6220,6 +6236,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('twoDimensions_oneRecursiveDimension', 2 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A', 'B'], []], values: [1500], kind: TOTAL }, |
{ path: [['A', 'B', 'A'], []], values: [200], kind: TOTAL }, |
@@ -7189,6 +7206,7 @@ tr.b.unittest.testSuite(function() { |
builderTest('twoDimensions_twoRecursiveDimensions', 2 /* dimensions */, |
1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A', 'A', 'B'], ['1', '2', '2']], values: [10], kind: SELF }, |
{ path: [['A', 'A'], ['1', '2']], values: [40], kind: TOTAL }, |
@@ -9531,6 +9549,7 @@ tr.b.unittest.testSuite(function() { |
}); |
builderTest('threeDimensions', 3 /* dimensions */, 1 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [['A', 'B'], ['C', 'D'], ['E', 'F']], values: [b(0)], |
kind: SELF }, |
@@ -12456,8 +12475,241 @@ tr.b.unittest.testSuite(function() { |
] |
}); |
+ builderTest('twoDimensionsComplete_totalCalculation', 2 /* dimensions */, |
+ 1 /* valueCount */, |
+ true /* setComplete */, |
+ [ |
+ { path: [[], []], values: [10], kind: SELF }, |
+ { path: [['A'], []], values: [21], kind: SELF }, |
+ { path: [['A'], []], values: [30], kind: TOTAL }, |
+ { path: [['B'], []], values: [25], kind: SELF }, |
+ { path: [['B'], []], values: [32], kind: TOTAL }, |
+ { path: [[], ['1']], values: [3], kind: SELF }, |
+ { path: [[], ['1']], values: [15], kind: TOTAL }, |
+ { path: [[], ['2']], values: [40], kind: SELF }, |
+ { path: [[], ['2']], values: [41], kind: TOTAL } |
+ ], |
+ { // Top-down tree view. |
+ title: [undefined, undefined], |
+ values: [ |
+ { |
+ total: 115, |
+ self: 10, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [ |
+ { // A, *. |
+ title: ['A', undefined], |
+ values: [ |
+ { |
+ total: 30, |
+ self: 21, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ }, |
+ { // B, *. |
+ title: ['B', undefined], |
+ values: [ |
+ { |
+ total: 32, |
+ self: 25, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ } |
+ ], |
+ [ |
+ { // *, 1. |
+ title: [undefined, '1'], |
+ values: [ |
+ { |
+ total: 15, |
+ self: 3, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ }, |
+ { // *, 2. |
+ title: [undefined, '2'], |
+ values: [ |
+ { |
+ total: 41, |
+ self: 40, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ } |
+ ] |
+ ] |
+ }, |
+ { // Top-down heavy view. |
+ title: [undefined, undefined], |
+ values: [ |
+ { |
+ total: 115, |
+ self: 10, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [ |
+ { // A, *. |
+ title: ['A', undefined], |
+ values: [ |
+ { |
+ total: 30, |
+ self: 21, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ }, |
+ { // B, *. |
+ title: ['B', undefined], |
+ values: [ |
+ { |
+ total: 32, |
+ self: 25, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ } |
+ ], |
+ [ |
+ { // *, 1. |
+ title: [undefined, '1'], |
+ values: [ |
+ { |
+ total: 15, |
+ self: 3, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ }, |
+ { // *, 2. |
+ title: [undefined, '2'], |
+ values: [ |
+ { |
+ total: 41, |
+ self: 40, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ } |
+ ] |
+ ] |
+ }, |
+ { // Bottom-up heavy view. |
+ title: [undefined, undefined], |
+ values: [ |
+ { |
+ total: 115, |
+ self: 10, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [ |
+ { // A, *. |
+ title: ['A', undefined], |
+ values: [ |
+ { |
+ total: 30, |
+ self: 21, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ }, |
+ { // B, *. |
+ title: ['B', undefined], |
+ values: [ |
+ { |
+ total: 32, |
+ self: 25, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ } |
+ ], |
+ [ |
+ { // *, 1. |
+ title: [undefined, '1'], |
+ values: [ |
+ { |
+ total: 15, |
+ self: 3, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ }, |
+ { // *, 2. |
+ title: [undefined, '2'], |
+ values: [ |
+ { |
+ total: 41, |
+ self: 40, |
+ totalState: EXACT |
+ } |
+ ], |
+ children: [ |
+ [], |
+ [] |
+ ] |
+ } |
+ ] |
+ ] |
+ }); |
+ |
+ |
builderTest('threeDimensions_twoValues', 3 /* dimensions */, |
2 /* valueCount */, |
+ false /* setComplete */, |
[ |
{ path: [[], [], []], values: [1, 89], kind: SELF }, |
{ path: [['A'], [], []], values: [2, 34], kind: SELF }, |