def RunTestsOnShard(self):
        results = base_test_result.TestRunResults()
        for test in self._tests:
            tries_left = self._retries
            result_type = None
            while (result_type != base_test_result.ResultType.PASS
                   and tries_left > 0):
                try:
                    self._TestSetUp(test)
                    result_type = self._RunSingleTest(test)
                except device_errors.CommandTimeoutError:
                    result_type = base_test_result.ResultType.TIMEOUT
                except device_errors.CommandFailedError:
                    logging.exception('Exception when executing %s.', test)
                    result_type = base_test_result.ResultType.FAIL
                finally:
                    self._TestTearDown()
                    if result_type != base_test_result.ResultType.PASS:
                        try:
                            device_recovery.RecoverDevice(
                                self._device, self._env.blacklist)
                        except device_errors.CommandTimeoutError:
                            logging.exception(
                                'Device failed to recover after failing %s.',
                                test)
                    tries_left -= 1

            results.AddResult(
                base_test_result.BaseTestResult(test, result_type))
        return results
Exemplo n.º 2
0
  def RunTestsOnShard(self):
    results = base_test_result.TestRunResults()
    for test in self._tests:
      tries_left = self._retries
      result_type = None
      while (result_type != base_test_result.ResultType.PASS
             and tries_left > 0):
        try:
          self._TestSetUp(test)
          result_type = self._RunSingleTest(test)
        except device_errors.CommandTimeoutError:
          result_type = base_test_result.ResultType.TIMEOUT
        except device_errors.CommandFailedError:
          logging.exception('Exception when executing %s.', test)
          result_type = base_test_result.ResultType.FAIL
        finally:
          self._TestTearDown()
          if result_type != base_test_result.ResultType.PASS:
            try:
              # TODO(rnephew): Possible problem when restarting on N7 devices.
              # Determine if this is true. crbug.com/667470
              if 'Nexus 7' not in self._device.product_model:
                device_recovery.RecoverDevice(self._device, self._env.blacklist)
              else:
                logging.critical('Not attempting device recovery.')
            except device_errors.CommandTimeoutError:
              logging.exception(
                  'Device failed to recover after failing %s.', test)
          tries_left -= 1

      results.AddResult(base_test_result.BaseTestResult(test, result_type))
    return results