| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Module containing class that implements an au_worker for a test device.""" |
| |
| import cros_build_lib as cros_lib |
| |
| from crostestutils.au_test_harness import au_worker |
| |
| |
| class RealAUWorker(au_worker.AUWorker): |
| """Test harness for updating real images.""" |
| |
| def __init__(self, options, test_results_root): |
| """Processes non-vm-specific options.""" |
| super(RealAUWorker, self).__init__(options, test_results_root) |
| self.remote = options.remote |
| if not self.remote: cros_lib.Die('We require a remote address for tests.') |
| |
| def PrepareBase(self, image_path, signed_base=False): |
| """Auto-update to base image to prepare for test.""" |
| self.PrepareRealBase(image_path, signed_base) |
| |
| def UpdateImage(self, image_path, src_image_path='', stateful_change='old', |
| proxy_port=None, private_key_path=None): |
| """Updates a remote image using image_to_live.sh.""" |
| stateful_change_flag = self.GetStatefulChangeFlag(stateful_change) |
| cmd = ['%s/image_to_live.sh' % self.crosutils, |
| '--remote=%s' % self.remote, |
| stateful_change_flag, |
| '--verify', |
| ] |
| self.AppendUpdateFlags(cmd, image_path, src_image_path, proxy_port, |
| private_key_path) |
| self.RunUpdateCmd(cmd) |
| |
| def UpdateUsingPayload(self, update_path, stateful_change='old', |
| proxy_port=None): |
| """Updates a remote image using image_to_live.sh.""" |
| stateful_change_flag = self.GetStatefulChangeFlag(stateful_change) |
| cmd = ['%s/image_to_live.sh' % self.crosutils, |
| '--payload=%s' % update_path, |
| '--remote=%s' % self.remote, |
| stateful_change_flag, |
| '--verify', |
| ] |
| if proxy_port: cmd.append('--proxy_port=%s' % proxy_port) |
| self.RunUpdateCmd(cmd) |
| |
| def VerifyImage(self, unittest, percent_required_to_pass=100, test=''): |
| """Verifies an image using run_remote_tests.sh with verification suite.""" |
| test_directory = self.GetNextResultsPath('verify') |
| if not test: test = self.verify_suite |
| |
| output = cros_lib.RunCommand( |
| ['run_remote_tests.sh', |
| '--remote=%s' % self.remote, |
| '--results_dir_root=%s' % test_directory, |
| test, |
| ], error_ok=True, enter_chroot=True, redirect_stdout=True, |
| cwd=self.crosutils) |
| return self.AssertEnoughTestsPassed(unittest, output, |
| percent_required_to_pass) |
| |