Home | History | Annotate | Download | only in policy_AUServer
      1 # Copyright 2018 The Chromium OS 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 import logging
      6 
      7 from autotest_lib.client.common_lib.cros import tpm_utils
      8 from autotest_lib.server.cros.update_engine import update_engine_test
      9 
     10 
     11 class policy_AUServer(update_engine_test.UpdateEngineTest):
     12     """
     13     This server test is used just to get the URL of the payload to use. It
     14     will then call into a client side test to test different things in
     15     the Omaha response.
     16     """
     17     version = 1
     18 
     19     def clear_tpm_if_owned(self):
     20         """Clear the TPM only if device is already owned."""
     21         tpm_status = tpm_utils.TPMStatus(self._host)
     22         logging.info('TPM status: %s', tpm_status)
     23         if tpm_status['Owned']:
     24             logging.info('Clearing TPM because this device is owned.')
     25             tpm_utils.ClearTPMOwnerRequest(self._host)
     26 
     27 
     28     def cleanup(self):
     29         """Cleanup for this test."""
     30         super(policy_AUServer, self).cleanup()
     31         self.clear_tpm_if_owned()
     32         self._host.reboot()
     33 
     34 
     35     def run_once(self, client_test, case, full_payload=True,
     36                  job_repo_url=None, running_at_desk=False):
     37         """
     38         Starting point of this test.
     39 
     40         Note: base class sets host as self._host.
     41 
     42         @param client_test: the name of the Client test to run.
     43         @param case: the case to run for the given Client test.
     44         @param full_payload: whether the update should be full or incremental.
     45         @param job_repo_url: url provided at runtime (or passed in locally
     46                              when running at workstation).
     47         @param running_at_desk: indicates test is run from a workstation.
     48 
     49         """
     50         self._job_repo_url = job_repo_url
     51 
     52         # Clear TPM to ensure that client test can enroll device.
     53         self.clear_tpm_if_owned()
     54 
     55         # Figure out the payload to use for the current build.
     56         payload = self._get_payload_url(full_payload=full_payload)
     57         image_url = self._stage_payload_by_uri(payload)
     58         file_info = self._get_staged_file_info(image_url)
     59 
     60         if running_at_desk:
     61             image_url = self._copy_payload_to_public_bucket(payload)
     62             logging.info('We are running from a workstation. Putting URL on a '
     63                          'public location: %s', image_url)
     64 
     65         logging.info('url: %s', image_url)
     66         logging.info('file_info: %s', file_info)
     67 
     68         self._run_client_test_and_check_result(client_test,
     69                                                case=case,
     70                                                image_url=image_url,
     71                                                image_size=file_info['size'],
     72                                                sha256=file_info['sha256'])
     73