Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(384)

Unified Diff: tools/telemetry/telemetry/page/value_unittest.py

Issue 27486002: Cleanup of page_measurement_results object (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 500d Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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))

Powered by Google App Engine
This is Rietveld 408576698