OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- | 2 <!-- |
3 Copyright (c) 2016 The Chromium Authors. All rights reserved. | 3 Copyright (c) 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/metrics/system_health/loading_metric.html"> | 9 <link rel="import" href="/tracing/metrics/system_health/loading_metric.html"> |
10 <link rel="import" href="/tracing/value/value_set.html"> | 10 <link rel="import" href="/tracing/value/value_set.html"> |
(...skipping 20 matching lines...) Expand all Loading... |
31 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ | 31 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ |
32 cat: 'blink.user_timing,rail', | 32 cat: 'blink.user_timing,rail', |
33 title: 'firstContentfulPaint', | 33 title: 'firstContentfulPaint', |
34 start: 1000, | 34 start: 1000, |
35 duration: 0.0, | 35 duration: 0.0, |
36 args: {frame: '0xdeadbeef'} | 36 args: {frame: '0xdeadbeef'} |
37 })); | 37 })); |
38 }); | 38 }); |
39 var values = new tr.v.ValueSet(); | 39 var values = new tr.v.ValueSet(); |
40 tr.metrics.sh.loadingMetric(values, model); | 40 tr.metrics.sh.loadingMetric(values, model); |
41 var numeric = values.valueDicts[0].numeric; | 41 var numeric = tr.b.getOnlyElement(values.getValuesNamed( |
| 42 'timeToFirstContentfulPaint')); |
42 assert.equal(1, numeric.running.count); | 43 assert.equal(1, numeric.running.count); |
43 assert.equal(800, numeric.running.mean); | 44 assert.equal(800, numeric.running.mean); |
44 }); | 45 }); |
45 | 46 |
46 test('timeToFirstContentfulPaintIgnoringWarmCache', function() { | 47 test('timeToFirstContentfulPaintIgnoringWarmCache', function() { |
47 var model = tr.c.TestUtils.newModel(function(model) { | 48 var model = tr.c.TestUtils.newModel(function(model) { |
48 var rendererProcess = model.getOrCreateProcess(1); | 49 var rendererProcess = model.getOrCreateProcess(1); |
49 var mainThread = rendererProcess.getOrCreateThread(2); | 50 var mainThread = rendererProcess.getOrCreateThread(2); |
50 mainThread.name = 'CrRendererMain'; | 51 mainThread.name = 'CrRendererMain'; |
51 | 52 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ | 95 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ |
95 cat: 'blink.user_timing,rail', | 96 cat: 'blink.user_timing,rail', |
96 title: 'firstContentfulPaint', | 97 title: 'firstContentfulPaint', |
97 start: 2400, | 98 start: 2400, |
98 duration: 0.0, | 99 duration: 0.0, |
99 args: {frame: '0xdeadbeef'} | 100 args: {frame: '0xdeadbeef'} |
100 })); | 101 })); |
101 }); | 102 }); |
102 var values = new tr.v.ValueSet(); | 103 var values = new tr.v.ValueSet(); |
103 tr.metrics.sh.loadingMetric(values, model); | 104 tr.metrics.sh.loadingMetric(values, model); |
104 var numeric = values.valueDicts[0].numeric; | 105 var numeric = tr.b.getOnlyElement(values.getValuesNamed( |
| 106 'timeToFirstContentfulPaint')); |
105 assert.equal(1, numeric.running.count); | 107 assert.equal(1, numeric.running.count); |
106 assert.equal(400, numeric.running.mean); | 108 assert.equal(400, numeric.running.mean); |
107 }); | 109 }); |
108 | 110 |
109 test('timeToFirstMeaningfulPaint', function() { | 111 test('timeToFirstMeaningfulPaint', function() { |
110 var model = tr.c.TestUtils.newModel(function(model) { | 112 var model = tr.c.TestUtils.newModel(function(model) { |
111 var rendererProcess = model.getOrCreateProcess(1); | 113 var rendererProcess = model.getOrCreateProcess(1); |
112 var mainThread = rendererProcess.getOrCreateThread(2); | 114 var mainThread = rendererProcess.getOrCreateThread(2); |
113 mainThread.name = 'CrRendererMain'; | 115 mainThread.name = 'CrRendererMain'; |
114 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ | 116 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ |
(...skipping 16 matching lines...) Expand all Loading... |
131 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ | 133 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ |
132 cat: 'loading', | 134 cat: 'loading', |
133 title: 'firstMeaningfulPaintCandidate', | 135 title: 'firstMeaningfulPaintCandidate', |
134 start: 1000, | 136 start: 1000, |
135 duration: 0.0, | 137 duration: 0.0, |
136 args: {frame: '0xdeadbeef'} | 138 args: {frame: '0xdeadbeef'} |
137 })); | 139 })); |
138 }); | 140 }); |
139 var values = new tr.v.ValueSet(); | 141 var values = new tr.v.ValueSet(); |
140 tr.metrics.sh.loadingMetric(values, model); | 142 tr.metrics.sh.loadingMetric(values, model); |
141 var ttfmpEntries = values.valueDicts.filter( | 143 var numeric = tr.b.getOnlyElement(values.getValuesNamed( |
142 (dict) => dict.name === 'timeToFirstMeaningfulPaint'); | 144 'timeToFirstMeaningfulPaint')); |
143 var numeric = ttfmpEntries[0].numeric; | |
144 assert.equal(1, numeric.running.count); | 145 assert.equal(1, numeric.running.count); |
145 assert.equal(800, numeric.running.mean); | 146 assert.equal(800, numeric.running.mean); |
146 }); | 147 }); |
147 | 148 |
148 test('timeToInteractive', function() { | 149 test('timeToInteractive', function() { |
149 // Our renderer thread would looks like | 150 // Our renderer thread would looks like |
150 // | 151 // |
151 // * * [ main thread busy ] * | 152 // * * [ main thread busy ] * |
152 // | | | | 153 // | | | |
153 // | | | | 154 // | | | |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 216 |
216 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ | 217 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ |
217 cat: 'toplevel', | 218 cat: 'toplevel', |
218 title: 'TaskQueueManager::ProcessTaskFromWorkQueue', | 219 title: 'TaskQueueManager::ProcessTaskFromWorkQueue', |
219 start: 22150, | 220 start: 22150, |
220 duration: 10, | 221 duration: 10, |
221 })); | 222 })); |
222 }); | 223 }); |
223 var values = new tr.v.ValueSet(); | 224 var values = new tr.v.ValueSet(); |
224 tr.metrics.sh.loadingMetric(values, model); | 225 tr.metrics.sh.loadingMetric(values, model); |
225 var ttiEntries = values.valueDicts.filter( | 226 var numeric = tr.b.getOnlyElement(values.getValuesNamed( |
226 (dict) => dict.name === 'timeToFirstInteractive'); | 227 'timeToFirstInteractive')); |
227 var numeric = ttiEntries[0].numeric; | |
228 assert.equal(1, numeric.running.count); | 228 assert.equal(1, numeric.running.count); |
229 assert.equal(15200, numeric.running.mean); | 229 assert.equal(15200, numeric.running.mean); |
230 var binsWithSampleDiagnosticMaps = numeric.centralBins.filter( | 230 var binsWithSampleDiagnosticMaps = numeric.allBins.filter( |
231 (bin) => bin.diagnosticMaps.length > 0); | 231 bin => bin.diagnosticMaps.length > 0); |
232 var diagnostic = binsWithSampleDiagnosticMaps[0].diagnosticMaps[0][ | 232 var diagnostic = binsWithSampleDiagnosticMaps[0].diagnosticMaps[0].get( |
233 'Navigation infos']; | 233 'Navigation infos'); |
| 234 assert.equal(diagnostic.value.start, 200); |
| 235 assert.equal(diagnostic.value.interactive, 15400); |
234 assert.equal(diagnostic.value.pid, 1984); | 236 assert.equal(diagnostic.value.pid, 1984); |
235 }); | 237 }); |
236 | 238 |
237 test('multiTimeToInteractive', function() { | 239 test('multiTimeToInteractive', function() { |
238 // Our renderer thread would looks like | 240 // Our renderer thread would looks like |
239 // | 241 // |
240 // * * [ main thread busy ] * * * | 242 // * * [ main thread busy ] * * * |
241 // | | | | | | 243 // | | | | | |
242 // | | | | | | 244 // | | | | | |
243 // v v v v v | 245 // v v v v v |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 | 321 |
320 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ | 322 mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({ |
321 cat: 'toplevel', | 323 cat: 'toplevel', |
322 title: 'TaskQueueManager::ProcessTaskFromWorkQueue', | 324 title: 'TaskQueueManager::ProcessTaskFromWorkQueue', |
323 start: 29150, | 325 start: 29150, |
324 duration: 10, | 326 duration: 10, |
325 })); | 327 })); |
326 }); | 328 }); |
327 var values = new tr.v.ValueSet(); | 329 var values = new tr.v.ValueSet(); |
328 tr.metrics.sh.loadingMetric(values, model); | 330 tr.metrics.sh.loadingMetric(values, model); |
329 var ttiEntries = values.valueDicts.filter( | 331 var numeric = tr.b.getOnlyElement(values.getValuesNamed( |
330 (dict) => dict.name === 'timeToFirstInteractive'); | 332 'timeToFirstInteractive')); |
331 var numeric = ttiEntries[0].numeric; | |
332 assert.equal(2, numeric.running.count); | 333 assert.equal(2, numeric.running.count); |
333 assert.equal(4000, numeric.running.min); | 334 assert.equal(4000, numeric.running.min); |
334 assert.equal(15200, numeric.running.max); | 335 assert.equal(15200, numeric.running.max); |
335 }); | 336 }); |
336 }); | 337 }); |
337 </script> | 338 </script> |
OLD | NEW |