OLD | NEW |
(Empty) | |
| 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 |
| 3 # found in the LICENSE file. |
| 4 |
| 5 """Run specific test on specific environment.""" |
| 6 |
| 7 import logging |
| 8 import os |
| 9 import sys |
| 10 |
| 11 from pylib import constants |
| 12 from pylib.base import base_test_result |
| 13 from pylib.remote.device import appurify_sanitized |
| 14 from pylib.remote.device import remote_device_test_run |
| 15 from pylib.remote.device import remote_device_helper |
| 16 |
| 17 |
| 18 class RemoteDeviceUirobotTestRun(remote_device_test_run.RemoteDeviceTestRun): |
| 19 """Run uirobot tests on a remote device.""" |
| 20 |
| 21 |
| 22 def __init__(self, env, test_instance): |
| 23 """Constructor. |
| 24 |
| 25 Args: |
| 26 env: Environment the tests will run in. |
| 27 test_instance: The test that will be run. |
| 28 """ |
| 29 super(RemoteDeviceUirobotTestRun, self).__init__(env, test_instance) |
| 30 |
| 31 #override |
| 32 def TestPackage(self): |
| 33 return self._test_instance.package_name |
| 34 |
| 35 #override |
| 36 def _TriggerSetUp(self): |
| 37 """Set up the triggering of a test run.""" |
| 38 logging.info('Triggering test run.') |
| 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 'Unknown device type: %s' % self._env.device_type) |
| 47 |
| 48 self._app_id = self._UploadAppToDevice(self._test_instance.app_under_test) |
| 49 if not self._env.runner_type: |
| 50 runner_type = default_runner_type |
| 51 logging.info('Using default runner type: %s', default_runner_type) |
| 52 else: |
| 53 runner_type = self._env.runner_type |
| 54 |
| 55 self._test_id = self._UploadTestToDevice( |
| 56 'android_robot', None, app_id=self._app_id) |
| 57 config_body = {'duration': self._test_instance.minutes} |
| 58 self._SetTestConfig(runner_type, config_body) |
| 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 |
| 79 #override |
| 80 def _ParseTestResults(self): |
| 81 logging.info('Parsing results from remote service.') |
| 82 results = base_test_result.TestRunResults() |
| 83 if self._results['results']['pass']: |
| 84 result_type = base_test_result.ResultType.PASS |
| 85 else: |
| 86 result_type = base_test_result.ResultType.FAIL |
| 87 results.AddResult(base_test_result.BaseTestResult('uirobot', result_type)) |
| 88 return results |
OLD | NEW |