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

Side by Side Diff: build/android/pylib/remote/device/remote_device_environment.py

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
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 random 9 import random
10 import sys 10 import sys
11 11
12 from pylib import constants 12 from pylib import constants
13 from pylib.base import environment 13 from pylib.base import environment
14 from pylib.remote.device import appurify_sanitized 14 from pylib.remote.device import appurify_sanitized
15 from pylib.remote.device import remote_device_helper 15 from pylib.remote.device import remote_device_helper
16 16
17 class RemoteDeviceEnvironment(environment.Environment): 17 class RemoteDeviceEnvironment(environment.Environment):
18 """An environment for running on remote devices.""" 18 """An environment for running on remote devices."""
19 19
20 _ENV_KEY = 'env'
21 _DEVICE_KEY = 'device'
22
20 def __init__(self, args, error_func): 23 def __init__(self, args, error_func):
21 """Constructor. 24 """Constructor.
22 25
23 Args: 26 Args:
24 args: Command line arguments. 27 args: Command line arguments.
25 error_func: error to show when using bad command line arguments. 28 error_func: error to show when using bad command line arguments.
26 """ 29 """
27 super(RemoteDeviceEnvironment, self).__init__() 30 super(RemoteDeviceEnvironment, self).__init__()
28 31
29 if args.api_key_file: 32 if args.api_key_file:
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 self.SetUp() 98 self.SetUp()
96 return self 99 return self
97 except: 100 except:
98 self.__exit__(*sys.exc_info()) 101 self.__exit__(*sys.exc_info())
99 raise 102 raise
100 103
101 def __exit__(self, exc_type, exc_val, exc_tb): 104 def __exit__(self, exc_type, exc_val, exc_tb):
102 """Tears down the test run when used as a context manager.""" 105 """Tears down the test run when used as a context manager."""
103 self.TearDown() 106 self.TearDown()
104 107
108 def DumpTo(self, persisted_data):
109 env_data = {
110 self._DEVICE_KEY: self._device,
111 }
112 persisted_data[self._ENV_KEY] = env_data
113
114 def LoadFrom(self, persisted_data):
115 env_data = persisted_data[self._ENV_KEY]
116 self._device = env_data[self._DEVICE_KEY]
117
105 def _GetAccessToken(self): 118 def _GetAccessToken(self):
106 """Generates access token for remote device service.""" 119 """Generates access token for remote device service."""
107 logging.info('Generating remote service access token') 120 logging.info('Generating remote service access token')
108 with appurify_sanitized.SanitizeLogging(self._verbose_count, 121 with appurify_sanitized.SanitizeLogging(self._verbose_count,
109 logging.WARNING): 122 logging.WARNING):
110 access_token_results = appurify_sanitized.api.access_token_generate( 123 access_token_results = appurify_sanitized.api.access_token_generate(
111 self._api_key, self._api_secret) 124 self._api_key, self._api_secret)
112 remote_device_helper.TestHttpResponse(access_token_results, 125 remote_device_helper.TestHttpResponse(access_token_results,
113 'Unable to generate access token.') 126 'Unable to generate access token.')
114 self._access_token = access_token_results.json()['response']['access_token'] 127 self._access_token = access_token_results.json()['response']['access_token']
(...skipping 23 matching lines...) Expand all
138 continue 151 continue
139 if self._remote_device and device['name'] != self._remote_device: 152 if self._remote_device and device['name'] != self._remote_device:
140 continue 153 continue
141 if (self._remote_device_os 154 if (self._remote_device_os
142 and device['os_version'] != self._remote_device_os): 155 and device['os_version'] != self._remote_device_os):
143 continue 156 continue
144 if ((self._remote_device and self._remote_device_os) 157 if ((self._remote_device and self._remote_device_os)
145 or device['available_devices_count']): 158 or device['available_devices_count']):
146 logging.info('Found device: %s %s', 159 logging.info('Found device: %s %s',
147 device['name'], device['os_version']) 160 device['name'], device['os_version'])
148 return device['device_type_id'] 161 return device
149 self._NoDeviceFound(device_list) 162 self._NoDeviceFound(device_list)
150 163
151 def _PrintAvailableDevices(self, device_list): 164 def _PrintAvailableDevices(self, device_list):
152 def compare_devices(a,b): 165 def compare_devices(a,b):
153 for key in ('os_version', 'name'): 166 for key in ('os_version', 'name'):
154 c = cmp(a[key], b[key]) 167 c = cmp(a[key], b[key])
155 if c: 168 if c:
156 return c 169 return c
157 return 0 170 return 0
158 171
159 logging.critical('Available Android Devices:') 172 logging.critical('Available Android Devices:')
160 android_devices = (d for d in device_list if d['os_name'] == 'Android') 173 android_devices = (d for d in device_list if d['os_name'] == 'Android')
161 for d in sorted(android_devices, compare_devices): 174 for d in sorted(android_devices, compare_devices):
162 logging.critical(' %s %s', d['os_version'].ljust(7), d['name']) 175 logging.critical(' %s %s', d['os_version'].ljust(7), d['name'])
163 176
164 def _NoDeviceFound(self, device_list): 177 def _NoDeviceFound(self, device_list):
165 self._PrintAvailableDevices(device_list) 178 self._PrintAvailableDevices(device_list)
166 raise remote_device_helper.RemoteDeviceError('No device found.') 179 raise remote_device_helper.RemoteDeviceError('No device found.')
167 180
168 @property 181 @property
169 def device(self): 182 def collect(self):
170 return self._device 183 return self._collect
184
185 @property
186 def device_type_id(self):
187 return self._device['device_type_id']
188
189 @property
190 def only_output_failures(self):
191 # TODO(jbudorick): Remove this once b/18981674 is fixed.
192 return True
193
194 @property
195 def results_path(self):
196 return self._results_path
197
198 @property
199 def runner_package(self):
200 return self._runner_package
201
202 @property
203 def runner_type(self):
204 return self._runner_type
205
206 @property
207 def timeouts(self):
208 return self._timeouts
171 209
172 @property 210 @property
173 def token(self): 211 def token(self):
174 return self._access_token 212 return self._access_token
175 213
176 @property 214 @property
177 def results_path(self):
178 return self._results_path
179
180 @property
181 def runner_type(self):
182 return self._runner_type
183
184 @property
185 def runner_package(self):
186 return self._runner_package
187
188 @property
189 def trigger(self): 215 def trigger(self):
190 return self._trigger 216 return self._trigger
191 217
192 @property 218 @property
193 def collect(self):
194 return self._collect
195
196 @property
197 def verbose_count(self): 219 def verbose_count(self):
198 return self._verbose_count 220 return self._verbose_count
199
200 @property
201 def timeouts(self):
202 return self._timeouts
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698