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

Side by Side Diff: tracing/tracing/value/histogram_set_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/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 23 matching lines...) Expand all
34 histograms2.importDicts(histograms.asDicts()); 34 histograms2.importDicts(histograms.asDicts());
35 assert.isDefined(histograms2.getHistogramNamed('foo')); 35 assert.isDefined(histograms2.getHistogramNamed('foo'));
36 const v = histograms2.getHistogramNamed('foo'); 36 const v = histograms2.getHistogramNamed('foo');
37 assert.lengthOf(v.getBinForValue(10).diagnosticMaps, 1); 37 assert.lengthOf(v.getBinForValue(10).diagnosticMaps, 1);
38 const dm = v.getBinForValue(10).diagnosticMaps[0]; 38 const dm = v.getBinForValue(10).diagnosticMaps[0];
39 assert.strictEqual(dm.size, 1); 39 assert.strictEqual(dm.size, 1);
40 assert.instanceOf(dm.get('bar'), tr.v.d.GenericSet); 40 assert.instanceOf(dm.get('bar'), tr.v.d.GenericSet);
41 assert.strictEqual(tr.b.getOnlyElement(dm.get('bar')), 'baz'); 41 assert.strictEqual(tr.b.getOnlyElement(dm.get('bar')), 'baz');
42 }); 42 });
43 43
44 test('relatedHistogramMapDiagnostic', function() {
45 const unit = tr.b.Unit.byName.unitlessNumber;
46 const a = new tr.v.Histogram('a', unit);
47 const b = new tr.v.Histogram('b', unit);
48 const c = new tr.v.Histogram('c', unit);
49 const rvm = new tr.v.d.RelatedHistogramMap();
50 rvm.set('y', b);
51 rvm.set('z', c);
52 a.diagnostics.set('rvm', rvm);
53
54 // Don't serialize c just yet.
55 const histograms = new tr.v.HistogramSet([a, b]);
56
57 const sourceHistograms = histograms.sourceHistograms;
58 assert.strictEqual(tr.b.getOnlyElement(sourceHistograms), a);
59
60 const histograms2 = new tr.v.HistogramSet();
61 histograms2.importDicts(histograms.asDicts());
62 histograms2.resolveRelatedHistograms();
63
64 const a2 = histograms2.getHistogramNamed('a');
65 assert.isDefined(a2);
66 assert.strictEqual(a2.guid, a.guid);
67 assert.instanceOf(a2, tr.v.Histogram);
68 assert.notStrictEqual(a2, a);
69
70 const b2 = histograms2.getHistogramNamed('b');
71 assert.isDefined(b2);
72 assert.strictEqual(b2.guid, b.guid);
73 assert.instanceOf(b2, tr.v.Histogram);
74 assert.notStrictEqual(b2, b);
75
76 const rvm2 = a2.diagnostics.get('rvm');
77 assert.instanceOf(rvm2, tr.v.d.RelatedHistogramMap);
78 assert.lengthOf(rvm2, 2);
79
80 // Assert that b and c are in a2's RelatedHistogramMap.
81 // |c| should still be a HistogramRef since it wasn't in histograms2.
82 assert.strictEqual(rvm2.get('y'), b2);
83 assert.instanceOf(rvm2.get('z'), tr.v.d.HistogramRef);
84
85 // Now serialize c and add it to histograms2.
86 // Related Histogram resolution is idempotent.
87 // Old histograms can refer to new histograms.
88 histograms2.importDicts([c.asDict()]);
89 histograms2.resolveRelatedHistograms();
90
91 const c2 = histograms2.getHistogramNamed('c');
92 assert.isDefined(c2);
93 assert.strictEqual(c2.guid, c.guid);
94 assert.instanceOf(c2, tr.v.Histogram);
95 assert.notStrictEqual(c2, c);
96
97 // b2 should still be in a2's RelatedHistogramMap.
98 assert.strictEqual(rvm2.get('y'), b2);
99
100 // Now a real c2 Histogram should be in a2's RelatedHistogramMap.
101 assert.strictEqual(rvm2.get('z'), c2);
102 });
103
104 test('sourceHistogramsWithSampleDiagnostic', function() {
105 const unit = tr.b.Unit.byName.unitlessNumber;
106 const aHist = new tr.v.Histogram('a', unit);
107 aHist.addSample(1);
108
109 const bHist = new tr.v.Histogram('b', tr.b.Unit.byName.unitlessNumber);
110 const related = new tr.v.d.RelatedHistogramMap();
111 related.set('0', aHist);
112 bHist.addSample(1, {related});
113
114 const histograms = new tr.v.HistogramSet([aHist, bHist]);
115 assert.strictEqual(tr.b.getOnlyElement(histograms.sourceHistograms), bHist);
116 });
117
118 test('sharedDiagnostic', function() { 44 test('sharedDiagnostic', function() {
119 // Make a single Histogram, add a shared Diagnostic. 45 // Make a single Histogram, add a shared Diagnostic.
120 const aHist = new tr.v.Histogram('aHist', tr.b.Unit.byName.count); 46 const aHist = new tr.v.Histogram('aHist', tr.b.Unit.byName.count);
121 const histograms = new tr.v.HistogramSet([aHist]); 47 const histograms = new tr.v.HistogramSet([aHist]);
122 const diagnostic = new tr.v.d.GenericSet(['shared']); 48 const diagnostic = new tr.v.d.GenericSet(['shared']);
123 histograms.addSharedDiagnostic('generic', diagnostic); 49 histograms.addSharedDiagnostic('generic', diagnostic);
124 50
125 // Serializing a single Histogram with a single shared diagnostic should 51 // Serializing a single Histogram with a single shared diagnostic should
126 // produce 2 dicts. 52 // produce 2 dicts.
127 const dicts = histograms.asDicts(); 53 const dicts = histograms.asDicts();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 const groupings = histograms.buildGroupingsFromTags([ 163 const groupings = histograms.buildGroupingsFromTags([
238 tr.v.d.RESERVED_NAMES.STORY_TAGS]); 164 tr.v.d.RESERVED_NAMES.STORY_TAGS]);
239 assert.lengthOf(groupings, 2); 165 assert.lengthOf(groupings, 2);
240 assert.strictEqual(groupings[0].callback(aHist), 'a'); 166 assert.strictEqual(groupings[0].callback(aHist), 'a');
241 assert.strictEqual(groupings[0].callback(bHist), '~a'); 167 assert.strictEqual(groupings[0].callback(bHist), '~a');
242 assert.strictEqual(groupings[1].callback(aHist), '~b'); 168 assert.strictEqual(groupings[1].callback(aHist), '~b');
243 assert.strictEqual(groupings[1].callback(bHist), 'b'); 169 assert.strictEqual(groupings[1].callback(bHist), 'b');
244 }); 170 });
245 }); 171 });
246 </script> 172 </script>
OLDNEW
« no previous file with comments | « tracing/tracing/value/histogram_set_hierarchy.html ('k') | tracing/tracing/value/histogram_set_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698