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/base/math/range.html"> | 8 <link rel="import" href="/tracing/base/math/range.html"> |
9 <link rel="import" href="/tracing/base/unit.html"> | 9 <link rel="import" href="/tracing/base/unit.html"> |
10 <link rel="import" href="/tracing/value/diagnostics/diagnostic_map.html"> | 10 <link rel="import" href="/tracing/value/diagnostics/diagnostic_map.html"> |
(...skipping 24 matching lines...) Expand all Loading... |
35 histograms2.importDicts(histograms.asDicts()); | 35 histograms2.importDicts(histograms.asDicts()); |
36 assert.isDefined(histograms2.getHistogramNamed('foo')); | 36 assert.isDefined(histograms2.getHistogramNamed('foo')); |
37 const v = histograms2.getHistogramNamed('foo'); | 37 const v = histograms2.getHistogramNamed('foo'); |
38 assert.lengthOf(v.getBinForValue(10).diagnosticMaps, 1); | 38 assert.lengthOf(v.getBinForValue(10).diagnosticMaps, 1); |
39 const dm = v.getBinForValue(10).diagnosticMaps[0]; | 39 const dm = v.getBinForValue(10).diagnosticMaps[0]; |
40 assert.strictEqual(dm.size, 1); | 40 assert.strictEqual(dm.size, 1); |
41 assert.instanceOf(dm.get('bar'), tr.v.d.GenericSet); | 41 assert.instanceOf(dm.get('bar'), tr.v.d.GenericSet); |
42 assert.strictEqual(tr.b.getOnlyElement(dm.get('bar')), 'baz'); | 42 assert.strictEqual(tr.b.getOnlyElement(dm.get('bar')), 'baz'); |
43 }); | 43 }); |
44 | 44 |
45 test('relatedHistogramSetDiagnostic', function() { | |
46 const unit = tr.b.Unit.byName.unitlessNumber; | |
47 const a = new tr.v.Histogram('a', unit); | |
48 const b = new tr.v.Histogram('b', unit); | |
49 const c = new tr.v.Histogram('c', unit); | |
50 a.diagnostics.set('rvs', new tr.v.d.RelatedHistogramSet([b, c])); | |
51 | |
52 // Don't serialize c just yet. | |
53 const histograms = new tr.v.HistogramSet([a, b]); | |
54 | |
55 const sourceHistograms = histograms.sourceHistograms; | |
56 assert.strictEqual(tr.b.getOnlyElement(sourceHistograms), a); | |
57 | |
58 const histograms2 = new tr.v.HistogramSet(); | |
59 histograms2.importDicts(histograms.asDicts()); | |
60 histograms2.resolveRelatedHistograms(); | |
61 | |
62 const a2 = histograms2.getHistogramNamed('a'); | |
63 assert.isDefined(a2); | |
64 assert.strictEqual(a2.guid, a.guid); | |
65 assert.instanceOf(a2, tr.v.Histogram); | |
66 assert.notStrictEqual(a2, a); | |
67 | |
68 const b2 = histograms2.getHistogramNamed('b'); | |
69 assert.isDefined(b2); | |
70 assert.strictEqual(b2.guid, b.guid); | |
71 assert.instanceOf(b2, tr.v.Histogram); | |
72 assert.notStrictEqual(b2, b); | |
73 | |
74 const rvs2 = a2.diagnostics.get('rvs'); | |
75 assert.instanceOf(rvs2, tr.v.d.RelatedHistogramSet); | |
76 assert.lengthOf(rvs2, 2); | |
77 | |
78 // Assert that b and c are in a2's RelatedHistogramSet. | |
79 let rvs2vs = [...rvs2]; | |
80 let rvs2guids = rvs2vs.map(v => v.guid); | |
81 let b2i = rvs2guids.indexOf(b.guid); | |
82 assert.strictEqual(rvs2vs[b2i], b2); | |
83 | |
84 let c2i = rvs2guids.indexOf(c.guid); | |
85 assert.strictEqual(rvs2vs[c2i].guid, c.guid); | |
86 assert.instanceOf(rvs2vs[c2i], tr.v.d.HistogramRef); | |
87 | |
88 // Now serialize c and add it to histograms2. | |
89 // Related Histogram resolution is idempotent. | |
90 // Old histograms can refer to new histograms. | |
91 histograms2.importDicts([c.asDict()]); | |
92 histograms2.resolveRelatedHistograms(); | |
93 | |
94 const c2 = histograms2.getHistogramNamed('c'); | |
95 assert.isDefined(c2); | |
96 assert.strictEqual(c2.guid, c.guid); | |
97 assert.notStrictEqual(c2, c); | |
98 | |
99 // Now a real c2 Histogram should be in a2's RelatedHistogramSet. | |
100 rvs2vs = [...rvs2]; | |
101 rvs2guids = rvs2vs.map(v => v.guid); | |
102 b2i = rvs2guids.indexOf(b.guid); | |
103 c2i = rvs2guids.indexOf(c.guid); | |
104 assert.strictEqual(b2, rvs2vs[b2i]); | |
105 assert.strictEqual(c2, rvs2vs[c2i]); | |
106 }); | |
107 | |
108 test('relatedHistogramMapDiagnostic', function() { | 45 test('relatedHistogramMapDiagnostic', function() { |
109 const unit = tr.b.Unit.byName.unitlessNumber; | 46 const unit = tr.b.Unit.byName.unitlessNumber; |
110 const a = new tr.v.Histogram('a', unit); | 47 const a = new tr.v.Histogram('a', unit); |
111 const b = new tr.v.Histogram('b', unit); | 48 const b = new tr.v.Histogram('b', unit); |
112 const c = new tr.v.Histogram('c', unit); | 49 const c = new tr.v.Histogram('c', unit); |
113 const rvm = new tr.v.d.RelatedHistogramMap(); | 50 const rvm = new tr.v.d.RelatedHistogramMap(); |
114 rvm.set('y', b); | 51 rvm.set('y', b); |
115 rvm.set('z', c); | 52 rvm.set('z', c); |
116 a.diagnostics.set('rvm', rvm); | 53 a.diagnostics.set('rvm', rvm); |
117 | 54 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 // Now a real c2 Histogram should be in a2's RelatedHistogramMap. | 101 // Now a real c2 Histogram should be in a2's RelatedHistogramMap. |
165 assert.strictEqual(rvm2.get('z'), c2); | 102 assert.strictEqual(rvm2.get('z'), c2); |
166 }); | 103 }); |
167 | 104 |
168 test('sourceHistogramsWithSampleDiagnostic', function() { | 105 test('sourceHistogramsWithSampleDiagnostic', function() { |
169 const unit = tr.b.Unit.byName.unitlessNumber; | 106 const unit = tr.b.Unit.byName.unitlessNumber; |
170 const aHist = new tr.v.Histogram('a', unit); | 107 const aHist = new tr.v.Histogram('a', unit); |
171 aHist.addSample(1); | 108 aHist.addSample(1); |
172 | 109 |
173 const bHist = new tr.v.Histogram('b', tr.b.Unit.byName.unitlessNumber); | 110 const bHist = new tr.v.Histogram('b', tr.b.Unit.byName.unitlessNumber); |
174 bHist.addSample(1, {rvs: new tr.v.d.RelatedHistogramSet([aHist])}); | 111 const related = new tr.v.d.RelatedHistogramMap(); |
| 112 related.set('0', aHist); |
| 113 bHist.addSample(1, {related}); |
175 | 114 |
176 const histograms = new tr.v.HistogramSet([aHist, bHist]); | 115 const histograms = new tr.v.HistogramSet([aHist, bHist]); |
177 assert.strictEqual(tr.b.getOnlyElement(histograms.sourceHistograms), bHist); | 116 assert.strictEqual(tr.b.getOnlyElement(histograms.sourceHistograms), bHist); |
178 }); | 117 }); |
179 | 118 |
180 test('sharedDiagnostic', function() { | 119 test('sharedDiagnostic', function() { |
181 // Make a single Histogram, add a shared Diagnostic. | 120 // Make a single Histogram, add a shared Diagnostic. |
182 const aHist = new tr.v.Histogram('aHist', tr.b.Unit.byName.count); | 121 const aHist = new tr.v.Histogram('aHist', tr.b.Unit.byName.count); |
183 const histograms = new tr.v.HistogramSet([aHist]); | 122 const histograms = new tr.v.HistogramSet([aHist]); |
184 const diagnostic = new tr.v.d.GenericSet(['shared']); | 123 const diagnostic = new tr.v.d.GenericSet(['shared']); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 const groupings = histograms.buildGroupingsFromTags([ | 238 const groupings = histograms.buildGroupingsFromTags([ |
300 tr.v.d.RESERVED_NAMES.STORY_TAGS]); | 239 tr.v.d.RESERVED_NAMES.STORY_TAGS]); |
301 assert.lengthOf(groupings, 2); | 240 assert.lengthOf(groupings, 2); |
302 assert.strictEqual(groupings[0].callback(aHist), 'a'); | 241 assert.strictEqual(groupings[0].callback(aHist), 'a'); |
303 assert.strictEqual(groupings[0].callback(bHist), '~a'); | 242 assert.strictEqual(groupings[0].callback(bHist), '~a'); |
304 assert.strictEqual(groupings[1].callback(aHist), '~b'); | 243 assert.strictEqual(groupings[1].callback(aHist), '~b'); |
305 assert.strictEqual(groupings[1].callback(bHist), 'b'); | 244 assert.strictEqual(groupings[1].callback(bHist), 'b'); |
306 }); | 245 }); |
307 }); | 246 }); |
308 </script> | 247 </script> |
OLD | NEW |