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 """Run specific test on specific environment.""" | 5 """Run specific test on specific environment.""" |
6 | 6 |
7 import logging | 7 import logging |
8 import os | 8 import os |
9 import sys | 9 import sys |
10 | 10 |
11 from pylib import constants | 11 from pylib import constants |
12 from pylib.base import base_test_result | 12 from pylib.base import base_test_result |
13 from pylib.remote.device import appurify_sanitized | 13 from pylib.remote.device import appurify_sanitized |
14 from pylib.remote.device import remote_device_test_run | 14 from pylib.remote.device import remote_device_test_run |
15 from pylib.remote.device import remote_device_helper | 15 from pylib.remote.device import remote_device_helper |
16 | 16 |
17 | 17 |
18 class RemoteDeviceUirobotTestRun(remote_device_test_run.RemoteDeviceTestRun): | 18 class RemoteDeviceUirobotTestRun(remote_device_test_run.RemoteDeviceTestRun): |
19 """Run uirobot tests on a remote device.""" | 19 """Run uirobot tests on a remote device.""" |
20 | 20 |
21 DEFAULT_RUNNER_TYPE = 'android_robot' | |
22 | 21 |
23 def __init__(self, env, test_instance): | 22 def __init__(self, env, test_instance): |
24 """Constructor. | 23 """Constructor. |
25 | 24 |
26 Args: | 25 Args: |
27 env: Environment the tests will run in. | 26 env: Environment the tests will run in. |
28 test_instance: The test that will be run. | 27 test_instance: The test that will be run. |
29 """ | 28 """ |
30 super(RemoteDeviceUirobotTestRun, self).__init__(env, test_instance) | 29 super(RemoteDeviceUirobotTestRun, self).__init__(env, test_instance) |
31 | 30 |
32 #override | 31 #override |
33 def TestPackage(self): | 32 def TestPackage(self): |
34 return self._test_instance.package_name | 33 return self._test_instance.package_name |
35 | 34 |
36 #override | 35 #override |
37 def _TriggerSetUp(self): | 36 def _TriggerSetUp(self): |
38 """Set up the triggering of a test run.""" | 37 """Set up the triggering of a test run.""" |
39 logging.info('Triggering test run.') | 38 logging.info('Triggering test run.') |
40 self._app_id = self._UploadAppToDevice(self._test_instance.apk_under_test) | 39 |
| 40 if self._env.device_type == 'Android': |
| 41 default_runner_type = 'android_robot' |
| 42 elif self._env.device_type == 'iOS': |
| 43 default_runner_type = 'ios_robot' |
| 44 else: |
| 45 raise remote_device_helper.RemoteDeviceError( |
| 46 'Unkown device type: %s' % self._env.device_type) |
| 47 |
| 48 self._app_id = self._UploadAppToDevice(self._test_instance.app_under_test) |
41 if not self._env.runner_type: | 49 if not self._env.runner_type: |
42 runner_type = self.DEFAULT_RUNNER_TYPE | 50 runner_type = default_runner_type |
43 logging.info('Using default runner type: %s', self.DEFAULT_RUNNER_TYPE) | 51 logging.info('Using default runner type: %s', default_runner_type) |
44 else: | 52 else: |
45 runner_type = self._env.runner_type | 53 runner_type = self._env.runner_type |
46 self._test_id = self._GetTestByName(runner_type) | 54 |
| 55 self._test_id = self._UploadTestToDevice( |
| 56 'android_robot', None, app_id=self._app_id) |
47 config_body = {'duration': self._test_instance.minutes} | 57 config_body = {'duration': self._test_instance.minutes} |
48 self._SetTestConfig(runner_type, config_body) | 58 self._SetTestConfig(runner_type, config_body) |
49 | 59 |
| 60 |
| 61 # TODO(rnephew): Switch to base class implementation when supported. |
| 62 #override |
| 63 def _UploadTestToDevice(self, test_type, test_path, app_id=None): |
| 64 if test_path: |
| 65 logging.info("Ignoring test path.") |
| 66 data = { |
| 67 'access_token':self._env.token, |
| 68 'test_type':test_type, |
| 69 'app_id':app_id, |
| 70 } |
| 71 with appurify_sanitized.SanitizeLogging(self._env.verbose_count, |
| 72 logging.WARNING): |
| 73 test_upload_res = appurify_sanitized.utils.post('tests/upload', |
| 74 data, None) |
| 75 remote_device_helper.TestHttpResponse( |
| 76 test_upload_res, 'Unable to get UiRobot test id.') |
| 77 return test_upload_res.json()['response']['test_id'] |
| 78 |
50 #override | 79 #override |
51 def _ParseTestResults(self): | 80 def _ParseTestResults(self): |
52 logging.info('Parsing results from remote service.') | 81 logging.info('Parsing results from remote service.') |
53 results = base_test_result.TestRunResults() | 82 results = base_test_result.TestRunResults() |
54 if self._results['results']['pass']: | 83 if self._results['results']['pass']: |
55 result_type = base_test_result.ResultType.PASS | 84 result_type = base_test_result.ResultType.PASS |
56 else: | 85 else: |
57 result_type = base_test_result.ResultType.FAIL | 86 result_type = base_test_result.ResultType.FAIL |
58 results.AddResult(base_test_result.BaseTestResult('uirobot', result_type)) | 87 results.AddResult(base_test_result.BaseTestResult('uirobot', result_type)) |
59 return results | 88 return results |
OLD | NEW |