Index: tools/telemetry/telemetry/value/merge_values_unittest.py |
diff --git a/tools/telemetry/telemetry/value/merge_values_unittest.py b/tools/telemetry/telemetry/value/merge_values_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7aec535a235ed9063d52d200ccf171b6d62a46f2 |
--- /dev/null |
+++ b/tools/telemetry/telemetry/value/merge_values_unittest.py |
@@ -0,0 +1,118 @@ |
+# 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 page_set |
+from telemetry.value import merge_values |
+from telemetry.value.list_of_scalar_values import ListOfScalarValues |
+from telemetry.value.scalar import ScalarValue |
+ |
+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 = [ScalarValue(page0, 'x', 'units', 1), |
+ ScalarValue(page1, 'x', 'units', 4), |
+ ScalarValue(page0, 'x', 'units', 2), |
+ ScalarValue(page1, 'x', 'units', 5)] |
+ |
+ merged_values = merge_values.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 = [ScalarValue(page0, 'x', 'units', 1)] |
+ |
+ # Sort the results so that their order is predictable for the subsequent |
+ # assertions. |
+ merged_values = merge_values.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 = [ScalarValue(page0, 'x', 'units', 1), |
+ ScalarValue(page1, 'x', 'units', 2), |
+ ScalarValue(page0, 'y', 'units', 10), |
+ ScalarValue(page1, 'y', 'units', 20)] |
+ |
+ # Sort the results so that their order is predictable for the subsequent |
+ # assertions. |
+ merged_values = merge_values.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 = [ScalarValue(page0, 'x', 'units', 1)] |
+ |
+ # Sort the results so that their order is predictable for the subsequent |
+ # assertions. |
+ merged_values = merge_values.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], ListOfScalarValues)) |
+ self.assertEquals([1], merged_values[0].values) |
+ |
+ def testDifferentPageMergeBasicIgnoreTraceName(self): |
+ page0 = self.pages[0] |
+ page1 = self.pages[1] |
+ |
+ all_values = [ScalarValue(page0, 'x.score', 'units', 1), |
+ ScalarValue(page1, 'y.score', 'units', 2)] |
+ # Sort the results so that their order is predictable for the subsequent |
+ # assertions. |
+ merged_values = merge_values.MergeLikeValuesFromDifferentPages( |
+ all_values, |
+ group_by_name_suffix=True) |
+ self.assertEquals(1, len(merged_values)) |
+ |
+ self.assertEquals((None, 'score'), |
+ (merged_values[0].page, merged_values[0].name)) |
+ self.assertEquals([1, 2], merged_values[0].values) |