blob: 556ca6c59020ebeaa1e07dd43fcd727a68618444 [file] [edit]
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import unittest
from six.moves import range # pylint: disable=redefined-builtin
from tracing.value import heap_profiler
from tracing.value import histogram
from tracing.value import histogram_set
class HeapProfilerUnitTest(unittest.TestCase):
def testHeapProfiler(self):
test_data = histogram_set.HistogramSet()
for i in range(10):
test_hist = histogram.Histogram('test', 'n%')
test_hist.AddSample(i / 10.0)
test_data.AddHistogram(test_hist)
histograms = heap_profiler.Profile(test_data)
set_size_hist = histograms.GetHistogramNamed('heap:HistogramSet')
self.assertEqual(set_size_hist.num_values, 1)
# The exact sizes of python objects can vary between platforms and versions.
self.assertGreater(set_size_hist.sum, 10000)
hist_size_hist = histograms.GetHistogramNamed('heap:Histogram')
self.assertEqual(hist_size_hist.num_values, 10)
self.assertGreater(hist_size_hist.sum, 10000)
related_names = hist_size_hist.diagnostics['types']
self.assertEqual(related_names.Get('HistogramBin'), 'heap:HistogramBin')
self.assertEqual(related_names.Get('DiagnosticMap'), 'heap:DiagnosticMap')
diagnostic_bin = [
hist_bin for hist_bin in hist_size_hist.bins
if len(hist_bin.diagnostic_maps)][-1]
properties = diagnostic_bin.diagnostic_maps[0]['properties']
types = diagnostic_bin.diagnostic_maps[0]['types']
self.assertGreater(len(properties), 3)
self.assertGreater(properties.Get('_bins'), 1000)
self.assertEqual(len(types), 4)
self.assertGreater(types.Get('HistogramBin'), 1000)
self.assertGreater(types.Get('(builtin types)'), 1000)
bin_size_hist = histograms.GetHistogramNamed('heap:HistogramBin')
self.assertEqual(bin_size_hist.num_values, 32)
self.assertGreater(bin_size_hist.sum, 1000)
diag_map_size_hist = histograms.GetHistogramNamed('heap:DiagnosticMap')
self.assertEqual(diag_map_size_hist.num_values, 10)
self.assertGreater(diag_map_size_hist.sum, 1000)
range_size_hist = histograms.GetHistogramNamed('heap:Range')
self.assertEqual(range_size_hist.num_values, 22)
self.assertGreater(range_size_hist.sum, 1000)
stats_size_hist = histograms.GetHistogramNamed('heap:RunningStatistics')
self.assertEqual(stats_size_hist.num_values, 10)
self.assertGreater(stats_size_hist.sum, 1000)