diff options
author | eakuefner <eakuefner@chromium.org> | 2015-04-23 14:35:52 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-23 21:36:02 +0000 |
commit | c2b8def1e6c063f1b0065795e778d9002db2585d (patch) | |
tree | 79d600f23ec4a5c1007e7371479bb42b18b753b1 /tools | |
parent | 3554043c2d1e72e1a8f7eb9250d3d7065ff3d2ec (diff) | |
download | chromium_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')
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) |