xref: /aosp_15_r20/external/autotest/server/site_tests/firmware_MiniDiag/firmware_MiniDiag.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1# Copyright 2021 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
5import logging
6
7from autotest_lib.client.common_lib import error
8from autotest_lib.server.cros.faft.firmware_test import FirmwareTest
9
10
11class firmware_MiniDiag(FirmwareTest):
12    """
13    Servo based MiniDiag firmware boot test.
14    """
15    version = 1
16
17    def initialize(self, host, cmdline_args):
18        super(firmware_MiniDiag, self).initialize(host, cmdline_args)
19
20        if not self.menu_switcher:
21            raise error.TestNAError('Test skipped for menuless UI')
22        if not self.faft_config.minidiag_enabled:
23            raise error.TestNAError('MiniDiag is not enabled for this board')
24        # Need apreset to leave MiniDiag
25        if not self.ec.has_command('apreset'):
26            raise error.TestNAError('EC command apreset is not supported')
27
28        self.switcher.setup_mode('normal')
29        self.setup_usbkey(usbkey=False)
30
31    def run_once(self):
32        """Method which actually runs the test."""
33        # Trigger MiniDiag by menu navigation
34        logging.info('Trigger MiniDiag by menu navigation')
35        self.switcher.enable_rec_mode_and_reboot(usb_state='host')
36        self.switcher.wait_for_client_offline()
37        self.menu_switcher.trigger_rec_to_minidiag()
38
39        # Navigator MiniDiag
40        logging.info('Navigate among MiniDiag screens')
41        self.menu_switcher.navigate_minidiag_storage()
42        self.menu_switcher.navigate_minidiag_quick_memory_check()
43
44        # Leave MiniDiag and reboot
45        logging.info('Leave MiniDiag and reboot')
46        self.menu_switcher.reset_and_leave_minidiag()
47        logging.info('Expect normal mode boot, done')
48        self.switcher.wait_for_client()
49