Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: tools/perf/measurements/page_cycler_unittest.py

Issue 57863002: Update page cycler to differenciate between cold and warm run by default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding unit test Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/measurements/page_cycler.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/measurements/page_cycler_unittest.py
diff --git a/tools/perf/measurements/page_cycler_unittest.py b/tools/perf/measurements/page_cycler_unittest.py
index 39356ad14d684bc7818498eeccc6a760d7ed83f8..13f4cd2921e3b50ad756fe2812e42934be4dd91f 100644
--- a/tools/perf/measurements/page_cycler_unittest.py
+++ b/tools/perf/measurements/page_cycler_unittest.py
@@ -29,6 +29,22 @@ class MockMemoryMetric(object):
def AddSummaryResults(self, tab, results):
pass
+# Used to mock loading a page.
+class FakePage(object):
+ def __init__(self, url):
+ self.url = url
+
+# Used to mock a browser tab.
+class FakeTab(object):
+ def __init__(self):
+ self.clear_cache_calls = 0
+ def ClearCache(self):
+ self.clear_cache_calls += 1
+ def EvaluateJavaScript(self, _):
+ return 1
+ def WaitForJavaScriptExpression(self, _, __):
+ pass
+
class PageCyclerUnitTest(unittest.TestCase):
# TODO(tonyg): Remove this backfill when we can assume python 2.7 everywhere.
@@ -36,7 +52,7 @@ class PageCyclerUnitTest(unittest.TestCase):
self.assertTrue(first in second,
msg="'%s' not found in '%s'" % (first, second))
- def setupCycler(self, args):
+ def setupCycler(self, args, setup_memory_module=False):
cycler = page_cycler.PageCycler()
options = browser_options.BrowserFinderOptions()
parser = options.CreateParser()
@@ -44,26 +60,39 @@ class PageCyclerUnitTest(unittest.TestCase):
parser.parse_args(args)
cycler.CustomizeBrowserOptions(options)
+ if setup_memory_module:
+ # Mock out memory metrics; the real ones require a real browser.
+ mock_memory_metric = MockMemoryMetric()
+
+ mock_memory_module = simple_mock.MockObject()
+ mock_memory_module.ExpectCall(
+ 'MemoryMetric').WithArgs(simple_mock.DONT_CARE).WillReturn(
+ mock_memory_metric)
+
+ real_memory_module = page_cycler.memory
+ try:
+ page_cycler.memory = mock_memory_module
+ cycler.DidStartBrowser(None)
+ finally:
+ page_cycler.memory = real_memory_module
+
return cycler
def testOptionsColdLoadNoArgs(self):
cycler = self.setupCycler([])
- self.assertFalse(cycler._cold_runs_requested)
- self.assertEqual(cycler._number_warm_runs, 9)
+ self.assertEquals(cycler._cold_run_start_index, 10)
def testOptionsColdLoadPagesetRepeat(self):
cycler = self.setupCycler(['--pageset-repeat=20', '--page-repeat=2'])
- self.assertFalse(cycler._cold_runs_requested)
- self.assertEqual(cycler._number_warm_runs, 38)
+ self.assertEquals(cycler._cold_run_start_index, 40)
def testOptionsColdLoadRequested(self):
cycler = self.setupCycler(['--pageset-repeat=21', '--page-repeat=2',
'--cold-load-percent=40'])
- self.assertTrue(cycler._cold_runs_requested)
- self.assertEqual(cycler._number_warm_runs, 24)
+ self.assertEquals(cycler._cold_run_start_index, 26)
def testIncompatibleOptions(self):
exception_seen = False
@@ -79,36 +108,8 @@ class PageCyclerUnitTest(unittest.TestCase):
def testCacheHandled(self):
cycler = self.setupCycler(['--pageset-repeat=5',
- '--cold-load-percent=50'])
-
- # Mock out memory metrics; the real ones require a real browser.
- mock_memory_metric = MockMemoryMetric()
-
- mock_memory_module = simple_mock.MockObject()
- mock_memory_module.ExpectCall(
- 'MemoryMetric').WithArgs(simple_mock.DONT_CARE).WillReturn(
- mock_memory_metric)
-
- real_memory_module = page_cycler.memory
- try:
- page_cycler.memory = mock_memory_module
- cycler.DidStartBrowser(None)
- finally:
- page_cycler.memory = real_memory_module
-
- class FakePage(object):
- def __init__(self, url):
- self.url = url
-
- class FakeTab(object):
- def __init__(self):
- self.clear_cache_calls = 0
- def ClearCache(self):
- self.clear_cache_calls += 1
- def EvaluateJavaScript(self, _):
- return 1
- def WaitForJavaScriptExpression(self, _, __):
- pass
+ '--cold-load-percent=50'],
+ True)
url_name = "http://fakepage.com"
page = FakePage(url_name)
@@ -129,9 +130,30 @@ class PageCyclerUnitTest(unittest.TestCase):
self.assertEqual(1, len(values))
self.assertEqual(values[0].page, page)
- chart_name = 'warm_times' if i > 3 else 'cold_times'
- print values[0].name
+ chart_name = 'cold_times' if i == 0 or i > 2 else 'warm_times'
self.assertEqual(values[0].name, '%s.page_load_time' % chart_name)
self.assertEqual(values[0].units, 'ms')
cycler.DidNavigateToPage(page, tab)
+
+ def testColdWarm(self):
+ cycler = self.setupCycler(['--pageset-repeat=3'], True)
+ pages = [FakePage("http://fakepage1.com"), FakePage("http://fakepage2.com")]
+ tab = FakeTab()
+ results = page_measurement_results.PageMeasurementResults()
+ for i in range(3):
+ for page in pages:
+ cycler.WillNavigateToPage(page, tab)
+ results.WillMeasurePage(page)
+ cycler.MeasurePage(page, tab, results)
+
+ values = results.page_specific_values_for_current_page
+ results.DidMeasurePage()
+
+ self.assertEqual(1, len(values))
+ self.assertEqual(values[0].page, page)
+
+ chart_name = 'cold_times' if i == 0 else 'warm_times'
+ self.assertEqual(values[0].name, '%s.page_load_time' % chart_name)
+
+ cycler.DidNavigateToPage(page, tab)
« no previous file with comments | « tools/perf/measurements/page_cycler.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698