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('map', new tr.v.d.RelatedHistogramMap()); | 21 diagnostics.set('map', new tr.v.d.RelatedNameMap()); |
22 diagnostics.set('histogram breakdown', | |
23 new tr.v.d.RelatedHistogramBreakdown()); | |
24 | 22 |
25 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); | 23 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); |
26 assert.instanceOf(clone.get('generic'), tr.v.d.GenericSet); | 24 assert.instanceOf(clone.get('generic'), tr.v.d.GenericSet); |
27 assert.deepEqual(tr.b.getOnlyElement(clone.get('generic')), | 25 assert.deepEqual(tr.b.getOnlyElement(clone.get('generic')), |
28 tr.b.getOnlyElement(diagnostics.get('generic'))); | 26 tr.b.getOnlyElement(diagnostics.get('generic'))); |
29 assert.instanceOf(clone.get('breakdown'), tr.v.d.Breakdown); | 27 assert.instanceOf(clone.get('breakdown'), tr.v.d.Breakdown); |
30 assert.instanceOf(clone.get('events'), tr.v.d.RelatedEventSet); | 28 assert.instanceOf(clone.get('events'), tr.v.d.RelatedEventSet); |
31 assert.instanceOf(clone.get('map'), tr.v.d.RelatedHistogramMap); | 29 assert.instanceOf(clone.get('map'), tr.v.d.RelatedNameMap); |
32 assert.instanceOf(clone.get('histogram breakdown'), | |
33 tr.v.d.RelatedHistogramBreakdown); | |
34 }); | 30 }); |
35 | 31 |
36 test('cloneWithRef', function() { | 32 test('cloneWithRef', function() { |
37 const diagnostics = new tr.v.d.DiagnosticMap(); | 33 const diagnostics = new tr.v.d.DiagnosticMap(); |
38 diagnostics.set('ref', new tr.v.d.DiagnosticRef('abc')); | 34 diagnostics.set('ref', new tr.v.d.DiagnosticRef('abc')); |
39 | 35 |
40 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); | 36 const clone = tr.v.d.DiagnosticMap.fromDict(diagnostics.asDict()); |
41 assert.instanceOf(clone.get('ref'), tr.v.d.DiagnosticRef); | 37 assert.instanceOf(clone.get('ref'), tr.v.d.DiagnosticRef); |
42 assert.strictEqual(clone.get('ref').guid, 'abc'); | 38 assert.strictEqual(clone.get('ref').guid, 'abc'); |
43 }); | 39 }); |
(...skipping 16 matching lines...) Expand all Loading... |
60 duration: 1, | 56 duration: 1, |
61 }); | 57 }); |
62 event.parentContainer = { | 58 event.parentContainer = { |
63 sliceGroup: { | 59 sliceGroup: { |
64 stableId: 'fake_thread', | 60 stableId: 'fake_thread', |
65 slices: [event], | 61 slices: [event], |
66 }, | 62 }, |
67 }; | 63 }; |
68 const generic = new tr.v.d.GenericSet(['generic diagnostic']); | 64 const generic = new tr.v.d.GenericSet(['generic diagnostic']); |
69 const generic2 = new tr.v.d.GenericSet(['generic diagnostic 2']); | 65 const generic2 = new tr.v.d.GenericSet(['generic diagnostic 2']); |
70 const relatedMap = new tr.v.d.RelatedHistogramMap(); | 66 const relatedMap = new tr.v.d.RelatedNameMap(); |
71 const events = new tr.v.d.RelatedEventSet([event]); | 67 const events = new tr.v.d.RelatedEventSet([event]); |
72 | 68 |
73 // When Histograms are merged, first an empty clone is created with an empty | 69 // When Histograms are merged, first an empty clone is created with an empty |
74 // DiagnosticMap. | 70 // DiagnosticMap. |
75 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); | 71 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); |
76 | 72 |
77 const hist2 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 73 const hist2 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
78 hist2.diagnostics.set('a', generic); | 74 hist2.diagnostics.set('a', generic); |
79 hist.diagnostics.addDiagnostics(hist2.diagnostics); | 75 hist.diagnostics.addDiagnostics(hist2.diagnostics); |
80 assert.strictEqual(tr.b.getOnlyElement(generic), | 76 assert.strictEqual(tr.b.getOnlyElement(generic), |
(...skipping 14 matching lines...) Expand all Loading... |
95 // UnmergeableDiagnosticSet. | 91 // UnmergeableDiagnosticSet. |
96 const hist4 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 92 const hist4 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
97 hist4.diagnostics.set('a', relatedMap); | 93 hist4.diagnostics.set('a', relatedMap); |
98 hist.diagnostics.addDiagnostics(hist4.diagnostics); | 94 hist.diagnostics.addDiagnostics(hist4.diagnostics); |
99 assert.instanceOf(hist.diagnostics.get('a'), | 95 assert.instanceOf(hist.diagnostics.get('a'), |
100 tr.v.d.UnmergeableDiagnosticSet); | 96 tr.v.d.UnmergeableDiagnosticSet); |
101 let diagnostics = Array.from(hist.diagnostics.get('a')); | 97 let diagnostics = Array.from(hist.diagnostics.get('a')); |
102 assert.strictEqual( | 98 assert.strictEqual( |
103 tr.b.getOnlyElement(generic), tr.b.getOnlyElement(diagnostics[0])); | 99 tr.b.getOnlyElement(generic), tr.b.getOnlyElement(diagnostics[0])); |
104 // Don't test merging relationships here. | 100 // Don't test merging relationships here. |
105 assert.instanceOf(diagnostics[1], tr.v.d.RelatedHistogramMap); | 101 assert.instanceOf(diagnostics[1], tr.v.d.RelatedNameMap); |
106 | 102 |
107 // UnmergeableDiagnosticSets are mergeable. | 103 // UnmergeableDiagnosticSets are mergeable. |
108 const hist5 = new tr.v.Histogram('', tr.b.Unit.byName.count); | 104 const hist5 = new tr.v.Histogram('', tr.b.Unit.byName.count); |
109 hist5.diagnostics.set('a', new tr.v.d.UnmergeableDiagnosticSet([ | 105 hist5.diagnostics.set('a', new tr.v.d.UnmergeableDiagnosticSet([ |
110 events, generic2])); | 106 events, generic2])); |
111 hist.diagnostics.addDiagnostics(hist5.diagnostics); | 107 hist.diagnostics.addDiagnostics(hist5.diagnostics); |
112 assert.instanceOf(hist.diagnostics.get('a'), | 108 assert.instanceOf(hist.diagnostics.get('a'), |
113 tr.v.d.UnmergeableDiagnosticSet); | 109 tr.v.d.UnmergeableDiagnosticSet); |
114 diagnostics = Array.from(hist.diagnostics.get('a')); | 110 diagnostics = Array.from(hist.diagnostics.get('a')); |
115 assert.lengthOf(diagnostics, 3); | 111 assert.lengthOf(diagnostics, 3); |
116 assert.instanceOf(diagnostics[0], tr.v.d.GenericSet); | 112 assert.instanceOf(diagnostics[0], tr.v.d.GenericSet); |
117 assert.deepEqual(Array.from(diagnostics[0]), [...generic, ...generic2]); | 113 assert.deepEqual(Array.from(diagnostics[0]), [...generic, ...generic2]); |
118 assert.instanceOf(diagnostics[1], tr.v.d.RelatedHistogramMap); | 114 assert.instanceOf(diagnostics[1], tr.v.d.RelatedNameMap); |
119 assert.instanceOf(diagnostics[2], tr.v.d.CollectedRelatedEventSet); | 115 assert.instanceOf(diagnostics[2], tr.v.d.CollectedRelatedEventSet); |
120 }); | 116 }); |
121 | 117 |
122 test('mergeRelationships', function() { | 118 test('mergeRelationships', function() { |
123 const aHist0 = new tr.v.Histogram('a', tr.b.Unit.byName.count); | 119 const aHist0 = new tr.v.Histogram('a', tr.b.Unit.byName.count); |
124 const bHist0 = new tr.v.Histogram('b', tr.b.Unit.byName.count); | 120 const bHist0 = new tr.v.Histogram('b', tr.b.Unit.byName.count); |
125 | 121 |
126 let map = new tr.v.d.RelatedHistogramMap(); | 122 let map = new tr.v.d.RelatedNameMap(); |
127 map.set('c', bHist0); | 123 map.set('c', bHist0); |
128 aHist0.diagnostics.set('map', map); | 124 aHist0.diagnostics.set('map', map); |
129 let breakdown = new tr.v.d.RelatedHistogramBreakdown(); | |
130 breakdown.set('d', bHist0); | |
131 aHist0.diagnostics.set('breakdown', breakdown); | |
132 aHist0.diagnostics.set('unmergeable', | 125 aHist0.diagnostics.set('unmergeable', |
133 new tr.v.d.GenericSet(['unmergeable'])); | 126 new tr.v.d.GenericSet(['unmergeable'])); |
134 | 127 |
135 const histograms0 = new tr.v.HistogramSet([aHist0, bHist0]); | 128 const histograms0 = new tr.v.HistogramSet([aHist0, bHist0]); |
136 | 129 |
137 histograms0.addSharedDiagnostic( | 130 histograms0.addSharedDiagnostic( |
138 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['0'])); | 131 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['0'])); |
139 | 132 |
140 const aHist1 = new tr.v.Histogram('a', tr.b.Unit.byName.count); | 133 const aHist1 = new tr.v.Histogram('a', tr.b.Unit.byName.count); |
141 const bHist1 = new tr.v.Histogram('b', tr.b.Unit.byName.count); | 134 const bHist1 = new tr.v.Histogram('b', tr.b.Unit.byName.count); |
142 | 135 |
143 map = new tr.v.d.RelatedHistogramMap(); | 136 map = new tr.v.d.RelatedNameMap(); |
144 map.set('c', bHist1); | 137 map.set('c', bHist1); |
145 aHist1.diagnostics.set('map', map); | 138 aHist1.diagnostics.set('map', map); |
146 breakdown = new tr.v.d.RelatedHistogramBreakdown(); | 139 aHist1.diagnostics.set('unmergeable', new tr.v.d.RelatedNameMap()); |
147 breakdown.set('d', bHist1); | |
148 aHist1.diagnostics.set('breakdown', breakdown); | |
149 aHist1.diagnostics.set('unmergeable', new tr.v.d.RelatedHistogramMap()); | |
150 | 140 |
151 const histograms1 = new tr.v.HistogramSet([aHist1, bHist1]); | 141 const histograms1 = new tr.v.HistogramSet([aHist1, bHist1]); |
152 | 142 |
153 histograms1.addSharedDiagnostic( | 143 histograms1.addSharedDiagnostic( |
154 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['1'])); | 144 tr.v.d.RESERVED_NAMES.LABELS, new tr.v.d.GenericSet(['1'])); |
155 | 145 |
156 const aMergedHist = aHist0.clone(); | 146 const aMergedHist = aHist0.clone(); |
157 aMergedHist.addHistogram(aHist1); | 147 aMergedHist.addHistogram(aHist1); |
158 new tr.v.d.GroupingPath([]).addToHistogram(aMergedHist); | 148 new tr.v.d.GroupingPath([]).addToHistogram(aMergedHist); |
159 | 149 |
160 const bMergedHist = bHist0.clone(); | 150 const bMergedHist = bHist0.clone(); |
161 bMergedHist.addHistogram(bHist1); | 151 bMergedHist.addHistogram(bHist1); |
162 new tr.v.d.GroupingPath([]).addToHistogram(bMergedHist); | 152 new tr.v.d.GroupingPath([]).addToHistogram(bMergedHist); |
163 | 153 |
164 const mergedHists = new tr.v.HistogramSet([aMergedHist, bMergedHist]); | 154 const mergedHists = new tr.v.HistogramSet([aMergedHist, bMergedHist]); |
165 mergedHists.deduplicateDiagnostics(); | 155 mergedHists.deduplicateDiagnostics(); |
166 | 156 |
167 aMergedHist.diagnostics.mergeRelationships(aMergedHist); | 157 aMergedHist.diagnostics.mergeRelationships(aMergedHist); |
168 bMergedHist.diagnostics.mergeRelationships(bMergedHist); | 158 bMergedHist.diagnostics.mergeRelationships(bMergedHist); |
169 | 159 |
170 const aMergedMap = aMergedHist.diagnostics.get('map'); | 160 const aMergedMap = aMergedHist.diagnostics.get('map'); |
171 assert.instanceOf(aMergedMap, tr.v.d.RelatedHistogramMap); | 161 assert.instanceOf(aMergedMap, tr.v.d.RelatedNameMap); |
172 assert.lengthOf(aMergedMap, 1); | 162 assert.lengthOf(aMergedMap, 1); |
173 assert.strictEqual(bMergedHist, aMergedMap.get('c')); | 163 assert.strictEqual(bMergedHist, aMergedMap.get('c')); |
174 | 164 |
175 const aMergedBreakdown = aMergedHist.diagnostics.get('breakdown'); | |
176 assert.instanceOf(aMergedBreakdown, tr.v.d.RelatedHistogramBreakdown); | |
177 assert.lengthOf(aMergedBreakdown, 1); | |
178 assert.strictEqual(bMergedHist, aMergedBreakdown.get('d')); | |
179 | |
180 const aMergedUnmergeable = aMergedHist.diagnostics.get('unmergeable'); | 165 const aMergedUnmergeable = aMergedHist.diagnostics.get('unmergeable'); |
181 assert.instanceOf(aMergedUnmergeable, tr.v.d.UnmergeableDiagnosticSet); | 166 assert.instanceOf(aMergedUnmergeable, tr.v.d.UnmergeableDiagnosticSet); |
182 }); | 167 }); |
183 | 168 |
184 test('validateDiagnosticTypes', function() { | 169 test('validateDiagnosticTypes', function() { |
185 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); | 170 const hist = new tr.v.Histogram('', tr.b.Unit.byName.count); |
186 function addInvalidDiagnosticType() { | 171 function addInvalidDiagnosticType() { |
187 hist.diagnostics.set( | 172 hist.diagnostics.set( |
188 tr.v.d.RESERVED_NAMES.GROUPING_PATH, new tr.v.d.GenericSet()); | 173 tr.v.d.RESERVED_NAMES.GROUPING_PATH, new tr.v.d.GenericSet()); |
189 } | 174 } |
190 assert.throw(addInvalidDiagnosticType, Error, | 175 assert.throw(addInvalidDiagnosticType, Error, |
191 `Diagnostics named "${tr.v.d.RESERVED_NAMES.GROUPING_PATH}" must be ` + | 176 `Diagnostics named "${tr.v.d.RESERVED_NAMES.GROUPING_PATH}" must be ` + |
192 'GroupingPath, not GenericSet'); | 177 'GroupingPath, not GenericSet'); |
193 }); | 178 }); |
194 }); | 179 }); |
195 </script> | 180 </script> |
OLD | NEW |