Index: tracing/tracing/metrics/tracing_metric_test.html |
diff --git a/tracing/tracing/metrics/tracing_metric_test.html b/tracing/tracing/metrics/tracing_metric_test.html |
index 1a5807ef09d3c7ff89cae34bafa4753a27fc9011..05c53413399a4404ccfef9cd4c8d65429090af4d 100644 |
--- a/tracing/tracing/metrics/tracing_metric_test.html |
+++ b/tracing/tracing/metrics/tracing_metric_test.html |
@@ -9,6 +9,7 @@ found in the LICENSE file. |
<link rel="import" href="/tracing/extras/importer/trace_event_importer.html"> |
<link rel="import" href="/tracing/metrics/tracing_metric.html"> |
<link rel="import" href="/tracing/metrics/value_set.html"> |
+<link rel="import" href="/tracing/model/memory_dump_test_utils.html"> |
<script> |
'use strict'; |
@@ -27,6 +28,12 @@ tr.b.unittest.testSuite(function() { |
}, 0); |
} |
+ function checkDurationValue(allValues, metricName, expected) { |
+ var values = allValues.getValuesWithName(metricName); |
+ assert.lengthOf(values, 1); |
+ assert.closeTo(1000 * values[0].numeric.value, expected, 0.1); |
+ } |
+ |
test('hasEventSizesInBytes', function() { |
var allValues = new tr.metrics.ValueSet(); |
var events = [ |
@@ -108,5 +115,58 @@ tr.b.unittest.testSuite(function() { |
} |
}); |
+ test('testMemoryInfraTracingMetrics', function() { |
+ var MEMORY_INFRA_TRACING_CATEGORY = |
+ tr.metrics.MEMORY_INFRA_TRACING_CATEGORY; |
+ var allValues = new tr.metrics.ValueSet(); |
+ var events = [ |
+ {name: 'OnMemoryDump', pid: 1, ts: 510, tid: 1, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp1'}, dur: 4}, // @suppress longLineCheck |
+ {name: 'OnMemoryDump', pid: 1, ts: 520, tid: 7, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp2'}, dur: 15}, // @suppress longLineCheck |
+ {name: 'OnMemoryDump', pid: 1, ts: 530, tid: 7, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp3'}, dur: 5}, // @suppress longLineCheck |
+ {name: 'OnMemoryDump', pid: 2, ts: 510, tid: 2, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp1'}, dur: 9}, // @suppress longLineCheck |
+ {name: 'OnMemoryDump', pid: 2, ts: 520, tid: 8, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp2'}, dur: 17}, // @suppress longLineCheck |
+ {name: 'OnMemoryDump', pid: 2, ts: 530, tid: 8, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp3'}, dur: 7}, // @suppress longLineCheck |
+ {name: 'OnMemoryDump', pid: 2, ts: 540, tid: 3, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {'dump_provider.name': 'mdp4'}, dur: 8}, // @suppress longLineCheck |
+ {name: 'ProcessDumps', pid: 1, ts: 550, tid: 1, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {guid: 4}, dur: 8}, // @suppress longLineCheck |
+ {name: 'ProcessDumps', pid: 2, ts: 540, tid: 2, ph: 'X', cat: MEMORY_INFRA_TRACING_CATEGORY, args: {guid: 4}, dur: 18}, // @suppress longLineCheck |
+ {name: 'thread_name', pid: 1, ts: 0, tid: 1, ph: 'M', cat: '__metadata', args: {name: 'CrBrowsermain'}}, // @suppress longLineCheck |
+ {name: 'thread_name', pid: 1, ts: 0, tid: 7, ph: 'M', cat: '__metadata', args: {name: 'MemoryInfra'}}, // @suppress longLineCheck |
+ {name: 'thread_name', pid: 2, ts: 0, tid: 2, ph: 'M', cat: '__metadata', args: {name: 'CrRendererMain'}}, // @suppress longLineCheck |
+ {name: 'thread_name', pid: 2, ts: 0, tid: 8, ph: 'M', cat: '__metadata', args: {name: 'MemoryInfra'}}, // @suppress longLineCheck |
+ {name: 'thread_name', pid: 2, ts: 0, tid: 3, ph: 'M', cat: '__metadata', args: {name: 'Compositor'}} // @suppress longLineCheck |
+ ]; |
+ |
+ var model = makeModel(JSON.stringify(events), true); |
+ tr.model.MemoryDumpTestUtils.addGlobalMemoryDump(model, 550); |
+ tr.metrics.tracingMetric(allValues, model); |
+ |
+ var memoryCategorySize = events.filter( |
+ slice => slice['cat'] === MEMORY_INFRA_TRACING_CATEGORY).reduce( |
+ (acc, slice) => acc + JSON.stringify(slice).length, 0); |
+ var totalSizeValue = allValues.getValuesWithName( |
+ 'Total trace size of memory-infra dumps in bytes'); |
+ assert.lengthOf(totalSizeValue, 1); |
+ assert.strictEqual(totalSizeValue[0].numeric.value, memoryCategorySize); |
+ var sizePerDumpValue = allValues.getValuesWithName( |
+ 'Average trace size of memory-infra dumps in bytes'); |
+ assert.lengthOf(sizePerDumpValue, 1); |
+ assert.strictEqual(sizePerDumpValue[0].numeric.value, memoryCategorySize); |
+ |
+ checkDurationValue(allValues, |
+ 'Average CPU overhead of mdp1 per memory-infra dump', 13); |
+ checkDurationValue(allValues, |
+ 'Average CPU overhead of mdp2 per memory-infra dump', 32); |
+ checkDurationValue(allValues, |
+ 'Average CPU overhead of mdp3 per memory-infra dump', 12); |
+ checkDurationValue(allValues, |
+ 'Average CPU overhead of mdp4 per memory-infra dump', 8); |
+ checkDurationValue(allValues, |
+ 'Average CPU overhead on non-memory-infra threads per memory-infra ' + |
+ 'dump', |
+ 47); |
+ checkDurationValue(allValues, |
+ 'Average CPU overhead on all threads per memory-infra dump', 91); |
+ }); |
+ |
}); |
</script> |