| 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 |