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