| Index: tools/telemetry/telemetry/page/value_unittest.py
|
| diff --git a/tools/telemetry/telemetry/page/value_unittest.py b/tools/telemetry/telemetry/page/value_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..59993bd4ba66fc5eec25e2ddd48076f38368319d
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/page/value_unittest.py
|
| @@ -0,0 +1,241 @@
|
| +# Copyright (c) 2013 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 os
|
| +import unittest
|
| +
|
| +from telemetry.page import value
|
| +from telemetry.page import page_set
|
| +
|
| +class TestBase(unittest.TestCase):
|
| + def setUp(self):
|
| + self.page_set = page_set.PageSet.FromDict({
|
| + "description": "hello",
|
| + "archive_path": "foo.wpr",
|
| + "pages": [
|
| + {"url": "http://www.bar.com/"},
|
| + {"url": "http://www.baz.com/"},
|
| + {"url": "http://www.foo.com/"}
|
| + ]
|
| + }, os.path.dirname(__file__))
|
| +
|
| + @property
|
| + def pages(self):
|
| + return self.page_set.pages
|
| +
|
| +class MergeValueTest(TestBase):
|
| + def testSamePageMergeBasic(self):
|
| + page0 = self.pages[0]
|
| + page1 = self.pages[1]
|
| +
|
| + all_values = [value.ScalarValue(page0, 'x', 'units', 1),
|
| + value.ScalarValue(page1, 'x', 'units', 4),
|
| + value.ScalarValue(page0, 'x', 'units', 2),
|
| + value.ScalarValue(page1, 'x', 'units', 5)]
|
| +
|
| + merged_values = value.MergeLikeValuesFromSamePage(all_values)
|
| + # Sort the results so that their order is predictable for the subsequent
|
| + # assertions.
|
| + merged_values.sort(key=lambda x: x.page.url)
|
| +
|
| + self.assertEquals(2, len(merged_values))
|
| +
|
| + self.assertEquals((page0, 'x'),
|
| + (merged_values[0].page, merged_values[0].name))
|
| + self.assertEquals([1, 2], merged_values[0].values)
|
| +
|
| + self.assertEquals((page1, 'x'),
|
| + (merged_values[1].page, merged_values[1].name))
|
| + self.assertEquals([4, 5], merged_values[1].values)
|
| +
|
| + def testSamePageMergeOneValue(self):
|
| + page0 = self.pages[0]
|
| +
|
| + all_values = [value.ScalarValue(page0, 'x', 'units', 1)]
|
| +
|
| + # Sort the results so that their order is predictable for the subsequent
|
| + # assertions.
|
| + merged_values = value.MergeLikeValuesFromSamePage(all_values)
|
| + self.assertEquals(1, len(merged_values))
|
| + self.assertEquals(all_values[0].name, merged_values[0].name)
|
| + self.assertEquals(all_values[0].units, merged_values[0].units)
|
| +
|
| + def testDifferentPageMergeBasic(self):
|
| + page0 = self.pages[0]
|
| + page1 = self.pages[1]
|
| +
|
| + all_values = [value.ScalarValue(page0, 'x', 'units', 1),
|
| + value.ScalarValue(page1, 'x', 'units', 2),
|
| + value.ScalarValue(page0, 'y', 'units', 10),
|
| + value.ScalarValue(page1, 'y', 'units', 20)]
|
| +
|
| + # Sort the results so that their order is predictable for the subsequent
|
| + # assertions.
|
| + merged_values = value.MergeLikeValuesFromDifferentPages(all_values)
|
| + merged_values.sort(key=lambda x: x.name)
|
| + self.assertEquals(2, len(merged_values))
|
| +
|
| + self.assertEquals((None, 'x'),
|
| + (merged_values[0].page, merged_values[0].name))
|
| + self.assertEquals([1, 2], merged_values[0].values)
|
| +
|
| + self.assertEquals((None, 'y'),
|
| + (merged_values[1].page, merged_values[1].name))
|
| + self.assertEquals([10, 20], merged_values[1].values)
|
| +
|
| + def testDifferentPageMergeSingleValueStillMerges(self):
|
| + page0 = self.pages[0]
|
| +
|
| + all_values = [value.ScalarValue(page0, 'x', 'units', 1)]
|
| +
|
| + # Sort the results so that their order is predictable for the subsequent
|
| + # assertions.
|
| + merged_values = value.MergeLikeValuesFromDifferentPages(all_values)
|
| + self.assertEquals(1, len(merged_values))
|
| +
|
| + self.assertEquals((None, 'x'),
|
| + (merged_values[0].page, merged_values[0].name))
|
| + self.assertTrue(isinstance(merged_values[0], value.ListOfScalarValues))
|
| + self.assertEquals([1], merged_values[0].values)
|
| +
|
| +class ValueTest(TestBase):
|
| + def testCompat(self):
|
| + page0 = self.pages[0]
|
| + page1 = self.pages[0]
|
| +
|
| + a = value.Value(page0, 'x', 'unit', important=False)
|
| + b = value.Value(page1, 'x', 'unit', important=False)
|
| + self.assertTrue(b.IsMergableWith(a))
|
| +
|
| + def testIncompat(self):
|
| + page0 = self.pages[0]
|
| +
|
| + a = value.Value(page0, 'x', 'unit', important=False)
|
| + b = value.Value(page0, 'x', 'incompatUnit', important=False)
|
| + self.assertFalse(b.IsMergableWith(a))
|
| +
|
| + a = value.Value(page0, 'x', 'unit', important=False)
|
| + b = value.Value(page0, 'x', 'unit', important=True)
|
| + self.assertFalse(b.IsMergableWith(a))
|
| +
|
| + a = value.Value(page0, 'x', 'unit', important=False)
|
| + b = value.ScalarValue(page0, 'x', 'unit', 3, important=True)
|
| + self.assertFalse(b.IsMergableWith(a))
|
| +
|
| + def testBuildbotValueType(self):
|
| + page0 = self.pages[0]
|
| + v = value.ScalarValue(page0, 'x', 'unit', 3, important=True)
|
| + self.assertEquals('default', v.GetBuildbotDataType(
|
| + value.MERGED_PAGES_RESULT_OUTPUT_CONTEXT))
|
| + self.assertEquals([3], v.GetBuildbotValue())
|
| + self.assertEquals(('x_by_url', page0.display_name),
|
| + v.GetBuildbotMeasurementAndTraceNameForPerPageResult())
|
| +
|
| + v = value.ScalarValue(page0, 'x', 'unit', 3, important=False)
|
| + self.assertEquals(
|
| + 'unimportant',
|
| + v.GetBuildbotDataType(value.MERGED_PAGES_RESULT_OUTPUT_CONTEXT))
|
| +
|
| + def testScalarSamePageMerging(self):
|
| + page0 = self.pages[0]
|
| + v0 = value.ScalarValue(page0, 'x', 'unit', 1)
|
| + v1 = value.ScalarValue(page0, 'x', 'unit', 2)
|
| + self.assertTrue(v1.IsMergableWith(v0))
|
| +
|
| + vM = value.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
|
| + self.assertEquals(page0, vM.page)
|
| + self.assertEquals('x', vM.name)
|
| + self.assertEquals('unit', vM.units)
|
| + self.assertEquals(True, vM.important)
|
| + self.assertEquals([1, 2], vM.values)
|
| +
|
| + def testScalarDifferentSiteMerging(self):
|
| + page0 = self.pages[0]
|
| + page1 = self.pages[1]
|
| + v0 = value.ScalarValue(page0, 'x', 'unit', 1)
|
| + v1 = value.ScalarValue(page1, 'x', 'unit', 2)
|
| +
|
| + vM = value.ScalarValue.MergeLikeValuesFromDifferentPages([v0, v1])
|
| + self.assertEquals(None, vM.page)
|
| + self.assertEquals('x', vM.name)
|
| + self.assertEquals('unit', vM.units)
|
| + self.assertEquals(True, vM.important)
|
| + self.assertEquals([1, 2], vM.values)
|
| +
|
| + def testListSamePageMergingWithSamePageConcatenatePolicy(self):
|
| + page0 = self.pages[0]
|
| + v0 = value.ListOfScalarValues(
|
| + page0, 'x', 'unit',
|
| + [1,2], same_page_merge_policy=value.CONCATENATE)
|
| + v1 = value.ListOfScalarValues(
|
| + page0, 'x', 'unit',
|
| + [3,4], same_page_merge_policy=value.CONCATENATE)
|
| + self.assertTrue(v1.IsMergableWith(v0))
|
| +
|
| + vM = value.ListOfScalarValues.MergeLikeValuesFromSamePage([v0, v1])
|
| + self.assertEquals(page0, vM.page)
|
| + self.assertEquals('x', vM.name)
|
| + self.assertEquals('unit', vM.units)
|
| + self.assertEquals(value.CONCATENATE, vM.same_page_merge_policy)
|
| + self.assertEquals(True, vM.important)
|
| + self.assertEquals([1, 2, 3, 4], vM.values)
|
| +
|
| + def testListSamePageMergingWithPickFirstPolicy(self):
|
| + page0 = self.pages[0]
|
| + v0 = value.ListOfScalarValues(
|
| + page0, 'x', 'unit',
|
| + [1,2], same_page_merge_policy=value.PICK_FIRST)
|
| + v1 = value.ListOfScalarValues(
|
| + page0, 'x', 'unit',
|
| + [3,4], same_page_merge_policy=value.PICK_FIRST)
|
| + self.assertTrue(v1.IsMergableWith(v0))
|
| +
|
| + vM = value.ListOfScalarValues.MergeLikeValuesFromSamePage([v0, v1])
|
| + self.assertEquals(page0, vM.page)
|
| + self.assertEquals('x', vM.name)
|
| + self.assertEquals('unit', vM.units)
|
| + self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
|
| + self.assertEquals(True, vM.important)
|
| + self.assertEquals([1, 2], vM.values)
|
| +
|
| + def testListDifferentPageMerging(self):
|
| + page0 = self.pages[0]
|
| + v0 = value.ListOfScalarValues(
|
| + page0, 'x', 'unit',
|
| + [1, 2], same_page_merge_policy=value.PICK_FIRST)
|
| + v1 = value.ListOfScalarValues(
|
| + page0, 'x', 'unit',
|
| + [3, 4], same_page_merge_policy=value.PICK_FIRST)
|
| + self.assertTrue(v1.IsMergableWith(v0))
|
| +
|
| + vM = value.ListOfScalarValues.MergeLikeValuesFromDifferentPages([v0, v1])
|
| + self.assertEquals(None, vM.page)
|
| + self.assertEquals('x', vM.name)
|
| + self.assertEquals('unit', vM.units)
|
| + self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
|
| + self.assertEquals(True, vM.important)
|
| + self.assertEquals([1, 2, 3, 4], vM.values)
|
| +
|
| +
|
| + def testHistogramBasic(self):
|
| + page0 = self.pages[0]
|
| + histogram = value.HistogramValue(
|
| + page0, 'x', 'counts',
|
| + raw_value_json='{"buckets": [{"low": 1, "high": 2, "count": 1}]}',
|
| + important=False)
|
| + self.assertEquals(
|
| + ['{"buckets": [{"low": 1, "high": 2, "count": 1}]}'],
|
| + histogram.GetBuildbotValue())
|
| + self.assertEquals(1.5,
|
| + histogram.GetRepresentativeNumberValue())
|
| + self.assertEquals(
|
| + ['{"buckets": [{"low": 1, "high": 2, "count": 1}]}'],
|
| + histogram.GetBuildbotValue())
|
| +
|
| + self.assertEquals(
|
| + 'unimportant-histogram',
|
| + histogram.GetBuildbotDataType(value.SUMMARY_RESULT_OUTPUT_CONTEXT))
|
| + histogram.important = True
|
| + self.assertEquals(
|
| + 'histogram',
|
| + histogram.GetBuildbotDataType(value.SUMMARY_RESULT_OUTPUT_CONTEXT))
|
|
|