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

Side by Side Diff: tracing/tracing/value/diagnostics/diagnostic_map_test.html

Issue 3009553002: Refactor Histogram relationship diagnostics. (Closed)
Patch Set: Created 3 years, 3 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 unified diff | Download patch
OLDNEW
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
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
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>
OLDNEW
« no previous file with comments | « tracing/tracing/value/diagnostics/diagnostic_map.html ('k') | tracing/tracing/value/diagnostics/histogram_ref.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698