Chromium Code Reviews| Index: tools/telemetry/telemetry/page/buildbot_page_measurement_results_unittest.py |
| diff --git a/tools/telemetry/telemetry/page/buildbot_page_measurement_results_unittest.py b/tools/telemetry/telemetry/page/buildbot_page_measurement_results_unittest.py |
| index 6854eda8ab36aa0b29d6d6bcb019089235a81f7b..d531d2ededc66fc51772fe5d541ed29f8c1b9ba2 100644 |
| --- a/tools/telemetry/telemetry/page/buildbot_page_measurement_results_unittest.py |
| +++ b/tools/telemetry/telemetry/page/buildbot_page_measurement_results_unittest.py |
| @@ -30,6 +30,39 @@ class SummarySavingPageMeasurementResults( |
| self.results.append(res) |
| class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| + def assertEquals(self, ex, res): |
| + # This helps diagnose result mismatches. |
| + if ex != res and isinstance(ex, list): |
| + def CleanList(l): |
| + res = [] |
| + for x in l: |
| + x = x.split('\n') |
| + res.extend(x) |
| + return res |
| + ex = CleanList(ex) |
| + res = CleanList(res) |
| + max_len = max(len(ex), len(res)) |
| + max_width = max([len(x) for x in ex + res]) |
| + max_width = max(10, max_width) |
| + print "Lists differ!" |
| + print '%*s | %*s' % (max_width, 'expected', max_width, 'result') |
| + for i in range(max_len): |
| + if i < len(ex): |
| + e = ex[i] |
| + else: |
| + e = '' |
| + if i < len(res): |
| + r = res[i] |
| + else: |
| + r = '' |
| + if e != r: |
| + sep = '*' |
| + else: |
| + sep = '|' |
| + print '%*s %s %*s' % (max_width, e, sep, max_width, r) |
| + print "" |
| + super(BuildbotPageMeasurementResultsTest, self).assertEquals(ex, res) |
| + |
| def test_basic_summary(self): |
| test_page_set = _MakePageSet() |
| @@ -37,21 +70,23 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 7) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| - expected = ['RESULT a_by_url: http___www.foo.com_= 3 seconds', |
| - 'RESULT a_by_url: http___www.bar.com_= 7 seconds', |
| - '*RESULT a: a= [3,7] seconds\nAvg a: 5.000000seconds\n' + |
| + expected = ['RESULT a_by_url: http___www.bar.com_= 7 seconds', |
| + 'RESULT a_by_url: http___www.foo.com_= 3 seconds', |
| + '*RESULT a: a= [7,3] seconds\nAvg a: 5.000000seconds\n' + |
|
tonyg
2013/11/04 20:15:04
I think we need to keep these in the order they we
|
| 'Sd a: 2.828427seconds', |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_failed= 0 count', |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_errored= 0 count'] |
| - self.assertEquals(measurement_results.results, expected) |
| + self.assertEquals(expected, measurement_results.results) |
| def test_basic_summary_nonuniform_results(self): |
| test_page_set = _MakePageSet() |
| @@ -61,31 +96,34 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.Add('b', 'seconds', 10) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.Add('b', 'seconds', 10) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.WillMeasurePage(test_page_set.pages[2]) |
| measurement_results.Add('a', 'seconds', 7) |
| # Note, page[2] does not report a 'b' metric. |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[2]) |
| measurement_results.PrintSummary() |
| - expected = ['RESULT a_by_url: http___www.foo.com_= 3 seconds', |
| - 'RESULT a_by_url: http___www.bar.com_= 3 seconds', |
| + expected = ['RESULT a_by_url: http___www.bar.com_= 3 seconds', |
| 'RESULT a_by_url: http___www.baz.com_= 7 seconds', |
| - '*RESULT a: a= [3,3,7] seconds\nAvg a: 4.333333seconds\n' + |
| + 'RESULT a_by_url: http___www.foo.com_= 3 seconds', |
| + '*RESULT a: a= [3,7,3] seconds\nAvg a: 4.333333seconds\n' + |
| 'Sd a: 2.309401seconds', |
| - 'RESULT b_by_url: http___www.foo.com_= 10 seconds', |
| 'RESULT b_by_url: http___www.bar.com_= 10 seconds', |
| + 'RESULT b_by_url: http___www.foo.com_= 10 seconds', |
| '*RESULT b: b= [10,10] seconds\nAvg b: 10.000000seconds', |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_failed= 0 count', |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_errored= 0 count'] |
| - self.assertEquals(measurement_results.results, expected) |
| + self.assertEquals(expected, measurement_results.results) |
| def test_basic_summary_pass_and_fail_page(self): |
| """If a page failed, only print summary for individual passing pages.""" |
| @@ -100,6 +138,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 7) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| expected = ['RESULT a_by_url: http___www.bar.com_= 7 seconds', |
| @@ -107,7 +146,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| 'num_failed= 1 count', |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_errored= 0 count'] |
| - self.assertEquals(measurement_results.results, expected) |
| + self.assertEquals(expected, measurement_results.results) |
| def test_repeated_pageset_one_iteration_one_page_fails(self): |
| """Page fails on one iteration, no results for that page should print.""" |
| @@ -117,6 +156,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 7) |
| @@ -126,10 +166,12 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 4) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 8) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| expected = ['RESULT a_by_url: http___www.foo.com_= [3,4] seconds\n' + |
| @@ -139,7 +181,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| 'num_failed= 1 count', |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_errored= 0 count'] |
| - self.assertEquals(measurement_results.results, expected) |
| + self.assertEquals(expected, measurement_results.results) |
| def test_repeated_pageset_one_iteration_one_page_error(self): |
| """Page error on one iteration, no results for that page should print.""" |
| @@ -149,6 +191,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 7) |
| @@ -158,10 +201,12 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 4) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 8) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| expected = ['RESULT a_by_url: http___www.foo.com_= [3,4] seconds\n' + |
| @@ -171,7 +216,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| 'num_failed= 0 count', |
| 'RESULT telemetry_page_measurement_results:' + |
| ' num_errored= 1 count'] |
| - self.assertEquals(measurement_results.results, expected) |
| + self.assertEquals(expected, measurement_results.results) |
| def test_repeated_pageset(self): |
| test_page_set = _MakePageSet() |
| @@ -180,27 +225,31 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 7) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 4) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 8) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| - expected = ['RESULT a_by_url: http___www.foo.com_= [3,4] seconds\n' + |
| - 'Avg a_by_url: 3.500000seconds\n' + |
| - 'Sd a_by_url: 0.707107seconds', |
| - 'RESULT a_by_url: http___www.bar.com_= [7,8] seconds\n' + |
| + expected = ['RESULT a_by_url: http___www.bar.com_= [7,8] seconds\n' + |
| 'Avg a_by_url: 7.500000seconds\n' + |
| 'Sd a_by_url: 0.707107seconds', |
| - '*RESULT a: a= [3,7,4,8] seconds\n' + |
| + 'RESULT a_by_url: http___www.foo.com_= [3,4] seconds\n' + |
| + 'Avg a_by_url: 3.500000seconds\n' + |
| + 'Sd a_by_url: 0.707107seconds', |
| + '*RESULT a: a= [7,8,3,4] seconds\n' + |
| 'Avg a: 5.500000seconds\n' + |
| 'Sd a: 2.380476seconds', |
| 'RESULT telemetry_page_measurement_results: ' + |
| @@ -208,9 +257,7 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_errored= 0 count' |
| ] |
| - self.assertEquals( |
| - measurement_results.results, |
| - expected) |
| + self.assertEquals(expected, measurement_results.results) |
| def test_repeated_pages(self): |
| test_page_set = _MakePageSet() |
| @@ -219,27 +266,31 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'seconds', 4) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 7) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'seconds', 8) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| - expected = ['RESULT a_by_url: http___www.foo.com_= [3,4] seconds\n' + |
| - 'Avg a_by_url: 3.500000seconds\n' + |
| - 'Sd a_by_url: 0.707107seconds', |
| - 'RESULT a_by_url: http___www.bar.com_= [7,8] seconds\n' + |
| + expected = ['RESULT a_by_url: http___www.bar.com_= [7,8] seconds\n' + |
| 'Avg a_by_url: 7.500000seconds\n' + |
| 'Sd a_by_url: 0.707107seconds', |
| - '*RESULT a: a= [3,4,7,8] seconds\n' + |
| + 'RESULT a_by_url: http___www.foo.com_= [3,4] seconds\n' + |
| + 'Avg a_by_url: 3.500000seconds\n' + |
| + 'Sd a_by_url: 0.707107seconds', |
| + '*RESULT a: a= [7,8,3,4] seconds\n' + |
| 'Avg a: 5.500000seconds\n' + |
| 'Sd a: 2.380476seconds', |
| 'RESULT telemetry_page_measurement_results: ' + |
| @@ -247,93 +298,155 @@ class BuildbotPageMeasurementResultsTest(unittest.TestCase): |
| 'RESULT telemetry_page_measurement_results: ' + |
| 'num_errored= 0 count' |
| ] |
| - self.assertEquals( |
| - measurement_results.results, |
| - expected) |
| + self.assertEquals(expected, measurement_results.results) |
| - def test_overall_results(self): |
| + def test_overall_results_trace_tag(self): |
| test_page_set = _MakePageSet() |
| - measurement_results = SummarySavingPageMeasurementResults() |
| + measurement_results = SummarySavingPageMeasurementResults(trace_tag='_ref') |
| measurement_results.AddSummary('a', 'seconds', 1) |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('b', 'seconds', 2) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('b', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.AddSummary('c', 'seconds', 4) |
| measurement_results.PrintSummary() |
| - self.assertEquals( |
| - measurement_results.results, |
| - ['RESULT b_by_url: http___www.foo.com_= 2 seconds', |
| - 'RESULT b_by_url: http___www.bar.com_= 3 seconds', |
| - '*RESULT b: b= [2,3] seconds\n' + |
| - 'Avg b: 2.500000seconds\nSd b: 0.707107seconds', |
| - '*RESULT a: a= 1 seconds', |
| - '*RESULT c: c= 4 seconds', |
| - 'RESULT telemetry_page_measurement_results: num_failed= 0 count', |
| - 'RESULT telemetry_page_measurement_results: num_errored= 0 count']) |
| + expected = [ |
| + '*RESULT b: b_ref= [3,2] seconds\n' + |
| + 'Avg b: 2.500000seconds\nSd b: 0.707107seconds', |
| + '*RESULT a: a_ref= 1 seconds', |
| + '*RESULT c: c_ref= 4 seconds', |
| + 'RESULT telemetry_page_measurement_results: num_failed= 0 count', |
| + 'RESULT telemetry_page_measurement_results: num_errored= 0 count'] |
| + self.assertEquals(expected, measurement_results.results) |
| - def test_overall_results_trace_tag(self): |
| + |
| + def test_overall_results_page_runs_twice(self): |
| test_page_set = _MakePageSet() |
| - measurement_results = SummarySavingPageMeasurementResults(trace_tag='_ref') |
| + measurement_results = SummarySavingPageMeasurementResults() |
| measurement_results.AddSummary('a', 'seconds', 1) |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('b', 'seconds', 2) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| - measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| + measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('b', 'seconds', 3) |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| - measurement_results.AddSummary('c', 'seconds', 4) |
| + measurement_results.PrintSummary() |
| + |
| + expected = [ |
| + 'RESULT b_by_url: http___www.foo.com_= [2,3] seconds\n' + |
| + 'Avg b_by_url: 2.500000seconds\nSd b_by_url: 0.707107seconds', |
| + '*RESULT b: b= [2,3] seconds\n' + |
| + 'Avg b: 2.500000seconds\nSd b: 0.707107seconds', |
| + '*RESULT a: a= 1 seconds', |
| + 'RESULT telemetry_page_measurement_results: num_failed= 0 count', |
| + 'RESULT telemetry_page_measurement_results: num_errored= 0 count'] |
| + self.assertEquals(expected, measurement_results.results) |
| + |
| + def test_unimportant_results(self): |
| + test_page_set = _MakePageSet() |
| + |
| + measurement_results = SummarySavingPageMeasurementResults() |
| + |
| + measurement_results.AddSummary('a', 'seconds', 1, data_type='unimportant') |
| + |
| + measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| + measurement_results.Add('b', 'seconds', 2, data_type='unimportant') |
| + measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| + |
| + measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| + measurement_results.Add('b', 'seconds', 3, data_type='unimportant') |
| + measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| self.assertEquals( |
| measurement_results.results, |
| - ['*RESULT b: b_ref= [2,3] seconds\n' + |
| + ['RESULT b_by_url: http___www.bar.com_= 3 seconds', |
| + 'RESULT b_by_url: http___www.foo.com_= 2 seconds', |
| + 'RESULT b: b= [3,2] seconds\n' + |
| 'Avg b: 2.500000seconds\nSd b: 0.707107seconds', |
| - '*RESULT a: a_ref= 1 seconds', |
| - '*RESULT c: c_ref= 4 seconds', |
| + 'RESULT a: a= 1 seconds', |
| 'RESULT telemetry_page_measurement_results: num_failed= 0 count', |
| 'RESULT telemetry_page_measurement_results: num_errored= 0 count']) |
| + def test_list_value(self): |
| + test_page_set = _MakePageSet() |
| + |
| + measurement_results = SummarySavingPageMeasurementResults() |
| + |
| + measurement_results.AddSummary('a', 'seconds', [1, 1]) |
| + |
| + measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| + measurement_results.Add('b', 'seconds', [2, 2]) |
| + measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| + |
| + measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| + measurement_results.Add('b', 'seconds', [3, 3]) |
| + measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| + |
| + measurement_results.PrintSummary() |
| + |
| + expected = [ |
| + 'RESULT b_by_url: http___www.bar.com_= [3,3] seconds\n' + |
| + 'Avg b_by_url: 3.000000seconds', |
| + 'RESULT b_by_url: http___www.foo.com_= [2,2] seconds\n' + |
| + 'Avg b_by_url: 2.000000seconds', |
| + '*RESULT b: b= [3,3,2,2] seconds\nAvg b: 2.500000seconds\n' + |
| + 'Sd b: 0.577350seconds', |
| + '*RESULT a: a= [1,1] seconds\nAvg a: 1.000000seconds', |
| + 'RESULT telemetry_page_measurement_results: num_failed= 0 count', |
| + 'RESULT telemetry_page_measurement_results: num_errored= 0 count'] |
| + self.assertEquals(expected, measurement_results.results) |
| + |
| def test_histogram(self): |
| test_page_set = _MakePageSet() |
| measurement_results = SummarySavingPageMeasurementResults() |
| measurement_results.WillMeasurePage(test_page_set.pages[0]) |
| measurement_results.Add('a', 'units', |
| - '{"buckets": [{"low": 1, "high": 2, "count": 1}]}', |
| - data_type='histogram') |
| + '{"buckets": [{"low": 1, "high": 2, "count": 1}]}', |
| + data_type='unimportant-histogram') |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[0]) |
| measurement_results.WillMeasurePage(test_page_set.pages[1]) |
| measurement_results.Add('a', 'units', |
| '{"buckets": [{"low": 2, "high": 3, "count": 1}]}', |
| - data_type='histogram') |
| + data_type='unimportant-histogram') |
| measurement_results.DidMeasurePage() |
| + measurement_results.AddSuccess(test_page_set.pages[1]) |
| measurement_results.PrintSummary() |
| expected = [ |
| - 'HISTOGRAM a_by_url: http___www.foo.com_= ' + |
| - '{"buckets": [{"low": 1, "high": 2, "count": 1}]} units\n' + |
| - 'Avg a_by_url: 1.500000units', |
| 'HISTOGRAM a_by_url: http___www.bar.com_= ' + |
| '{"buckets": [{"low": 2, "high": 3, "count": 1}]} units\n' + |
| 'Avg a_by_url: 2.500000units', |
| + 'HISTOGRAM a_by_url: http___www.foo.com_= ' + |
| + '{"buckets": [{"low": 1, "high": 2, "count": 1}]} units\n' + |
| + 'Avg a_by_url: 1.500000units', |
| 'RESULT telemetry_page_measurement_results: num_failed= 0 count', |
| 'RESULT telemetry_page_measurement_results: num_errored= 0 count'] |
| - self.assertEquals(measurement_results.results, expected) |
| + self.assertEquals(expected, measurement_results.results) |