Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / page / page_measurement_results_unittest.py
index 727eeb6..b5b35df 100644 (file)
@@ -7,16 +7,14 @@ import unittest
 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):
@@ -37,69 +35,146 @@ class SummarySavingPageMeasurementResults(
     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])