summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authoreakuefner <eakuefner@chromium.org>2015-04-23 14:35:52 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-23 21:36:02 +0000
commitc2b8def1e6c063f1b0065795e778d9002db2585d (patch)
tree79d600f23ec4a5c1007e7371479bb42b18b753b1 /tools
parent3554043c2d1e72e1a8f7eb9250d3d7065ff3d2ec (diff)
downloadchromium_src-c2b8def1e6c063f1b0065795e778d9002db2585d.zip
chromium_src-c2b8def1e6c063f1b0065795e778d9002db2585d.tar.gz
chromium_src-c2b8def1e6c063f1b0065795e778d9002db2585d.tar.bz2
[Telemetry] Get rid of buildbot_output_formatter_unittest
This CL rewrites the unit tests for buildbot_output_formatter to pertain only to the summary module, in preparation for removing buildbot_output_formatter. BUG=477056 R=nednguyen Review URL: https://codereview.chromium.org/1092593004 Cr-Commit-Position: refs/heads/master@{#326650}
Diffstat (limited to 'tools')
-rw-r--r--tools/telemetry/telemetry/results/buildbot_output_formatter_unittest.py443
-rw-r--r--tools/telemetry/telemetry/value/__init__.py6
-rw-r--r--tools/telemetry/telemetry/value/summary_unittest.py324
3 files changed, 326 insertions, 447 deletions
diff --git a/tools/telemetry/telemetry/results/buildbot_output_formatter_unittest.py b/tools/telemetry/telemetry/results/buildbot_output_formatter_unittest.py
deleted file mode 100644
index 835f589..0000000
--- a/tools/telemetry/telemetry/results/buildbot_output_formatter_unittest.py
+++ /dev/null
@@ -1,443 +0,0 @@
-# Copyright 2014 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
-
-from telemetry import page as page_module
-from telemetry.page import page_set
-from telemetry.results import base_test_results_unittest
-from telemetry.results import buildbot_output_formatter
-from telemetry.results import page_test_results
-from telemetry.value import failure
-from telemetry.value import histogram
-from telemetry.value import list_of_scalar_values
-from telemetry.value import scalar
-
-
-def _MakePageSet():
- ps = page_set.PageSet(file_path=os.path.dirname(__file__))
- ps.AddUserStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir))
- ps.AddUserStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir))
- ps.AddUserStory(page_module.Page('http://www.baz.com/', ps, ps.base_dir))
- return ps
-
-class BuildbotOutputFormatterTest(
- base_test_results_unittest.BaseTestResultsUnittest):
- def setUp(self):
- self._test_output_stream = base_test_results_unittest.TestOutputStream()
-
- def test_basic_summary(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 7))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['RESULT a: http___www.bar.com_= 7 seconds\n',
- 'RESULT a: http___www.foo.com_= 3 seconds\n',
- '*RESULT a: a= [3,7] seconds\nAvg a: 5.000000seconds\n' +
- 'Sd a: 2.828427seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_basic_summary_with_only_one_page(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['*RESULT a: a= 3 seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_basic_summary_nonuniform_results(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.AddValue(
- scalar.ScalarValue(test_page_set.pages[0], 'b', 'seconds', 10))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 3))
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'b', 'seconds', 10))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- measurement_results.WillRunPage(test_page_set.pages[2])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[2], 'a', 'seconds', 7))
- # Note, page[2] does not report a 'b' metric.
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['RESULT a: http___www.bar.com_= 3 seconds\n',
- 'RESULT a: http___www.baz.com_= 7 seconds\n',
- 'RESULT a: http___www.foo.com_= 3 seconds\n',
- '*RESULT a: a= [3,3,7] seconds\nAvg a: 4.333333seconds\n' +
- 'Sd a: 2.309401seconds\n',
- 'RESULT b: http___www.bar.com_= 10 seconds\n',
- 'RESULT b: http___www.foo.com_= 10 seconds\n',
- '*RESULT b: b= [10,10] seconds\nAvg b: 10.000000seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_basic_summary_pass_and_fail_page(self):
- """If a page failed, only print summary for individual pages."""
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.AddValue(
- failure.FailureValue.FromMessage(test_page_set.pages[0], 'message'))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 7))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['RESULT a: http___www.bar.com_= 7 seconds\n',
- 'RESULT a: http___www.foo.com_= 3 seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 1 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_repeated_pageset_one_iteration_one_page_fails(self):
- """Page fails on one iteration, no averaged results should print."""
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 7))
- measurement_results.AddValue(
- failure.FailureValue.FromMessage(test_page_set.pages[1], 'message'))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 4))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 8))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['RESULT a: http___www.bar.com_= [7,8] seconds\n' +
- 'Avg a: 7.500000seconds\n' +
- 'Sd a: 0.707107seconds\n',
- 'RESULT a: http___www.foo.com_= [3,4] seconds\n' +
- 'Avg a: 3.500000seconds\n' +
- 'Sd a: 0.707107seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 1 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_repeated_pageset(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 7))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 4))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 8))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['RESULT a: http___www.bar.com_= [7,8] seconds\n' +
- 'Avg a: 7.500000seconds\n' +
- 'Sd a: 0.707107seconds\n',
- 'RESULT a: http___www.foo.com_= [3,4] seconds\n' +
- 'Avg a: 3.500000seconds\n' +
- 'Sd a: 0.707107seconds\n',
- '*RESULT a: a= [3,7,4,8] seconds\n' +
- 'Avg a: 5.500000seconds\n' +
- 'Sd a: 2.380476seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n'
- ]
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_repeated_pages(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'a', 'seconds', 4))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 7))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'a', 'seconds', 8))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = ['RESULT a: http___www.bar.com_= [7,8] seconds\n' +
- 'Avg a: 7.500000seconds\n' +
- 'Sd a: 0.707107seconds\n',
- 'RESULT a: http___www.foo.com_= [3,4] seconds\n' +
- 'Avg a: 3.500000seconds\n' +
- 'Sd a: 0.707107seconds\n',
- '*RESULT a: a= [3,4,7,8] seconds\n' +
- 'Avg a: 5.500000seconds\n' +
- 'Sd a: 2.380476seconds\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: ' +
- 'num_errored= 0 count\n'
- ]
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_overall_results_trace_tag(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.AddSummaryValue(
- scalar.ScalarValue(None, 'a', 'seconds', 1))
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'b', 'seconds', 2))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'b', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- measurement_results.AddSummaryValue(
- scalar.ScalarValue(None, 'c', 'seconds', 4))
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream, trace_tag='_ref')
- formatter.Format(measurement_results)
-
- expected = [
- '*RESULT b: b_ref= [2,3] seconds\n' +
- 'Avg b: 2.500000seconds\nSd b: 0.707107seconds\n',
- '*RESULT a: a_ref= 1 seconds\n',
- '*RESULT c: c_ref= 4 seconds\n',
- 'RESULT telemetry_page_measurement_results: num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
-
- def test_overall_results_page_runs_twice(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
-
- measurement_results.AddSummaryValue(
- scalar.ScalarValue(None, 'a', 'seconds', 1))
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'b', 'seconds', 2))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'b', 'seconds', 3))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = [
- 'RESULT b: http___www.foo.com_= [2,3] seconds\n' +
- 'Avg b: 2.500000seconds\nSd b: 0.707107seconds\n',
- '*RESULT b: b= [2,3] seconds\n' +
- 'Avg b: 2.500000seconds\nSd b: 0.707107seconds\n',
- '*RESULT a: a= 1 seconds\n',
- 'RESULT telemetry_page_measurement_results: num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_unimportant_results(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
-
- measurement_results.AddSummaryValue(
- scalar.ScalarValue(None, 'a', 'seconds', 1, important=False))
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[0], 'b', 'seconds', 2, important=False))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(scalar.ScalarValue(
- test_page_set.pages[1], 'b', 'seconds', 3, important=False))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- self.assertEquals(
- self._test_output_stream.output_data,
- ['RESULT b: http___www.bar.com_= 3 seconds\n',
- 'RESULT b: http___www.foo.com_= 2 seconds\n',
- 'RESULT b: b= [2,3] seconds\n' +
- 'Avg b: 2.500000seconds\nSd b: 0.707107seconds\n',
- 'RESULT a: a= 1 seconds\n',
- 'RESULT telemetry_page_measurement_results: num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: num_errored= 0 count\n'])
-
- def test_list_value(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
-
- measurement_results.AddSummaryValue(
- list_of_scalar_values.ListOfScalarValues(None, 'a', 'seconds', [1, 1]))
-
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(list_of_scalar_values.ListOfScalarValues(
- test_page_set.pages[0], 'b', 'seconds', [2, 2]))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(list_of_scalar_values.ListOfScalarValues(
- test_page_set.pages[1], 'b', 'seconds', [3, 3]))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = [
- 'RESULT b: http___www.bar.com_= [3,3] seconds\n' +
- 'Avg b: 3.000000seconds\n',
- 'RESULT b: http___www.foo.com_= [2,2] seconds\n' +
- 'Avg b: 2.000000seconds\n',
- '*RESULT b: b= [2,2,3,3] seconds\nAvg b: 2.500000seconds\n' +
- 'Sd b: 0.577350seconds\n',
- '*RESULT a: a= [1,1] seconds\nAvg a: 1.000000seconds\n',
- 'RESULT telemetry_page_measurement_results: num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
-
- def test_histogram(self):
- test_page_set = _MakePageSet()
-
- measurement_results = page_test_results.PageTestResults()
- measurement_results.WillRunPage(test_page_set.pages[0])
- measurement_results.AddValue(histogram.HistogramValue(
- test_page_set.pages[0], 'a', 'units',
- raw_value_json='{"buckets": [{"low": 1, "high": 2, "count": 1}]}',
- important=False))
- measurement_results.DidRunPage(test_page_set.pages[0])
-
- measurement_results.WillRunPage(test_page_set.pages[1])
- measurement_results.AddValue(histogram.HistogramValue(
- test_page_set.pages[1], 'a', 'units',
- raw_value_json='{"buckets": [{"low": 2, "high": 3, "count": 1}]}',
- important=False))
- measurement_results.DidRunPage(test_page_set.pages[1])
-
- formatter = buildbot_output_formatter.BuildbotOutputFormatter(
- self._test_output_stream)
- formatter.Format(measurement_results)
-
- expected = [
- 'HISTOGRAM a: http___www.bar.com_= ' +
- '{"buckets": [{"low": 2, "high": 3, "count": 1}]} units\n' +
- 'Avg a: 2.500000units\n',
- 'HISTOGRAM a: http___www.foo.com_= ' +
- '{"buckets": [{"low": 1, "high": 2, "count": 1}]} units\n' +
- 'Avg a: 1.500000units\n',
- 'RESULT telemetry_page_measurement_results: num_failed= 0 count\n',
- 'RESULT telemetry_page_measurement_results: num_errored= 0 count\n']
- self.assertEquals(expected, self._test_output_stream.output_data)
diff --git a/tools/telemetry/telemetry/value/__init__.py b/tools/telemetry/telemetry/value/__init__.py
index 77324c5..bbcfd5a 100644
--- a/tools/telemetry/telemetry/value/__init__.py
+++ b/tools/telemetry/telemetry/value/__init__.py
@@ -81,6 +81,12 @@ class Value(object):
self.description = description
self.tir_label = tir_label
+ def __eq__(self, other):
+ return hash(self) == hash(other)
+
+ def __hash__(self):
+ return hash(str(self))
+
def IsMergableWith(self, that):
return (self.units == that.units and
type(self) == type(that) and
diff --git a/tools/telemetry/telemetry/value/summary_unittest.py b/tools/telemetry/telemetry/value/summary_unittest.py
index 7ea755c..8905185 100644
--- a/tools/telemetry/telemetry/value/summary_unittest.py
+++ b/tools/telemetry/telemetry/value/summary_unittest.py
@@ -2,7 +2,323 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# TODO(nduca): Convert preexisting unittests to be summary tests. Summary is
-# currently very thoroughly unit tested by
-# buildbot_output_formatter_unittest. It originated as part of that
-# code, but was extracted because it proved useful.
+import os
+import unittest
+
+from telemetry import page as page_module
+from telemetry.page import page_set
+from telemetry.results import page_test_results
+from telemetry.value import failure
+from telemetry.value import histogram
+from telemetry.value import list_of_scalar_values
+from telemetry.value import scalar
+from telemetry.value import summary as summary_module
+
+class TestBase(unittest.TestCase):
+ def setUp(self):
+ ps = page_set.PageSet(file_path=os.path.dirname(__file__))
+ ps.AddUserStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir))
+ ps.AddUserStory(page_module.Page('http://www.baz.com/', ps, ps.base_dir))
+ ps.AddUserStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir))
+ self.page_set = ps
+
+ @property
+ def pages(self):
+ return self.page_set.pages
+
+
+class SummaryTest(TestBase):
+ def testBasicSummary(self):
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+
+ results = page_test_results.PageTestResults()
+
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'a', 'seconds', 3)
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v1 = scalar.ScalarValue(page1, 'a', 'seconds', 7)
+ results.AddValue(v1)
+ results.DidRunPage(page1)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ v0_list = list_of_scalar_values.ListOfScalarValues(
+ page0, 'a', 'seconds', [3])
+ v1_list = list_of_scalar_values.ListOfScalarValues(
+ page1, 'a', 'seconds', [7])
+ merged_value = list_of_scalar_values.ListOfScalarValues(
+ None, 'a', 'seconds', [3, 7])
+
+ self.assertEquals(3, len(values))
+ self.assertIn(v0_list, values)
+ self.assertIn(v1_list, values)
+ self.assertIn(merged_value, values)
+
+ def testBasicSummaryWithOnlyOnePage(self):
+ page0 = self.pages[0]
+
+ results = page_test_results.PageTestResults()
+
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'a', 'seconds', 3)
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ v0_list = list_of_scalar_values.ListOfScalarValues(
+ None, 'a', 'seconds', [3])
+
+ self.assertEquals([v0_list], values)
+
+ def testBasicSummaryNonuniformResults(self):
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+ page2 = self.pages[2]
+
+ results = page_test_results.PageTestResults()
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'a', 'seconds', 3)
+ results.AddValue(v0)
+ v1 = scalar.ScalarValue(page0, 'b', 'seconds', 10)
+ results.AddValue(v1)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v2 = scalar.ScalarValue(page1, 'a', 'seconds', 3)
+ results.AddValue(v2)
+ v3 = scalar.ScalarValue(page1, 'b', 'seconds', 10)
+ results.AddValue(v3)
+ results.DidRunPage(page1)
+
+ results.WillRunPage(page2)
+ v4 = scalar.ScalarValue(page2, 'a', 'seconds', 7)
+ results.AddValue(v4)
+ # Note, page[2] does not report a 'b' metric.
+ results.DidRunPage(page2)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ v0_list = list_of_scalar_values.ListOfScalarValues(
+ page0, 'a', 'seconds', [3])
+ v1_list = list_of_scalar_values.ListOfScalarValues(
+ page0, 'b', 'seconds', [10])
+ v2_list = list_of_scalar_values.ListOfScalarValues(
+ page1, 'a', 'seconds', [3])
+ v3_list = list_of_scalar_values.ListOfScalarValues(
+ page1, 'b', 'seconds', [10])
+ v4_list = list_of_scalar_values.ListOfScalarValues(
+ page2, 'a', 'seconds', [7])
+
+ a_summary = list_of_scalar_values.ListOfScalarValues(
+ None, 'a', 'seconds', [3, 3, 7])
+ b_summary = list_of_scalar_values.ListOfScalarValues(
+ None, 'b', 'seconds', [10, 10])
+
+ self.assertEquals(7, len(values))
+ self.assertIn(v0_list, values)
+ self.assertIn(v1_list, values)
+ self.assertIn(v2_list, values)
+ self.assertIn(v3_list, values)
+ self.assertIn(v4_list, values)
+ self.assertIn(a_summary, values)
+ self.assertIn(b_summary, values)
+
+ def testBasicSummaryPassAndFailPage(self):
+ """If a page failed, only print summary for individual pages."""
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+
+ results = page_test_results.PageTestResults()
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'a', 'seconds', 3)
+ results.AddValue(v0)
+ v1 = failure.FailureValue.FromMessage(page0, 'message')
+ results.AddValue(v1)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v2 = scalar.ScalarValue(page1, 'a', 'seconds', 7)
+ results.AddValue(v2)
+ results.DidRunPage(page1)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ v0_list = list_of_scalar_values.ListOfScalarValues(
+ page0, 'a', 'seconds', [3])
+ v2_list = list_of_scalar_values.ListOfScalarValues(
+ page1, 'a', 'seconds', [7])
+
+ self.assertEquals(2, len(values))
+ self.assertIn(v0_list, values)
+ self.assertIn(v2_list, values)
+
+ def testRepeatedPagesetOneIterationOnePageFails(self):
+ """Page fails on one iteration, no averaged results should print."""
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+
+ results = page_test_results.PageTestResults()
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'a', 'seconds', 3)
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v1 = scalar.ScalarValue(page1, 'a', 'seconds', 7)
+ results.AddValue(v1)
+ v2 = failure.FailureValue.FromMessage(page1, 'message')
+ results.AddValue(v2)
+ results.DidRunPage(page1)
+
+ results.WillRunPage(page0)
+ v3 = scalar.ScalarValue(page0, 'a', 'seconds', 4)
+ results.AddValue(v3)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v4 = scalar.ScalarValue(page1, 'a', 'seconds', 8)
+ results.AddValue(v4)
+ results.DidRunPage(page1)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ page0_aggregated = list_of_scalar_values.ListOfScalarValues(
+ page0, 'a', 'seconds', [3, 4])
+ page1_aggregated = list_of_scalar_values.ListOfScalarValues(
+ page1, 'a', 'seconds', [7, 8])
+
+ self.assertEquals(2, len(values))
+ self.assertIn(page0_aggregated, values)
+ self.assertIn(page1_aggregated, values)
+
+ def testRepeatedPages(self):
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+
+ results = page_test_results.PageTestResults()
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'a', 'seconds', 3)
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page0)
+ v2 = scalar.ScalarValue(page0, 'a', 'seconds', 4)
+ results.AddValue(v2)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v1 = scalar.ScalarValue(page1, 'a', 'seconds', 7)
+ results.AddValue(v1)
+ results.DidRunPage(page1)
+
+ results.WillRunPage(page1)
+ v3 = scalar.ScalarValue(page1, 'a', 'seconds', 8)
+ results.AddValue(v3)
+ results.DidRunPage(page1)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ page0_aggregated = list_of_scalar_values.ListOfScalarValues(
+ page0, 'a', 'seconds', [3, 4])
+ page1_aggregated = list_of_scalar_values.ListOfScalarValues(
+ page1, 'a', 'seconds', [7, 8])
+ a_summary = list_of_scalar_values.ListOfScalarValues(
+ None, 'a', 'seconds', [3, 4, 7, 8])
+
+ self.assertEquals(3, len(values))
+ self.assertIn(page0_aggregated, values)
+ self.assertIn(page1_aggregated, values)
+ self.assertIn(a_summary, values)
+
+ def testPageRunsTwice(self):
+ page0 = self.pages[0]
+
+ results = page_test_results.PageTestResults()
+
+ results.WillRunPage(page0)
+ v0 = scalar.ScalarValue(page0, 'b', 'seconds', 2)
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page0)
+ v1 = scalar.ScalarValue(page0, 'b', 'seconds', 3)
+ results.AddValue(v1)
+ results.DidRunPage(page0)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ page0_aggregated = list_of_scalar_values.ListOfScalarValues(
+ page0, 'b', 'seconds', [2, 3])
+ b_summary = list_of_scalar_values.ListOfScalarValues(
+ None, 'b', 'seconds', [2, 3])
+
+ self.assertEquals(2, len(values))
+ self.assertIn(page0_aggregated, values)
+ self.assertIn(b_summary, values)
+
+ def testListValue(self):
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+
+ results = page_test_results.PageTestResults()
+
+ results.WillRunPage(page0)
+ v0 = list_of_scalar_values.ListOfScalarValues(page0, 'b', 'seconds', [2, 2])
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v1 = list_of_scalar_values.ListOfScalarValues(page1, 'b', 'seconds', [3, 3])
+ results.AddValue(v1)
+ results.DidRunPage(page1)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ b_summary = list_of_scalar_values.ListOfScalarValues(
+ None, 'b', 'seconds', [2, 2, 3, 3])
+
+ self.assertEquals(3, len(values))
+ self.assertIn(v0, values)
+ self.assertIn(v1, values)
+ self.assertIn(b_summary, values)
+
+ def testHistogram(self):
+ page0 = self.pages[0]
+ page1 = self.pages[1]
+
+ results = page_test_results.PageTestResults()
+ results.WillRunPage(page0)
+ v0 = histogram.HistogramValue(
+ page0, 'a', 'units',
+ raw_value_json='{"buckets": [{"low": 1, "high": 2, "count": 1}]}',
+ important=False)
+ results.AddValue(v0)
+ results.DidRunPage(page0)
+
+ results.WillRunPage(page1)
+ v1 = histogram.HistogramValue(
+ page1, 'a', 'units',
+ raw_value_json='{"buckets": [{"low": 2, "high": 3, "count": 1}]}',
+ important=False)
+ results.AddValue(v1)
+ results.DidRunPage(page1)
+
+ summary = summary_module.Summary(results.all_page_specific_values)
+ values = summary.interleaved_computed_per_page_values_and_summaries
+
+ self.assertEquals(2, len(values))
+ self.assertIn(v0, values)
+ self.assertIn(v1, values)