| 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 |