55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
|
|
# Copyright 2022 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.
|
||
|
|
|
||
|
|
import logging
|
||
|
|
import time
|
||
|
|
|
||
|
|
from autotest_lib.client.common_lib import error
|
||
|
|
from autotest_lib.client.common_lib.cros import cr50_utils
|
||
|
|
from autotest_lib.server.cros.faft.cr50_test import Cr50Test
|
||
|
|
|
||
|
|
|
||
|
|
class firmware_Cr50FIPSDS(Cr50Test):
|
||
|
|
"""
|
||
|
|
Verify cr50 fips works after coming out of deep sleep.
|
||
|
|
"""
|
||
|
|
version = 1
|
||
|
|
|
||
|
|
def apshutdown(self):
|
||
|
|
"""Shutdown the AP and give cr50 enough time to enter deep sleep."""
|
||
|
|
self.cr50.ccd_disable()
|
||
|
|
self.set_ap_off_power_mode('shutdown')
|
||
|
|
self.cr50.clear_deep_sleep_count()
|
||
|
|
time.sleep(30)
|
||
|
|
|
||
|
|
def check_ds_resume(self):
|
||
|
|
"""Check the system resumed ok."""
|
||
|
|
|
||
|
|
if not self.cr50.fips_crypto_allowed():
|
||
|
|
raise error.TestFail('Crypto not allowed after deep sleep')
|
||
|
|
# Make sure the EC jumped to RW. This could catch ec-efs issues.
|
||
|
|
logging.info(
|
||
|
|
self.ec.send_command_get_output('sysinfo', ['Jumped: yes']))
|
||
|
|
if not self.cr50.get_deep_sleep_count():
|
||
|
|
raise error.TestError('Cr50 did not enter deep sleep')
|
||
|
|
# Make sure the DUT fully booted and is sshable.
|
||
|
|
logging.info('Running %r', cr50_utils.GetRunningVersion(self.host))
|
||
|
|
|
||
|
|
def run_once(self, host):
|
||
|
|
"""Verify FIPS after deep sleep."""
|
||
|
|
if not self.cr50.has_command('fips'):
|
||
|
|
raise error.TestNAError('Cr50 does not support fips')
|
||
|
|
|
||
|
|
# Verify EC sysjump works on deep sleep resume.
|
||
|
|
self.apshutdown()
|
||
|
|
self.ec.reboot()
|
||
|
|
time.sleep(7)
|
||
|
|
self.check_ds_resume()
|
||
|
|
|
||
|
|
# Verify the AP can boot after resume without EC reset.
|
||
|
|
self.apshutdown()
|
||
|
|
self.servo.power_normal_press()
|
||
|
|
time.sleep(7)
|
||
|
|
self.check_ds_resume()
|