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

Side by Side Diff: build/android/pylib/device/decorators_test.py

Issue 1288993002: Revert of [Android] Remove android_commands and android_testrunner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « build/android/pylib/device/decorators.py ('k') | build/android/pylib/device/device_utils.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """ 5 """
6 Unit tests for decorators.py. 6 Unit tests for decorators.py.
7 """ 7 """
8 8
9 # pylint: disable=W0613 9 # pylint: disable=W0613
10 10
11 import os 11 import os
12 import sys 12 import sys
13 import time 13 import time
14 import traceback 14 import traceback
15 import unittest 15 import unittest
16 16
17 from pylib import constants 17 from pylib import constants
18 from pylib.device import decorators 18 from pylib.device import decorators
19 from pylib.device import device_errors 19 from pylib.device import device_errors
20 from pylib.utils import reraiser_thread 20 from pylib.utils import reraiser_thread
21 21
22 # TODO(jbudorick) Remove once the DeviceUtils implementations are no longer
23 # backed by AndroidCommands / android_testrunner.
24 sys.path.append(os.path.join(constants.DIR_SOURCE_ROOT, 'third_party',
25 'android_testrunner'))
26 import errors as old_errors
27
22 _DEFAULT_TIMEOUT = 30 28 _DEFAULT_TIMEOUT = 30
23 _DEFAULT_RETRIES = 3 29 _DEFAULT_RETRIES = 3
24 30
25 class DecoratorsTest(unittest.TestCase): 31 class DecoratorsTest(unittest.TestCase):
26 _decorated_function_called_count = 0 32 _decorated_function_called_count = 0
27 33
28 def testFunctionDecoratorDoesTimeouts(self): 34 def testFunctionDecoratorDoesTimeouts(self):
29 """Tests that the base decorator handles the timeout logic.""" 35 """Tests that the base decorator handles the timeout logic."""
30 DecoratorsTest._decorated_function_called_count = 0 36 DecoratorsTest._decorated_function_called_count = 0
31 @decorators.WithTimeoutAndRetries 37 @decorators.WithTimeoutAndRetries
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 with self.assertRaises(KeyError): 71 with self.assertRaises(KeyError):
66 requiresExplicitTimeoutAndRetries(retries=0) 72 requiresExplicitTimeoutAndRetries(retries=0)
67 expected_timeout = 10 73 expected_timeout = 10
68 expected_retries = 1 74 expected_retries = 1
69 (actual_timeout, actual_retries) = ( 75 (actual_timeout, actual_retries) = (
70 requiresExplicitTimeoutAndRetries(timeout=expected_timeout, 76 requiresExplicitTimeoutAndRetries(timeout=expected_timeout,
71 retries=expected_retries)) 77 retries=expected_retries))
72 self.assertEquals(expected_timeout, actual_timeout) 78 self.assertEquals(expected_timeout, actual_timeout)
73 self.assertEquals(expected_retries, actual_retries) 79 self.assertEquals(expected_retries, actual_retries)
74 80
81 def testFunctionDecoratorTranslatesOldExceptions(self):
82 """Tests that the explicit decorator translates old exceptions."""
83 @decorators.WithTimeoutAndRetries
84 def alwaysRaisesProvidedException(exception, timeout=None, retries=None):
85 raise exception
86
87 exception_desc = 'Old response timeout error'
88 with self.assertRaises(device_errors.CommandTimeoutError) as e:
89 alwaysRaisesProvidedException(
90 old_errors.WaitForResponseTimedOutError(exception_desc),
91 timeout=10, retries=1)
92 self.assertEquals(exception_desc, str(e.exception))
93
94 exception_desc = 'Old device error'
95 with self.assertRaises(device_errors.DeviceUnreachableError) as e:
96 alwaysRaisesProvidedException(
97 old_errors.DeviceUnresponsiveError(exception_desc),
98 timeout=10, retries=1)
99 self.assertEquals(exception_desc, str(e.exception))
100
75 def testFunctionDecoratorTranslatesReraiserExceptions(self): 101 def testFunctionDecoratorTranslatesReraiserExceptions(self):
76 """Tests that the explicit decorator translates reraiser exceptions.""" 102 """Tests that the explicit decorator translates reraiser exceptions."""
77 @decorators.WithTimeoutAndRetries 103 @decorators.WithTimeoutAndRetries
78 def alwaysRaisesProvidedException(exception, timeout=None, retries=None): 104 def alwaysRaisesProvidedException(exception, timeout=None, retries=None):
79 raise exception 105 raise exception
80 106
81 exception_desc = 'Reraiser thread timeout error' 107 exception_desc = 'Reraiser thread timeout error'
82 with self.assertRaises(device_errors.CommandTimeoutError) as e: 108 with self.assertRaises(device_errors.CommandTimeoutError) as e:
83 alwaysRaisesProvidedException( 109 alwaysRaisesProvidedException(
84 reraiser_thread.TimeoutError(exception_desc), 110 reraiser_thread.TimeoutError(exception_desc),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 self.assertEquals(30, alwaysReturnsTimeouts()) 159 self.assertEquals(30, alwaysReturnsTimeouts())
134 self.assertEquals(120, alwaysReturnsTimeouts(timeout=120)) 160 self.assertEquals(120, alwaysReturnsTimeouts(timeout=120))
135 161
136 @decorators.WithTimeoutAndRetriesDefaults(30, 10) 162 @decorators.WithTimeoutAndRetriesDefaults(30, 10)
137 def alwaysReturnsRetries(timeout=None, retries=None): 163 def alwaysReturnsRetries(timeout=None, retries=None):
138 return retries 164 return retries
139 165
140 self.assertEquals(10, alwaysReturnsRetries()) 166 self.assertEquals(10, alwaysReturnsRetries())
141 self.assertEquals(1, alwaysReturnsRetries(retries=1)) 167 self.assertEquals(1, alwaysReturnsRetries(retries=1))
142 168
169 def testDefaultsFunctionDecoratorTranslatesOldExceptions(self):
170 """Tests that the explicit decorator translates old exceptions."""
171 @decorators.WithTimeoutAndRetriesDefaults(30, 10)
172 def alwaysRaisesProvidedException(exception, timeout=None, retries=None):
173 raise exception
174
175 exception_desc = 'Old response timeout error'
176 with self.assertRaises(device_errors.CommandTimeoutError) as e:
177 alwaysRaisesProvidedException(
178 old_errors.WaitForResponseTimedOutError(exception_desc))
179 self.assertEquals(exception_desc, str(e.exception))
180
181 exception_desc = 'Old device error'
182 with self.assertRaises(device_errors.DeviceUnreachableError) as e:
183 alwaysRaisesProvidedException(
184 old_errors.DeviceUnresponsiveError(exception_desc))
185 self.assertEquals(exception_desc, str(e.exception))
186
143 def testDefaultsFunctionDecoratorTranslatesReraiserExceptions(self): 187 def testDefaultsFunctionDecoratorTranslatesReraiserExceptions(self):
144 """Tests that the explicit decorator translates reraiser exceptions.""" 188 """Tests that the explicit decorator translates reraiser exceptions."""
145 @decorators.WithTimeoutAndRetriesDefaults(30, 10) 189 @decorators.WithTimeoutAndRetriesDefaults(30, 10)
146 def alwaysRaisesProvidedException(exception, timeout=None, retries=None): 190 def alwaysRaisesProvidedException(exception, timeout=None, retries=None):
147 raise exception 191 raise exception
148 192
149 exception_desc = 'Reraiser thread timeout error' 193 exception_desc = 'Reraiser thread timeout error'
150 with self.assertRaises(device_errors.CommandTimeoutError) as e: 194 with self.assertRaises(device_errors.CommandTimeoutError) as e:
151 alwaysRaisesProvidedException( 195 alwaysRaisesProvidedException(
152 reraiser_thread.TimeoutError(exception_desc)) 196 reraiser_thread.TimeoutError(exception_desc))
(...skipping 19 matching lines...) Expand all
172 DecoratorsTest._decorated_function_called_count = 0 216 DecoratorsTest._decorated_function_called_count = 0
173 @decorators.WithExplicitTimeoutAndRetries(30, 10) 217 @decorators.WithExplicitTimeoutAndRetries(30, 10)
174 def alwaysRaisesCommandFailedError(): 218 def alwaysRaisesCommandFailedError():
175 DecoratorsTest._decorated_function_called_count += 1 219 DecoratorsTest._decorated_function_called_count += 1
176 raise device_errors.CommandFailedError('testCommand failed') 220 raise device_errors.CommandFailedError('testCommand failed')
177 221
178 with self.assertRaises(device_errors.CommandFailedError): 222 with self.assertRaises(device_errors.CommandFailedError):
179 alwaysRaisesCommandFailedError() 223 alwaysRaisesCommandFailedError()
180 self.assertEquals(11, DecoratorsTest._decorated_function_called_count) 224 self.assertEquals(11, DecoratorsTest._decorated_function_called_count)
181 225
226 def testExplicitDecoratorTranslatesOldExceptions(self):
227 """Tests that the explicit decorator translates old exceptions."""
228 @decorators.WithExplicitTimeoutAndRetries(30, 10)
229 def alwaysRaisesProvidedException(exception):
230 raise exception
231
232 exception_desc = 'Old response timeout error'
233 with self.assertRaises(device_errors.CommandTimeoutError) as e:
234 alwaysRaisesProvidedException(
235 old_errors.WaitForResponseTimedOutError(exception_desc))
236 self.assertEquals(exception_desc, str(e.exception))
237
238 exception_desc = 'Old device error'
239 with self.assertRaises(device_errors.DeviceUnreachableError) as e:
240 alwaysRaisesProvidedException(
241 old_errors.DeviceUnresponsiveError(exception_desc))
242 self.assertEquals(exception_desc, str(e.exception))
243
182 def testExplicitDecoratorTranslatesReraiserExceptions(self): 244 def testExplicitDecoratorTranslatesReraiserExceptions(self):
183 """Tests that the explicit decorator translates reraiser exceptions.""" 245 """Tests that the explicit decorator translates reraiser exceptions."""
184 @decorators.WithExplicitTimeoutAndRetries(30, 10) 246 @decorators.WithExplicitTimeoutAndRetries(30, 10)
185 def alwaysRaisesProvidedException(exception): 247 def alwaysRaisesProvidedException(exception):
186 raise exception 248 raise exception
187 249
188 exception_desc = 'Reraiser thread timeout error' 250 exception_desc = 'Reraiser thread timeout error'
189 with self.assertRaises(device_errors.CommandTimeoutError) as e: 251 with self.assertRaises(device_errors.CommandTimeoutError) as e:
190 alwaysRaisesProvidedException( 252 alwaysRaisesProvidedException(
191 reraiser_thread.TimeoutError(exception_desc)) 253 reraiser_thread.TimeoutError(exception_desc))
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 329
268 def testMethodDecoratorPassesValues(self): 330 def testMethodDecoratorPassesValues(self):
269 """Tests that the method decorator passes timeout and retries kwargs.""" 331 """Tests that the method decorator passes timeout and retries kwargs."""
270 test_obj = self._MethodDecoratorTestObject( 332 test_obj = self._MethodDecoratorTestObject(
271 self, default_timeout=42, default_retries=31) 333 self, default_timeout=42, default_retries=31)
272 self.assertEquals(42, test_obj.alwaysReturnsTimeout()) 334 self.assertEquals(42, test_obj.alwaysReturnsTimeout())
273 self.assertEquals(41, test_obj.alwaysReturnsTimeout(timeout=41)) 335 self.assertEquals(41, test_obj.alwaysReturnsTimeout(timeout=41))
274 self.assertEquals(31, test_obj.alwaysReturnsRetries()) 336 self.assertEquals(31, test_obj.alwaysReturnsRetries())
275 self.assertEquals(32, test_obj.alwaysReturnsRetries(retries=32)) 337 self.assertEquals(32, test_obj.alwaysReturnsRetries(retries=32))
276 338
339 def testMethodDecoratorTranslatesOldExceptions(self):
340 test_obj = self._MethodDecoratorTestObject(self)
341
342 exception_desc = 'Old response timeout error'
343 with self.assertRaises(device_errors.CommandTimeoutError) as e:
344 test_obj.alwaysRaisesProvidedException(
345 old_errors.WaitForResponseTimedOutError(exception_desc))
346 self.assertEquals(exception_desc, str(e.exception))
347
348 exception_desc = 'Old device error'
349 with self.assertRaises(device_errors.DeviceUnreachableError) as e:
350 test_obj.alwaysRaisesProvidedException(
351 old_errors.DeviceUnresponsiveError(exception_desc))
352 self.assertEquals(exception_desc, str(e.exception))
353
277 def testMethodDecoratorTranslatesReraiserExceptions(self): 354 def testMethodDecoratorTranslatesReraiserExceptions(self):
278 test_obj = self._MethodDecoratorTestObject(self) 355 test_obj = self._MethodDecoratorTestObject(self)
279 356
280 exception_desc = 'Reraiser thread timeout error' 357 exception_desc = 'Reraiser thread timeout error'
281 with self.assertRaises(device_errors.CommandTimeoutError) as e: 358 with self.assertRaises(device_errors.CommandTimeoutError) as e:
282 test_obj.alwaysRaisesProvidedException( 359 test_obj.alwaysRaisesProvidedException(
283 reraiser_thread.TimeoutError(exception_desc)) 360 reraiser_thread.TimeoutError(exception_desc))
284 self.assertEquals(exception_desc, str(e.exception)) 361 self.assertEquals(exception_desc, str(e.exception))
285 362
286 if __name__ == '__main__': 363 if __name__ == '__main__':
287 unittest.main(verbosity=2) 364 unittest.main(verbosity=2)
288 365
OLDNEW
« no previous file with comments | « build/android/pylib/device/decorators.py ('k') | build/android/pylib/device/device_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698