blob: 3050121e970cb5a19d1af31964856073e474d977 [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.
import unittest
from tracing.value import histogram
from tracing.value import histogram_grouping
from tracing.value.diagnostics import date_range
from tracing.value.diagnostics import generic_set
from tracing.value.diagnostics import reserved_infos
class HistogramGroupingUnittest(unittest.TestCase):
def testBooleanTags(self):
a_hist = histogram.Histogram('', 'count')
a_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
['video', 'audio'])
b_hist = histogram.Histogram('', 'count')
b_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
['audio'])
c_hist = histogram.Histogram('', 'count')
c_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
['video'])
d_hist = histogram.Histogram('', 'count')
d_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
[])
groupings = histogram_grouping.BuildFromTags(
['audio', 'video'], reserved_infos.STORY_TAGS.name)
self.assertEqual(len(groupings), 2)
groupings.sort(key=lambda g: g.key)
self.assertEqual(groupings[0].key, 'audioTag')
self.assertEqual(groupings[1].key, 'videoTag')
self.assertEqual(groupings[0].callback(a_hist), 'audio')
self.assertEqual(groupings[0].callback(b_hist), 'audio')
self.assertEqual(groupings[0].callback(c_hist), '~audio')
self.assertEqual(groupings[0].callback(d_hist), '~audio')
self.assertEqual(groupings[1].callback(a_hist), 'video')
self.assertEqual(groupings[1].callback(b_hist), '~video')
self.assertEqual(groupings[1].callback(c_hist), 'video')
self.assertEqual(groupings[1].callback(d_hist), '~video')
def testKeyValueTags(self):
a_hist = histogram.Histogram('', 'count')
a_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
['case:load'])
b_hist = histogram.Histogram('', 'count')
b_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
['case:browse'])
c_hist = histogram.Histogram('', 'count')
c_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
[])
d_hist = histogram.Histogram('', 'count')
d_hist.diagnostics[reserved_infos.STORY_TAGS.name] = generic_set.GenericSet(
['case:load', 'case:browse'])
groupings = histogram_grouping.BuildFromTags(
['case:load', 'case:browse'], reserved_infos.STORY_TAGS.name)
self.assertEqual(len(groupings), 1)
self.assertEqual(groupings[0].key, 'caseTag')
self.assertEqual(groupings[0].callback(a_hist), 'load')
self.assertEqual(groupings[0].callback(b_hist), 'browse')
self.assertEqual(groupings[0].callback(c_hist), '~case')
self.assertEqual(groupings[0].callback(d_hist), 'browse,load')
def testName(self):
self.assertEqual(histogram_grouping.HISTOGRAM_NAME.callback(
histogram.Histogram('test', 'count')), 'test')
def testDisplayLabel(self):
hist = histogram.Histogram('test', 'count')
self.assertEqual(histogram_grouping.DISPLAY_LABEL.callback(hist), 'Value')
hist.diagnostics[reserved_infos.LABELS.name] = generic_set.GenericSet(['H'])
self.assertEqual(histogram_grouping.DISPLAY_LABEL.callback(hist), 'H')
def testGenericSet(self):
grouping = histogram_grouping.GenericSetGrouping('foo')
hist = histogram.Histogram('', 'count')
self.assertEqual(grouping.callback(hist), '')
hist.diagnostics['foo'] = generic_set.GenericSet(['baz'])
self.assertEqual(grouping.callback(hist), 'baz')
hist.diagnostics['foo'] = generic_set.GenericSet(['baz', 'bar'])
self.assertEqual(grouping.callback(hist), 'bar,baz')
def testReservedGenericSetGroupings(self):
self.assertIsInstance(
histogram_grouping.GROUPINGS_BY_KEY[reserved_infos.ARCHITECTURES.name],
histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.BENCHMARKS.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.BOTS.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.BUILDS.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.MASTERS.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(
histogram_grouping.GROUPINGS_BY_KEY[reserved_infos.MEMORY_AMOUNTS.name],
histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.OS_NAMES.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.OS_VERSIONS.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(
histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.PRODUCT_VERSIONS.name],
histogram_grouping.GenericSetGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.STORIES.name], histogram_grouping.GenericSetGrouping)
self.assertIsInstance(
histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.STORYSET_REPEATS.name],
histogram_grouping.GenericSetGrouping)
def testDateRange(self):
grouping = histogram_grouping.DateRangeGrouping('foo')
hist = histogram.Histogram('', 'count')
self.assertEqual(grouping.callback(hist), '')
hist.diagnostics['foo'] = date_range.DateRange(15e11)
self.assertEqual(grouping.callback(hist), str(hist.diagnostics['foo']))
def testReservedDateRangeGroupings(self):
self.assertIsInstance(
histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.BENCHMARK_START.name],
histogram_grouping.DateRangeGrouping)
self.assertIsInstance(histogram_grouping.GROUPINGS_BY_KEY[
reserved_infos.TRACE_START.name], histogram_grouping.DateRangeGrouping)