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

Unified Diff: tools/perf/profile_creators/fast_navigation_profile_extender_unittest.py

Issue 907503002: telemetry: Create a helper class to quickly extend profiles. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Modify profile_generator to allow more types of classes in the profile_generator/ directory. Created 5 years, 10 months 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
Index: tools/perf/profile_creators/fast_navigation_profile_extender_unittest.py
diff --git a/tools/perf/profile_creators/fast_navigation_profile_extender_unittest.py b/tools/perf/profile_creators/fast_navigation_profile_extender_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..ba735548546016c4df37feebf99ea417b043a904
--- /dev/null
+++ b/tools/perf/profile_creators/fast_navigation_profile_extender_unittest.py
@@ -0,0 +1,69 @@
+# Copyright 2015 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 unittest
+
+from profile_creators.fast_navigation_profile_extender import (
+ FastNavigationProfileExtender)
+from telemetry.core import util
+
+util.AddDirToPythonPath(util.GetTelemetryDir(), 'third_party', 'mock')
+import mock
+
+
+class FakeTab(object):
+ pass
+
+
+class FakeBrowser(object):
+ def __init__(self, tab_count):
+ self.tabs = []
+ for _ in range(tab_count):
+ self.tabs.append(FakeTab())
+
+
+# Testing private method.
+# pylint: disable=W0212
nednguyen 2015/02/12 02:10:53 Nit: please use pylint: disable=access-protected..
erikchen 2015/02/12 03:02:58 Done.
+class FastNavigationProfileExtenderTest(unittest.TestCase):
+ def testPerformNavigations(self):
+ extender = FastNavigationProfileExtender()
+ num_urls = extender._NUM_PARALLEL_PAGES * 3 + 4
+ num_tabs = extender._NUM_TABS
+
+ navigation_urls = []
+ for i in range(num_urls):
+ navigation_urls.append('http://test%s.com' % i)
+
+ extender._navigation_urls = navigation_urls
+ extender._browser = FakeBrowser(num_tabs)
+ extender._BatchNavigateTabs = mock.MagicMock()
+
+ # Set up a callback to record the tabs and urls in each navigation.
+ batch_callback_tabs = []
+ batch_callback_urls = []
+ def SideEffect(*args, **_):
+ batch = args[0]
+ for tab, url in batch:
+ batch_callback_tabs.append(tab)
+ batch_callback_urls.append(url)
+ extender._BatchNavigateTabs.side_effect = SideEffect
+
+ # Perform the navigations.
+ extender._PerformNavigations()
+
+ # Each url should have been navigated to exactly once.
+ self.assertEqual(set(batch_callback_urls), set(navigation_urls))
+
+ # The first 4 tabs should have been navigated 4 times. The remaining tabs
+ # should have been navigated 3 times.
+ num_navigations_per_tab = 3
+ num_tabs_with_one_extra_navigation = 4
+ for i in range(len(extender._browser.tabs)):
+ tab = extender._browser.tabs[i]
+
+ expected_tab_navigation_count = num_navigations_per_tab
+ if i < num_tabs_with_one_extra_navigation:
+ expected_tab_navigation_count += 1
+
+ count = batch_callback_tabs.count(tab)
+ self.assertEqual(count, expected_tab_navigation_count)
nednguyen 2015/02/12 03:17:59 Can we add a regression test that actually create
nednguyen 2015/02/12 16:53:56 Actually, I realize that you will need either to u
erikchen 2015/02/12 18:16:46 What specifically are you trying to get from the r

Powered by Google App Engine
This is Rietveld 408576698