OLD | NEW |
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 """Environment setup and teardown for remote devices.""" | 5 """Environment setup and teardown for remote devices.""" |
6 | 6 |
7 import logging | 7 import logging |
8 import os | 8 import os |
9 import sys | 9 import sys |
10 | 10 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 self._GetAccessToken() | 75 self._GetAccessToken() |
76 if self._trigger: | 76 if self._trigger: |
77 self._device = self._SelectDevice() | 77 self._device = self._SelectDevice() |
78 | 78 |
79 def TearDown(self): | 79 def TearDown(self): |
80 """Teardown the test environment.""" | 80 """Teardown the test environment.""" |
81 self._RevokeAccessToken() | 81 self._RevokeAccessToken() |
82 | 82 |
83 def __enter__(self): | 83 def __enter__(self): |
84 """Set up the test run when used as a context manager.""" | 84 """Set up the test run when used as a context manager.""" |
85 self.SetUp() | 85 try: |
86 return self | 86 self.SetUp() |
| 87 return self |
| 88 except: |
| 89 self.__exit__(*sys.exc_info()) |
| 90 raise |
87 | 91 |
88 def __exit__(self, exc_type, exc_val, exc_tb): | 92 def __exit__(self, exc_type, exc_val, exc_tb): |
89 """Tears down the test run when used as a context manager.""" | 93 """Tears down the test run when used as a context manager.""" |
90 self.TearDown() | 94 self.TearDown() |
91 | 95 |
92 def _GetAccessToken(self): | 96 def _GetAccessToken(self): |
93 """Generates access token for remote device service.""" | 97 """Generates access token for remote device service.""" |
94 logging.info('Generating remote service access token') | 98 logging.info('Generating remote service access token') |
95 access_token_results = appurify_sanitized.api.access_token_generate( | 99 access_token_results = appurify_sanitized.api.access_token_generate( |
96 self._api_key, self._api_secret) | 100 self._api_key, self._api_secret) |
(...skipping 14 matching lines...) Expand all Loading... |
111 logging.info('Finding %s with %s to run tests on.' % | 115 logging.info('Finding %s with %s to run tests on.' % |
112 (self._remote_device, self._remote_device_os)) | 116 (self._remote_device, self._remote_device_os)) |
113 dev_list_res = appurify_sanitized.api.devices_list(self._access_token) | 117 dev_list_res = appurify_sanitized.api.devices_list(self._access_token) |
114 remote_device_helper.TestHttpResponse(dev_list_res, | 118 remote_device_helper.TestHttpResponse(dev_list_res, |
115 'Unable to generate access token.') | 119 'Unable to generate access token.') |
116 device_list = dev_list_res.json()['response'] | 120 device_list = dev_list_res.json()['response'] |
117 for device in device_list: | 121 for device in device_list: |
118 if (device['name'] == self._remote_device | 122 if (device['name'] == self._remote_device |
119 and device['os_version'] == self._remote_device_os): | 123 and device['os_version'] == self._remote_device_os): |
120 return device['device_type_id'] | 124 return device['device_type_id'] |
121 raise remote_device_helper.RemoteDeviceError( | 125 self._NoDeviceFound(device_list) |
122 'No device found: %s %s' % (self._remote_device, | 126 |
123 self._remote_device_os)) | 127 def _PrintAvailableDevices(self, device_list): |
| 128 def compare_devices(a,b): |
| 129 for key in ('os_version', 'name'): |
| 130 c = cmp(a[key], b[key]) |
| 131 if c: |
| 132 return c |
| 133 return 0 |
| 134 |
| 135 logging.critical('Available Android Devices:') |
| 136 android_devices = (d for d in device_list if d['os_name'] == 'Android') |
| 137 for d in sorted(android_devices, compare_devices): |
| 138 logging.critical(' %s %s', d['os_version'].ljust(7), d['name']) |
| 139 |
| 140 def _NoDeviceFound(self, device_list): |
| 141 self._PrintAvailableDevices(device_list) |
| 142 raise remote_device_helper.RemoteDeviceError('No device found: %s %s' % |
| 143 (self._remote_device, self._remote_device_os)) |
124 | 144 |
125 @property | 145 @property |
126 def device(self): | 146 def device(self): |
127 return self._device | 147 return self._device |
128 | 148 |
129 @property | 149 @property |
130 def token(self): | 150 def token(self): |
131 return self._access_token | 151 return self._access_token |
132 | 152 |
133 @property | 153 @property |
134 def results_path(self): | 154 def results_path(self): |
135 return self._results_path | 155 return self._results_path |
136 | 156 |
137 @property | 157 @property |
138 def runner_type(self): | 158 def runner_type(self): |
139 return self._runner_type | 159 return self._runner_type |
140 | 160 |
141 @property | 161 @property |
142 def runner_package(self): | 162 def runner_package(self): |
143 return self._runner_package | 163 return self._runner_package |
144 | 164 |
145 @property | 165 @property |
146 def trigger(self): | 166 def trigger(self): |
147 return self._trigger | 167 return self._trigger |
148 | 168 |
149 @property | 169 @property |
150 def collect(self): | 170 def collect(self): |
151 return self._collect | 171 return self._collect |
OLD | NEW |