Chromium Code Reviews| Index: tracing/tracing/metrics/system_health/memory_metric_test.html |
| diff --git a/tracing/tracing/metrics/system_health/memory_metric_test.html b/tracing/tracing/metrics/system_health/memory_metric_test.html |
| index 500333d61f910a0eb14e9686e67c17f539e048c2..e880a2304eb8b6106b2fbc5e2a7f22bc3b42a6e1 100644 |
| --- a/tracing/tracing/metrics/system_health/memory_metric_test.html |
| +++ b/tracing/tracing/metrics/system_health/memory_metric_test.html |
| @@ -5,6 +5,8 @@ Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| +<link rel="import" href="/tracing/base/iteration_helpers.html"> |
| +<link rel="import" href="/tracing/base/range.html"> |
| <link rel="import" href="/tracing/core/test_utils.html"> |
| <link rel="import" href="/tracing/metrics/system_health/memory_metric.html"> |
| <link rel="import" href="/tracing/model/container_memory_dump.html"> |
| @@ -32,7 +34,8 @@ tr.b.unittest.testSuite(function() { |
| var sizeInBytes_smallerIsBetter = |
| tr.v.Unit.byName.sizeInBytes_smallerIsBetter; |
| - function memoryMetricTest(name, modelCallback, expectedNumerics) { |
| + function memoryMetricTest( |
| + name, modelCallback, opt_rangeOfInterest, expectedNumerics) { |
|
benjhayden
2016/07/07 17:31:32
Why not take |options| so that this helper doesn't
petrcermak
2016/07/08 12:14:55
Done. Great idea!
|
| test(name, function() { |
| // Create a model and a fake value list. |
| var model = tr.c.TestUtils.newModel(modelCallback); |
| @@ -46,8 +49,14 @@ tr.b.unittest.testSuite(function() { |
| } |
| }; |
| + var options; |
| + if (opt_rangeOfInterest) |
| + options = {rangeOfInterest: opt_rangeOfInterest}; |
| + else |
| + options = undefined; |
| + |
| // Run the memory metric on the model. |
| - tr.metrics.sh.memoryMetric(fakeValueList, model); |
| + tr.metrics.sh.memoryMetric(fakeValueList, model, options); |
| // Check that the names of the added values match expectations. |
| var actualValueNames = Object.keys(valueNameToValues).sort(); |
| @@ -158,13 +167,13 @@ tr.b.unittest.testSuite(function() { |
| memoryMetricTest('noDumps_noBrowser', function(model) { |
| createProcessWithName(model, 'Non-browser'); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| /* no values */ |
| }); |
| memoryMetricTest('noDumps_chrome', function(model) { |
| createChromeBrowserProcess(model); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:chrome:all_processes:dump_count:detailed': { |
| value: 0, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -190,7 +199,7 @@ tr.b.unittest.testSuite(function() { |
| createWebViewProcess(model); |
| createProcessWithName(model, 'Non-browser'); |
| createChromeBrowserProcess(model); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:chrome2:all_processes:dump_count:detailed': { |
| value: 0, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -251,7 +260,7 @@ tr.b.unittest.testSuite(function() { |
| addGlobalMemoryDump(model, 45, DETAILED); |
| addGlobalMemoryDump(model, 68, LIGHT); |
| addGlobalMemoryDump(model, 89, DETAILED); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:unknown_browser:all_processes:dump_count:detailed': { |
| value: 2, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -276,7 +285,7 @@ tr.b.unittest.testSuite(function() { |
| var p = createWebViewProcess(model); |
| addProcessMemoryDump(addGlobalMemoryDump(model, 45, LIGHT), p, 45); |
| addProcessMemoryDump(addGlobalMemoryDump(model, 68, LIGHT), p, 68); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:webview:all_processes:dump_count:detailed': { |
| value: 0, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -413,7 +422,7 @@ tr.b.unittest.testSuite(function() { |
| pmdGpu4.memoryAllocatorDumps = [ |
| newAllocatorDump(pmdGpu4, 'gpu', { 'memtrack_pss': 666 /* ignored */ }) |
| ]; |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:chrome:all_processes:dump_count:detailed': { |
| value: 0, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -732,7 +741,7 @@ tr.b.unittest.testSuite(function() { |
| 'bytecode_and_metadata_size': 35 |
| }) |
| ]; |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:unknown_browser:all_processes:dump_count:detailed': { |
| value: 3, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -1166,7 +1175,7 @@ tr.b.unittest.testSuite(function() { |
| new VMRegion(0xABCD, 1024, 0, '/dev/ashmem/dalvik-non moving space', |
| { 'privateDirtyResident': 150 }) |
| ]); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| 'memory:chrome:all_processes:dump_count:detailed': { |
| value: 2, |
| unit: unitlessNumber_smallerIsBetter, |
| @@ -1459,7 +1468,7 @@ tr.b.unittest.testSuite(function() { |
| addChildDump(memtrackDump, 'gl', { 'memtrack_pss': 2097152 }); |
| return [gpuDump]; |
| })(); |
| - }, { |
| + }, undefined /* opt_rangeOfInterest */, { |
| // WebView (GMD1, GMD6). |
| 'memory:webview:all_processes:dump_count:detailed': { |
| value: 1, |
| @@ -2454,6 +2463,244 @@ tr.b.unittest.testSuite(function() { |
| } |
| }); |
| + memoryMetricTest('rangeOfInterest', function(model) { |
| + var pChrome = createChromeBrowserProcess(model); |
| + var pWebView = createWebViewProcess(model); |
| + |
| + // Chrome: only the LIGHT dumps should be kept. |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 5, DETAILED, 4), pChrome); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 10, LIGHT, 2), pChrome); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 13, LIGHT, 3), pChrome); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 20, DETAILED, 1), pChrome); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 22, DETAILED, 5), pChrome); |
| + |
| + // WebView: only the DETAILED dumps should be kept. |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 5, LIGHT, 5), pWebView); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 10, LIGHT, 0), pWebView); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 11, DETAILED, 7), pWebView); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 19, DETAILED, 2), pWebView); |
| + addProcessMemoryDump(addGlobalMemoryDump(model, 21, LIGHT, 5), pWebView); |
| + |
| + // Unknown browser: only the LIGHT dump should be kept. |
| + addGlobalMemoryDump(model, 5, DETAILED, 3); |
| + addGlobalMemoryDump(model, 9, LIGHT, 12); |
| + addGlobalMemoryDump(model, 22, DETAILED, 3); |
| + }, tr.b.Range.fromExplicitRange(10, 20) /* opt_rangeOfInterest */, { |
| + 'memory:chrome:all_processes:dump_count': { |
| + value: 2, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of all memory dumps added by Chrome to the ' + |
| + 'trace' |
| + }, |
| + 'memory:chrome:all_processes:dump_count:detailed': { |
| + value: 0, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of detailed memory dumps added by Chrome to ' + |
| + 'the trace' |
| + }, |
| + 'memory:chrome:all_processes:dump_count:light': { |
| + value: 2, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of light memory dumps added by Chrome to ' + |
| + 'the trace' |
| + }, |
| + 'memory:chrome:all_processes:process_count': { |
| + value: [1, 1], |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of all processes in Chrome' |
| + }, |
| + 'memory:chrome:browser_process:process_count': { |
| + value: [1, 1], |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of browser processes in Chrome' |
| + }, |
| + |
| + 'memory:webview:all_processes:dump_count': { |
| + value: 2, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of all memory dumps added by WebView to the ' + |
| + 'trace' |
| + }, |
| + 'memory:webview:all_processes:dump_count:detailed': { |
| + value: 2, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of detailed memory dumps added by WebView ' + |
| + 'to the trace' |
| + }, |
| + 'memory:webview:all_processes:dump_count:light': { |
| + value: 0, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of light memory dumps added by WebView to ' + |
| + 'the trace' |
| + }, |
| + 'memory:webview:all_processes:process_count': { |
| + value: [1, 1], |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of all processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:private_dirty_size': { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total private dirty size reported by the OS for all ' + |
| + 'processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:proportional_resident_size': { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total proportional resident size (PSS) reported by the ' + |
| + 'OS for all processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:ashmem:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'private dirty size of ashmem in all processes in ' + |
| + 'WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:ashmem:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'proportional resident size (PSS) of ashmem in all ' + |
| + 'processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:java_heap:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'private dirty size of the Java heap in all processes ' + |
| + 'in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:java_heap:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'proportional resident size (PSS) of the Java heap in ' + |
| + 'all processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:native_heap:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'private dirty size of the native heap in all ' + |
| + 'processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:native_heap:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'proportional resident size (PSS) of the native heap ' + |
| + 'in all processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total private dirty size of system memory (RAM) used ' + |
| + 'by all processes in WebView' |
| + }, |
| + 'memory:webview:all_processes:reported_by_os:system_memory:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total proportional resident size (PSS) of system ' + |
| + 'memory (RAM) used by all processes in WebView' |
| + }, |
| + 'memory:webview:browser_process:process_count': { |
| + value: [1, 1], |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of browser processes in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:private_dirty_size': { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total private dirty size reported by the OS for the ' + |
| + 'browser process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total proportional resident size (PSS) reported by ' + |
| + 'the OS for the browser process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:ashmem:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'private dirty size of ashmem in the browser process ' + |
| + 'in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:ashmem:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'proportional resident size (PSS) of ashmem in the ' + |
| + 'browser process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:java_heap:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'private dirty size of the Java heap in the browser ' + |
| + 'process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:java_heap:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'proportional resident size (PSS) of the Java heap in ' + |
| + 'the browser process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:native_heap:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'private dirty size of the native heap in the browser ' + |
| + 'process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:native_heap:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'proportional resident size (PSS) of the native heap ' + |
| + 'in the browser process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:private_dirty_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total private dirty size of system memory (RAM) used ' + |
| + 'by the browser process in WebView' |
| + }, |
| + 'memory:webview:browser_process:reported_by_os:system_memory:proportional_resident_size': |
| + { |
| + value: [0, 0], |
| + unit: sizeInBytes_smallerIsBetter, |
| + description: 'total proportional resident size (PSS) of system ' + |
| + 'memory (RAM) used by the browser process in WebView' |
| + }, |
| + |
| + 'memory:unknown_browser:all_processes:dump_count': { |
| + value: 1, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of all memory dumps added by an unknown ' + |
| + 'browser to the trace' |
| + }, |
| + 'memory:unknown_browser:all_processes:dump_count:detailed': { |
| + value: 0, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of detailed memory dumps added by an ' + |
| + 'unknown browser to the trace' |
| + }, |
| + 'memory:unknown_browser:all_processes:dump_count:light': { |
| + value: 1, |
| + unit: unitlessNumber_smallerIsBetter, |
| + description: 'total number of light memory dumps added by an unknown ' + |
| + 'browser to the trace' |
| + } |
| + }); |
| + |
| test('dumpIdBrowserClashThrows', function() { |
| var model = tr.c.TestUtils.newModel(function(model) { |
| var pWebView = createWebViewProcess(model); |