import time from autotest_lib.client.common_lib import error from autotest_lib.server import test class platform_ActivateDate(test.test): """ Tests that activate date is run correctly from a clean system state. For context, activate date is an upstart script located in: chromeos-base/chromeos-activate-date It attempts to set the initial date when a new chromebook is first used by the customer, which drives things like battery warranty issues. """ version = 1 def run_once(self, host): host.run('truncate -s 0 /var/log/messages') host.run('activate_date --clean') # Since the activate_date value was cleaned, this reboot will cause it # to execute the activation sequence. host.reboot() # The activation sequence polls with a 200 second sleep, which seems # pretty high, but we'll wait for at least one of those sleep cycles. poll_interval = 10 max_num_attempts = 21 current_attempt = 1 success = False while current_attempt <= max_num_attempts and not success: # Autotest logs the grep command to the system log, so we're just # going to search for it locally. get_log_cmd = 'cat /var/log/messages' success = 'Activation date set' in host.run(get_log_cmd).stdout if not success: current_attempt = current_attempt + 1 time.sleep(poll_interval) if not success: raise error.TestFail('Failed to set activation date') # After this reboot, vpd_get_value ActivateDate should be set already # because this is what prevents the init script from executing again. host.reboot() if not host.run('vpd_get_value ActivateDate').stdout: raise error.TestFail( 'ActivateDate should be set correctly after reboot')