from telemetry.page import page_measurement_results
from telemetry.page import page_set
from telemetry.page import perf_tests_helper
+from telemetry.value import scalar
def _MakePageSet():
- return page_set.PageSet.FromDict({
- "description": "hello",
- "archive_path": "foo.wpr",
- "pages": [
- {"url": "http://www.foo.com/"},
- {"url": "http://www.bar.com/"}
- ]
- }, os.path.dirname(__file__))
+ ps = page_set.PageSet(file_path=os.path.dirname(__file__))
+ ps.AddPageWithDefaultRunNavigate("http://www.bar.com/")
+ ps.AddPageWithDefaultRunNavigate("http://www.baz.com/")
+ ps.AddPageWithDefaultRunNavigate("http://www.foo.com/")
+ return ps
class NonPrintingPageMeasurementResults(
page_measurement_results.PageMeasurementResults):
self.results.append(res)
class PageMeasurementResultsTest(unittest.TestCase):
+ def setUp(self):
+ self._page_set = _MakePageSet()
+
+ @property
+ def pages(self):
+ return self._page_set.pages
+
def test_basic(self):
- test_page_set = _MakePageSet()
+ results = NonPrintingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
- measurement_results = NonPrintingPageMeasurementResults()
- measurement_results.WillMeasurePage(test_page_set.pages[0])
- measurement_results.Add('a', 'seconds', 3)
- measurement_results.DidMeasurePage()
+ results.WillMeasurePage(self.pages[1])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
- measurement_results.WillMeasurePage(test_page_set.pages[1])
- measurement_results.Add('a', 'seconds', 3)
- measurement_results.DidMeasurePage()
+ results.PrintSummary()
- measurement_results.PrintSummary()
+ values = results.FindPageSpecificValuesForPage(self.pages[0], 'a')
+ self.assertEquals(1, len(values))
+ v = values[0]
+ self.assertEquals(v.name, 'a')
+ self.assertEquals(v.page, self.pages[0])
- def test_url_is_invalid_value(self):
- test_page_set = _MakePageSet()
+ values = results.FindAllPageSpecificValuesNamed('a')
+ assert len(values) == 2
- measurement_results = NonPrintingPageMeasurementResults()
- measurement_results.WillMeasurePage(test_page_set.pages[0])
+ def test_url_is_invalid_value(self):
+ results = NonPrintingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
self.assertRaises(
AssertionError,
- lambda: measurement_results.Add('url', 'string', 'foo'))
+ lambda: results.Add('url', 'string', 'foo'))
+
+ def test_value_names_that_have_been_seen(self):
+ results = NonPrintingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'a_units', 3)
+ results.Add('b', 'b_units', 3)
+ results.AddSummaryValue(scalar.ScalarValue(None, 'c', 'c_units', 3))
+ results.DidMeasurePage()
+ self.assertEquals(set(['a', 'b', 'c']),
+ set(results.all_value_names_that_have_been_seen))
+ self.assertEquals('a_units', results.GetUnitsForValueName('a'))
+ self.assertEquals('b_units', results.GetUnitsForValueName('b'))
+ self.assertEquals('c_units', results.GetUnitsForValueName('c'))
+
+ def test_add_summary_value_with_page_specified(self):
+ results = NonPrintingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ self.assertRaises(
+ AssertionError,
+ lambda: results.AddSummaryValue(scalar.ScalarValue(self.pages[0],
+ 'a', 'units', 3)))
def test_unit_change(self):
- test_page_set = _MakePageSet()
-
- measurement_results = NonPrintingPageMeasurementResults()
- measurement_results.WillMeasurePage(test_page_set.pages[0])
- measurement_results.Add('a', 'seconds', 3)
- measurement_results.DidMeasurePage()
+ results = NonPrintingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
- measurement_results.WillMeasurePage(test_page_set.pages[1])
+ results.WillMeasurePage(self.pages[1])
self.assertRaises(
AssertionError,
- lambda: measurement_results.Add('a', 'foobgrobbers', 3))
+ lambda: results.Add('a', 'foobgrobbers', 3))
- def test_type_change(self):
- test_page_set = _MakePageSet()
+ self.assertEquals(['a'], results.all_value_names_that_have_been_seen)
- measurement_results = NonPrintingPageMeasurementResults()
- measurement_results.WillMeasurePage(test_page_set.pages[0])
- measurement_results.Add('a', 'seconds', 3)
- measurement_results.DidMeasurePage()
+ def test_type_change(self):
+ results = NonPrintingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
- measurement_results.WillMeasurePage(test_page_set.pages[1])
+ results.WillMeasurePage(self.pages[1])
self.assertRaises(
AssertionError,
- lambda: measurement_results.Add('a', 'seconds', 3, data_type='histogram'))
+ lambda: results.Add('a', 'seconds', 3, data_type='histogram'))
def test_basic_summary_all_pages_fail(self):
"""If all pages fail, no summary is printed."""
- test_page_set = _MakePageSet()
-
- measurement_results = SummarySavingPageMeasurementResults()
- measurement_results.WillMeasurePage(test_page_set.pages[0])
- measurement_results.Add('a', 'seconds', 3)
- measurement_results.DidMeasurePage()
- measurement_results.AddFailureMessage(test_page_set.pages[0], 'message')
-
- measurement_results.WillMeasurePage(test_page_set.pages[1])
- measurement_results.Add('a', 'seconds', 7)
- measurement_results.DidMeasurePage()
- measurement_results.AddFailureMessage(test_page_set.pages[1], 'message')
-
- measurement_results.PrintSummary()
- self.assertEquals(measurement_results.results, [])
+ results = SummarySavingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
+ results.AddFailureMessage(self.pages[0], 'message')
+
+ results.WillMeasurePage(self.pages[1])
+ results.Add('a', 'seconds', 7)
+ results.DidMeasurePage()
+ results.AddFailureMessage(self.pages[1], 'message')
+
+ results.PrintSummary()
+ self.assertEquals(results.results, [])
+
+ def test_get_successful_page_values_merged_no_failures(self):
+ results = SummarySavingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ self.assertEquals(1, len(results.page_specific_values_for_current_page))
+ results.DidMeasurePage()
+ self.assertRaises(
+ AssertionError,
+ lambda: results.page_specific_values_for_current_page)
+
+ def test_get_all_values_for_successful_pages(self):
+ results = SummarySavingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
+
+ results.WillMeasurePage(self.pages[1])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
+
+ results.WillMeasurePage(self.pages[2])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
+
+ values = results.all_page_specific_values
+ self.assertEquals(3, len(values))
+ self.assertEquals([self.pages[0], self.pages[1], self.pages[2]],
+ [v.page for v in values])
+
+ def test_get_all_values_for_successful_pages_one_page_fails(self):
+ results = SummarySavingPageMeasurementResults()
+ results.WillMeasurePage(self.pages[0])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
+
+ results.WillMeasurePage(self.pages[1])
+ results.AddFailureMessage(self.pages[1], "Failure")
+ results.DidMeasurePage()
+
+ results.WillMeasurePage(self.pages[2])
+ results.Add('a', 'seconds', 3)
+ results.DidMeasurePage()
+
+ values = results.all_page_specific_values
+ self.assertEquals(2, len(values))
+ self.assertEquals([self.pages[0], self.pages[2]],
+ [v.page for v in values])