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

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

Issue 265743002: [Android] Switch to new interfaces of GetAVDs and RestartAdbServer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
5 """
6 Unit tests for the contents of device_utils.py (mostly DeviceUtils).
7 """
8 # pylint: disable=W0212
9 # pylint: disable=W0613
10
11 import time
12 import unittest
13 from pylib.device import adb_wrapper
14 from pylib.device import device_utils
15
16
17 class DeviceUtilsTest(unittest.TestCase):
18
19 _decorated_function_called_count = 0
20
21 def testFunctionTimesOut(self):
22 """ Tests that RunWithTimeoutAndRetries handles the timeout logic for
23 functions.
24 """
25 def alwaysTimesOut(timeout=None, retries=None):
26 DeviceUtilsTest._decorated_function_called_count += 1
27 time.sleep(100 * timeout)
28
29 start_time = time.time()
30 with self.assertRaises(adb_wrapper.CommandTimeoutError):
31 device_utils.RunWithTimeoutAndRetries(alwaysTimesOut, timeout=1,
32 retries=0)
33 elapsed_time = time.time() - start_time
34 self.assertTrue(elapsed_time >= 1)
35
36 def testFunctionRetries(self):
37 """ Tests that RunWithTimeoutAndRetries handles the retries logic for
38 functions.
39 """
40
41 DeviceUtilsTest._decorated_function_called_count = 0
42 def alwaysRaisesCommandFailedError(timeout=None, retries=None):
43 DeviceUtilsTest._decorated_function_called_count += 1
44 raise adb_wrapper.CommandFailedError(['testCommand'],
45 'testCommand failed')
46 with self.assertRaises(adb_wrapper.CommandFailedError):
47 device_utils.RunWithTimeoutAndRetries(alwaysRaisesCommandFailedError,
48 timeout=100, retries=10)
49 self.assertEquals(11, DeviceUtilsTest._decorated_function_called_count)
50
51 def testMethodTimesOut(self):
52 """ Tests that RunWithTimeoutAndRetries handles the timeout logic for
53 methods.
54 """
55 class TestObject(object):
56 def __init__(self, test_case):
57 self._test_case = test_case
58 self._default_timeout = device_utils._DEFAULT_TIMEOUT
59 self._default_retries = device_utils._DEFAULT_RETRIES
60 self.called = 0
61
62 def alwaysTimesOut(self, timeout=None, retries=None):
63 timeout = timeout if timeout is not None else self._default_timeout
64 retries = retries if retries is not None else self._default_retries
65 device_utils.RunWithTimeoutAndRetries(
66 type(self)._alwaysTimesOutImpl, self, timeout=timeout,
67 retries=retries)
68
69 def _alwaysTimesOutImpl(self, timeout=None, retries=None):
70 self.called += 1
71 time.sleep(100 * timeout)
72 self._test_case.assertFalse(True, msg='Failed to time out?')
73
74 test_obj = TestObject(self)
75 start_time = time.time()
76 with self.assertRaises(adb_wrapper.CommandTimeoutError):
77 test_obj.alwaysTimesOut(timeout=1, retries=0)
78 elapsed_time = time.time() - start_time
79 self.assertTrue(elapsed_time >= 1)
80 self.assertEquals(1, test_obj.called)
81
82 def testMethodRetries(self):
83 """ Tests that RunWithTimeoutAndRetries handles the retries logic for
84 methods.
85 """
86 class TestObject(object):
87 def __init__(self, test_case):
88 self._test_case = test_case
89 self._default_timeout = device_utils._DEFAULT_TIMEOUT
90 self._default_retries = device_utils._DEFAULT_RETRIES
91 self.called = 0
92
93 def alwaysRaisesCommandFailedError(self, timeout=None, retries=None):
94 timeout = timeout if timeout is not None else self._default_timeout
95 retries = retries if retries is not None else self._default_retries
96 device_utils.RunWithTimeoutAndRetries(
97 type(self)._alwaysRaisesCommandFailedErrorImpl,
98 self, timeout=timeout, retries=retries)
99
100 def _alwaysRaisesCommandFailedErrorImpl(self, timeout=None, retries=None):
101 self.called += 1
102 raise adb_wrapper.CommandFailedError(['testCommand'],
103 'testCommand failed')
104
105 test_obj = TestObject(self)
106 with self.assertRaises(adb_wrapper.CommandFailedError):
107 test_obj.alwaysRaisesCommandFailedError(retries=10)
108 self.assertEquals(11, test_obj.called)
109
110
111 if __name__ == '__main__':
112 unittest.main()
113
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698