| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <!-- | 2 <!-- |
| 3 Copyright 2016 The Chromium Authors. All rights reserved. | 3 Copyright 2016 The Chromium Authors. All rights reserved. |
| 4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
| 5 found in the LICENSE file. | 5 found in the LICENSE file. |
| 6 --> | 6 --> |
| 7 | 7 |
| 8 <link rel="import" href="/tracing/core/test_utils.html"> | 8 <link rel="import" href="/tracing/core/test_utils.html"> |
| 9 <link rel="import" href="/tracing/value/diagnostics/diagnostic_map.html"> | 9 <link rel="import" href="/tracing/value/diagnostics/diagnostic_map.html"> |
| 10 <link rel="import" href="/tracing/value/histogram_set.html"> | 10 <link rel="import" href="/tracing/value/histogram_set.html"> |
| 11 | 11 |
| 12 <script> | 12 <script> |
| 13 'use strict'; | 13 'use strict'; |
| 14 | 14 |
| 15 tr.b.unittest.testSuite(function() { | 15 tr.b.unittest.testSuite(function() { |
| 16 test('clone', function() { | 16 test('clone', function() { |
| 17 const diagnostics = new tr.v.d.DiagnosticMap(); | 17 const diagnostics = new tr.v.d.DiagnosticMap(); |
| 18 diagnostics.set('generic', new tr.v.d.GenericSet([{a: ['b', 3]}])); | 18 diagnostics.set('generic', new tr.v.d.GenericSet([{a: ['b', 3]}])); |
| 19 diagnostics.set('breakdown', new tr.v.d.Breakdown()); | 19 diagnostics.set('breakdown', new tr.v.d.Breakdown()); |
| 20 diagnostics.set('events', new tr.v.d.RelatedEventSet()); | 20 diagnostics.set('events', new tr.v.d.RelatedEventSet()); |
| 21 diagnostics.set('set', new tr.v.d.RelatedHistogramSet()); | |
| 22 diagnostics.set('map', new tr.v.d.RelatedHistogramMap()); | 21 diagnostics.set('map', new tr.v.d.RelatedHistogramMap()); |
| 23 diagnostics.set('histogram breakdown', | 22 diagnostics.set('histogram breakdown', |
| 24 new tr.v.d.RelatedHistogramBreakdown()); | 23 new tr.v.d.RelatedHistogramBreakdown()); |
| 25 | 24 |
| 26 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); | 25 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); |
| 27 assert.instanceOf(clone.get('generic'), tr.v.d.GenericSet); | 26 assert.instanceOf(clone.get('generic'), tr.v.d.GenericSet); |
| 28 assert.deepEqual(tr.b.getOnlyElement(clone.get('generic')), | 27 assert.deepEqual(tr.b.getOnlyElement(clone.get('generic')), |
| 29 tr.b.getOnlyElement(diagnostics.get('generic'))); | 28 tr.b.getOnlyElement(diagnostics.get('generic'))); |
| 30 assert.instanceOf(clone.get('breakdown'), tr.v.d.Breakdown); | 29 assert.instanceOf(clone.get('breakdown'), tr.v.d.Breakdown); |
| 31 assert.instanceOf(clone.get('events'), tr.v.d.RelatedEventSet); | 30 assert.instanceOf(clone.get('events'), tr.v.d.RelatedEventSet); |
| 32 assert.instanceOf(clone.get('set'), tr.v.d.RelatedHistogramSet); | |
| 33 assert.instanceOf(clone.get('map'), tr.v.d.RelatedHistogramMap); | 31 assert.instanceOf(clone.get('map'), tr.v.d.RelatedHistogramMap); |
| 34 assert.instanceOf(clone.get('histogram breakdown'), | 32 assert.instanceOf(clone.get('histogram breakdown'), |
| 35 tr.v.d.RelatedHistogramBreakdown); | 33 tr.v.d.RelatedHistogramBreakdown); |
| 36 }); | 34 }); |
| 37 | 35 |
| 38 test('cloneWithRef', function() { | 36 test('cloneWithRef', function() { |
| 39 const diagnostics = new tr.v.d.DiagnosticMap(); | 37 const diagnostics = new tr.v.d.DiagnosticMap(); |
| 40 diagnostics.set('ref', new tr.v.d.DiagnosticRef('abc')); | 38 diagnostics.set('ref', new tr.v.d.DiagnosticRef('abc')); |
| 41 | 39 |
| 42 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); | 40 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 62 duration: 1, | 60 duration: 1, |
| 63 }); | 61 }); |
| 64 event.parentContainer = { | 62 event.parentContainer = { |
| 65 sliceGroup: { | 63 sliceGroup: { |
| 66 stableId: 'fake_thread', | 64 stableId: 'fake_thread', |
| 67 slices: [event], | 65 slices: [event], |
| 68 }, | 66 }, |
| 69 }; | 67 }; |
| 70 const generic = new tr.v.d.GenericSet(['generic diagnostic']); | 68 const generic = new tr.v.d.GenericSet(['generic diagnostic']); |
| 71 const generic2 = new tr.v.d.GenericSet(['generic diagnostic 2']); | 69 const generic2 = new tr.v.d.GenericSet(['generic diagnostic 2']); |
| 72 const relatedSet = new tr.v.d.RelatedHistogramSet(); | 70 const relatedMap = new tr.v.d.RelatedHistogramMap(); |
| 73 const events = new tr.v.d.RelatedEventSet([event]); | 71 const events = new tr.v.d.RelatedEventSet([event]); |
| 74 | 72 |
| 75 // When Histograms are merged, first an empty clone is created with an empty | 73 // When Histograms are merged, first an empty clone is created with an empty |
| 76 // DiagnosticMap. | 74 // DiagnosticMap. |
| 77 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); | 75 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); |
| 78 | 76 |
| 79 const hist2 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 77 const hist2 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
| 80 hist2.diagnostics.set('a', generic); | 78 hist2.diagnostics.set('a', generic); |
| 81 hist.diagnostics.addDiagnostics(hist2.diagnostics); | 79 hist.diagnostics.addDiagnostics(hist2.diagnostics); |
| 82 assert.strictEqual(tr.b.getOnlyElement(generic), | 80 assert.strictEqual(tr.b.getOnlyElement(generic), |
| 83 tr.b.getOnlyElement(hist.diagnostics.get('a'))); | 81 tr.b.getOnlyElement(hist.diagnostics.get('a'))); |
| 84 | 82 |
| 85 // Separate keys are not merged. | 83 // Separate keys are not merged. |
| 86 const hist3 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 84 const hist3 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
| 87 hist3.diagnostics.set('b', generic2); | 85 hist3.diagnostics.set('b', generic2); |
| 88 hist.diagnostics.addDiagnostics(hist3.diagnostics); | 86 hist.diagnostics.addDiagnostics(hist3.diagnostics); |
| 89 assert.strictEqual( | 87 assert.strictEqual( |
| 90 tr.b.getOnlyElement(generic), | 88 tr.b.getOnlyElement(generic), |
| 91 tr.b.getOnlyElement(hist.diagnostics.get('a'))); | 89 tr.b.getOnlyElement(hist.diagnostics.get('a'))); |
| 92 assert.strictEqual( | 90 assert.strictEqual( |
| 93 tr.b.getOnlyElement(generic2), | 91 tr.b.getOnlyElement(generic2), |
| 94 tr.b.getOnlyElement(hist.diagnostics.get('b'))); | 92 tr.b.getOnlyElement(hist.diagnostics.get('b'))); |
| 95 | 93 |
| 96 // Merging unmergeable diagnostics should produce an | 94 // Merging unmergeable diagnostics should produce an |
| 97 // UnmergeableDiagnosticSet. | 95 // UnmergeableDiagnosticSet. |
| 98 const hist4 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 96 const hist4 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
| 99 hist4.diagnostics.set('a', relatedSet); | 97 hist4.diagnostics.set('a', relatedMap); |
| 100 hist.diagnostics.addDiagnostics(hist4.diagnostics); | 98 hist.diagnostics.addDiagnostics(hist4.diagnostics); |
| 101 assert.instanceOf(hist.diagnostics.get('a'), | 99 assert.instanceOf(hist.diagnostics.get('a'), |
| 102 tr.v.d.UnmergeableDiagnosticSet); | 100 tr.v.d.UnmergeableDiagnosticSet); |
| 103 let diagnostics = Array.from(hist.diagnostics.get('a')); | 101 let diagnostics = Array.from(hist.diagnostics.get('a')); |
| 104 assert.strictEqual( | 102 assert.strictEqual( |
| 105 tr.b.getOnlyElement(generic), tr.b.getOnlyElement(diagnostics[0])); | 103 tr.b.getOnlyElement(generic), tr.b.getOnlyElement(diagnostics[0])); |
| 106 // Don't test merging relationships here. | 104 // Don't test merging relationships here. |
| 107 assert.instanceOf(diagnostics[1], tr.v.d.RelatedHistogramSet); | 105 assert.instanceOf(diagnostics[1], tr.v.d.RelatedHistogramMap); |
| 108 | 106 |
| 109 // UnmergeableDiagnosticSets are mergeable. | 107 // UnmergeableDiagnosticSets are mergeable. |
| 110 const hist5 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 108 const hist5 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
| 111 hist5.diagnostics.set('a', new tr.v.d.UnmergeableDiagnosticSet([ | 109 hist5.diagnostics.set('a', new tr.v.d.UnmergeableDiagnosticSet([ |
| 112 events, generic2])); | 110 events, generic2])); |
| 113 hist.diagnostics.addDiagnostics(hist5.diagnostics); | 111 hist.diagnostics.addDiagnostics(hist5.diagnostics); |
| 114 assert.instanceOf(hist.diagnostics.get('a'), | 112 assert.instanceOf(hist.diagnostics.get('a'), |
| 115 tr.v.d.UnmergeableDiagnosticSet); | 113 tr.v.d.UnmergeableDiagnosticSet); |
| 116 diagnostics = Array.from(hist.diagnostics.get('a')); | 114 diagnostics = Array.from(hist.diagnostics.get('a')); |
| 117 assert.lengthOf(diagnostics, 3); | 115 assert.lengthOf(diagnostics, 3); |
| 118 assert.instanceOf(diagnostics[0], tr.v.d.GenericSet); | 116 assert.instanceOf(diagnostics[0], tr.v.d.GenericSet); |
| 119 assert.deepEqual(Array.from(diagnostics[0]), [...generic, ...generic2]); | 117 assert.deepEqual(Array.from(diagnostics[0]), [...generic, ...generic2]); |
| 120 assert.instanceOf(diagnostics[1], tr.v.d.RelatedHistogramSet); | 118 assert.instanceOf(diagnostics[1], tr.v.d.RelatedHistogramMap); |
| 121 assert.instanceOf(diagnostics[2], tr.v.d.CollectedRelatedEventSet); | 119 assert.instanceOf(diagnostics[2], tr.v.d.CollectedRelatedEventSet); |
| 122 }); | 120 }); |
| 123 | 121 |
| 124 test('mergeRelationships', function() { | 122 test('mergeRelationships', function() { |
| 125 const aHist0 = new tr.v.Histogram('a', tr.b.Unit.byName.count); | 123 const aHist0 = new tr.v.Histogram('a', tr.b.Unit.byName.count); |
| 126 const bHist0 = new tr.v.Histogram('b', tr.b.Unit.byName.count); | 124 const bHist0 = new tr.v.Histogram('b', tr.b.Unit.byName.count); |
| 127 | 125 |
| 128 aHist0.diagnostics.set('set', new tr.v.d.RelatedHistogramSet([bHist0])); | |
| 129 let map = new tr.v.d.RelatedHistogramMap(); | 126 let map = new tr.v.d.RelatedHistogramMap(); |
| 130 map.set('c', bHist0); | 127 map.set('c', bHist0); |
| 131 aHist0.diagnostics.set('map', map); | 128 aHist0.diagnostics.set('map', map); |
| 132 let breakdown = new tr.v.d.RelatedHistogramBreakdown(); | 129 let breakdown = new tr.v.d.RelatedHistogramBreakdown(); |
| 133 breakdown.set('d', bHist0); | 130 breakdown.set('d', bHist0); |
| 134 aHist0.diagnostics.set('breakdown', breakdown); | 131 aHist0.diagnostics.set('breakdown', breakdown); |
| 135 aHist0.diagnostics.set('unmergeable', | 132 aHist0.diagnostics.set('unmergeable', |
| 136 new tr.v.d.GenericSet(['unmergeable'])); | 133 new tr.v.d.GenericSet(['unmergeable'])); |
| 137 | 134 |
| 138 const histograms0 = new tr.v.HistogramSet([aHist0, bHist0]); | 135 const histograms0 = new tr.v.HistogramSet([aHist0, bHist0]); |
| 139 | 136 |
| 140 histograms0.addSharedDiagnostic( | 137 histograms0.addSharedDiagnostic( |
| 141 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['0'])); | 138 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['0'])); |
| 142 | 139 |
| 143 const aHist1 = new tr.v.Histogram('a', tr.b.Unit.byName.count); | 140 const aHist1 = new tr.v.Histogram('a', tr.b.Unit.byName.count); |
| 144 const bHist1 = new tr.v.Histogram('b', tr.b.Unit.byName.count); | 141 const bHist1 = new tr.v.Histogram('b', tr.b.Unit.byName.count); |
| 145 | 142 |
| 146 aHist1.diagnostics.set('set', new tr.v.d.RelatedHistogramSet([bHist1])); | |
| 147 map = new tr.v.d.RelatedHistogramMap(); | 143 map = new tr.v.d.RelatedHistogramMap(); |
| 148 map.set('c', bHist1); | 144 map.set('c', bHist1); |
| 149 aHist1.diagnostics.set('map', map); | 145 aHist1.diagnostics.set('map', map); |
| 150 breakdown = new tr.v.d.RelatedHistogramBreakdown(); | 146 breakdown = new tr.v.d.RelatedHistogramBreakdown(); |
| 151 breakdown.set('d', bHist1); | 147 breakdown.set('d', bHist1); |
| 152 aHist1.diagnostics.set('breakdown', breakdown); | 148 aHist1.diagnostics.set('breakdown', breakdown); |
| 153 aHist1.diagnostics.set('unmergeable', new tr.v.d.RelatedHistogramSet( | 149 aHist1.diagnostics.set('unmergeable', new tr.v.d.RelatedHistogramMap()); |
| 154 [bHist1])); | |
| 155 | 150 |
| 156 const histograms1 = new tr.v.HistogramSet([aHist1, bHist1]); | 151 const histograms1 = new tr.v.HistogramSet([aHist1, bHist1]); |
| 157 | 152 |
| 158 histograms1.addSharedDiagnostic( | 153 histograms1.addSharedDiagnostic( |
| 159 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['1'])); | 154 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['1'])); |
| 160 | 155 |
| 161 const aMergedHist = aHist0.clone(); | 156 const aMergedHist = aHist0.clone(); |
| 162 aMergedHist.addHistogram(aHist1); | 157 aMergedHist.addHistogram(aHist1); |
| 163 new tr.v.d.GroupingPath([]).addToHistogram(aMergedHist); | 158 new tr.v.d.GroupingPath([]).addToHistogram(aMergedHist); |
| 164 | 159 |
| 165 const bMergedHist = bHist0.clone(); | 160 const bMergedHist = bHist0.clone(); |
| 166 bMergedHist.addHistogram(bHist1); | 161 bMergedHist.addHistogram(bHist1); |
| 167 new tr.v.d.GroupingPath([]).addToHistogram(bMergedHist); | 162 new tr.v.d.GroupingPath([]).addToHistogram(bMergedHist); |
| 168 | 163 |
| 169 const mergedHists = new tr.v.HistogramSet([aMergedHist, bMergedHist]); | 164 const mergedHists = new tr.v.HistogramSet([aMergedHist, bMergedHist]); |
| 170 mergedHists.deduplicateDiagnostics(); | 165 mergedHists.deduplicateDiagnostics(); |
| 171 | 166 |
| 172 aMergedHist.diagnostics.mergeRelationships(aMergedHist); | 167 aMergedHist.diagnostics.mergeRelationships(aMergedHist); |
| 173 bMergedHist.diagnostics.mergeRelationships(bMergedHist); | 168 bMergedHist.diagnostics.mergeRelationships(bMergedHist); |
| 174 | 169 |
| 175 const aMergedSet = aMergedHist.diagnostics.get('set'); | |
| 176 assert.instanceOf(aMergedSet, tr.v.d.RelatedHistogramSet); | |
| 177 assert.strictEqual(bMergedHist, tr.b.getOnlyElement(aMergedSet)); | |
| 178 | |
| 179 const aMergedMap = aMergedHist.diagnostics.get('map'); | 170 const aMergedMap = aMergedHist.diagnostics.get('map'); |
| 180 assert.instanceOf(aMergedMap, tr.v.d.RelatedHistogramMap); | 171 assert.instanceOf(aMergedMap, tr.v.d.RelatedHistogramMap); |
| 181 assert.lengthOf(aMergedMap, 1); | 172 assert.lengthOf(aMergedMap, 1); |
| 182 assert.strictEqual(bMergedHist, aMergedMap.get('c')); | 173 assert.strictEqual(bMergedHist, aMergedMap.get('c')); |
| 183 | 174 |
| 184 const aMergedBreakdown = aMergedHist.diagnostics.get('breakdown'); | 175 const aMergedBreakdown = aMergedHist.diagnostics.get('breakdown'); |
| 185 assert.instanceOf(aMergedBreakdown, tr.v.d.RelatedHistogramBreakdown); | 176 assert.instanceOf(aMergedBreakdown, tr.v.d.RelatedHistogramBreakdown); |
| 186 assert.lengthOf(aMergedBreakdown, 1); | 177 assert.lengthOf(aMergedBreakdown, 1); |
| 187 assert.strictEqual(bMergedHist, aMergedBreakdown.get('d')); | 178 assert.strictEqual(bMergedHist, aMergedBreakdown.get('d')); |
| 188 | 179 |
| 189 const aMergedUnmergeable = aMergedHist.diagnostics.get('unmergeable'); | 180 const aMergedUnmergeable = aMergedHist.diagnostics.get('unmergeable'); |
| 190 assert.instanceOf(aMergedUnmergeable, tr.v.d.UnmergeableDiagnosticSet); | 181 assert.instanceOf(aMergedUnmergeable, tr.v.d.UnmergeableDiagnosticSet); |
| 191 }); | 182 }); |
| 192 | 183 |
| 193 test('validateDiagnosticTypes', function() { | 184 test('validateDiagnosticTypes', function() { |
| 194 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); | 185 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); |
| 195 function addInvalidDiagnosticType() { | 186 function addInvalidDiagnosticType() { |
| 196 hist.diagnostics.set( | 187 hist.diagnostics.set( |
| 197 tr.v.d.RESERVED_NAMES.GROUPING_PATH, new tr.v.d.GenericSet()); | 188 tr.v.d.RESERVED_NAMES.GROUPING_PATH, new tr.v.d.GenericSet()); |
| 198 } | 189 } |
| 199 assert.throw(addInvalidDiagnosticType, Error, | 190 assert.throw(addInvalidDiagnosticType, Error, |
| 200 `Diagnostics named "${tr.v.d.RESERVED_NAMES.GROUPING_PATH}" must be ` + | 191 `Diagnostics named "${tr.v.d.RESERVED_NAMES.GROUPING_PATH}" must be ` + |
| 201 'GroupingPath, not GenericSet'); | 192 'GroupingPath, not GenericSet'); |
| 202 }); | 193 }); |
| 203 }); | 194 }); |
| 204 </script> | 195 </script> |
| OLD | NEW |