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

Side by Side Diff: tools/telemetry/telemetry/page_runner_unittest.py

Issue 12278015: [Telemetry] Reorganize everything. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-add shebangs. Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/telemetry/telemetry/page_runner.py ('k') | tools/telemetry/telemetry/page_set.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 import os
5 import tempfile
6 import unittest
7
8 from telemetry import browser_finder
9 from telemetry import page as page_module
10 from telemetry import page_set
11 from telemetry import page_test
12 from telemetry import page_runner
13 from telemetry import options_for_unittests
14 from telemetry import user_agent
15
16 SIMPLE_CREDENTIALS_STRING = """
17 {
18 "test": {
19 "username": "example",
20 "password": "asdf"
21 }
22 }
23 """
24 class StubCredentialsBackend(object):
25 def __init__(self, login_return_value):
26 self.did_get_login = False
27 self.did_get_login_no_longer_needed = False
28 self.login_return_value = login_return_value
29
30 @property
31 def credentials_type(self): # pylint: disable=R0201
32 return 'test'
33
34 def LoginNeeded(self, tab, config): # pylint: disable=W0613
35 self.did_get_login = True
36 return self.login_return_value
37
38 def LoginNoLongerNeeded(self, tab): # pylint: disable=W0613
39 self.did_get_login_no_longer_needed = True
40
41 class PageRunnerTests(unittest.TestCase):
42 # TODO(nduca): Move the basic "test failed, test succeeded" tests from
43 # multi_page_benchmark_unittest to here.
44
45 def testHandlingOfCrashedTab(self):
46 ps = page_set.PageSet()
47 page1 = page_module.Page('chrome://crash', ps)
48 page2 = page_module.Page('http://www.google.com', ps)
49 ps.pages.append(page1)
50 ps.pages.append(page2)
51 results = page_test.PageTestResults()
52
53 class Test(page_test.PageTest):
54 def RunTest(self, *args):
55 pass
56
57 with page_runner.PageRunner(ps) as runner:
58 options = options_for_unittests.GetCopy()
59 possible_browser = browser_finder.FindBrowser(options)
60 runner.Run(options, possible_browser, Test('RunTest'), results)
61 self.assertEquals(1, len(results.page_successes))
62 self.assertEquals(1, len(results.page_failures))
63
64 def testCredentialsWhenLoginFails(self):
65 results = page_test.PageTestResults()
66 credentials_backend = StubCredentialsBackend(login_return_value=False)
67 did_run = self.runCredentialsTest(credentials_backend, results)
68 assert credentials_backend.did_get_login == True
69 assert credentials_backend.did_get_login_no_longer_needed == False
70 assert did_run == False
71
72 def testCredentialsWhenLoginSucceeds(self):
73 results = page_test.PageTestResults()
74 credentials_backend = StubCredentialsBackend(login_return_value=True)
75 did_run = self.runCredentialsTest(credentials_backend, results)
76 assert credentials_backend.did_get_login == True
77 assert credentials_backend.did_get_login_no_longer_needed == True
78 assert did_run
79
80 def runCredentialsTest(self, # pylint: disable=R0201
81 credentials_backend,
82 results):
83 ps = page_set.PageSet()
84 page = page_module.Page('http://www.google.com', ps)
85 page.credentials = "test"
86 ps.pages.append(page)
87
88 did_run = [False]
89
90 with tempfile.NamedTemporaryFile() as f:
91 f.write(SIMPLE_CREDENTIALS_STRING)
92 f.flush()
93 ps.credentials_path = f.name
94
95 class TestThatInstallsCredentialsBackend(page_test.PageTest):
96 def __init__(self, credentials_backend):
97 super(TestThatInstallsCredentialsBackend, self).__init__('RunTest')
98 self._credentials_backend = credentials_backend
99
100 def SetUpBrowser(self, browser):
101 browser.credentials.AddBackend(self._credentials_backend)
102
103 def RunTest(self, page, tab, results): # pylint: disable=W0613,R0201
104 did_run[0] = True
105
106 test = TestThatInstallsCredentialsBackend(credentials_backend)
107 with page_runner.PageRunner(ps) as runner:
108 options = options_for_unittests.GetCopy()
109 possible_browser = browser_finder.FindBrowser(options)
110 runner.Run(options, possible_browser, test, results)
111
112 return did_run[0]
113
114 def testUserAgent(self):
115 ps = page_set.PageSet()
116 page = page_module.Page(
117 'file:///' + os.path.join('..', 'unittest_data', 'blank.html'),
118 ps,
119 base_dir=os.path.dirname(__file__))
120 ps.pages.append(page)
121 ps.user_agent_type = 'tablet'
122
123 class TestUserAgent(page_test.PageTest):
124 def RunTest(self, page, tab, results): # pylint: disable=W0613,R0201
125 actual_user_agent = tab.EvaluateJavaScript('window.navigator.userAgent')
126 expected_user_agent = user_agent.UA_TYPE_MAPPING['tablet']
127 assert actual_user_agent.strip() == expected_user_agent
128
129 # This is so we can check later that the test actually made it into this
130 # function. Previously it was timing out before even getting here, which
131 # should fail, but since it skipped all the asserts, it slipped by.
132 self.hasRun = True # pylint: disable=W0201
133
134 test = TestUserAgent('RunTest')
135 with page_runner.PageRunner(ps) as runner:
136 options = options_for_unittests.GetCopy()
137 possible_browser = browser_finder.FindBrowser(options)
138 results = page_test.PageTestResults()
139 runner.Run(options, possible_browser, test, results)
140
141 self.assertTrue(hasattr(test, 'hasRun') and test.hasRun)
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page_runner.py ('k') | tools/telemetry/telemetry/page_set.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698