xref: /openbmc/openbmc-test-automation/extended/test_bmc_reset_loop.robot (revision 397846bb8b337e333b8e09c3acd90c2ba33c019c)
196bd1224SGeorge Keishing*** Settings ***
296bd1224SGeorge KeishingDocumentation   Power cycle loop. This is to test where network service
396bd1224SGeorge Keishing...             becomes unavailable during AC-Cycle stress test.
496bd1224SGeorge Keishing
596bd1224SGeorge KeishingResource        ../lib/rest_client.robot
696bd1224SGeorge KeishingResource        ../lib/pdu/pdu.robot
796bd1224SGeorge KeishingResource        ../lib/utils.robot
896bd1224SGeorge KeishingResource        ../lib/openbmc_ffdc.robot
996bd1224SGeorge KeishingResource        ../lib/state_manager.robot
1096bd1224SGeorge KeishingResource        ../lib/boot_utils.robot
11c26e74deSGeorge KeishingResource        ../lib/code_update_utils.robot
129867beddSGeorge KeishingLibrary         ../lib/bmc_ssh_utils.py
1396bd1224SGeorge Keishing
1494659a2cSGeorge KeishingTest Teardown   Test Teardown Execution
15c26e74deSGeorge KeishingSuite Setup     Suite Setup Execution
1696bd1224SGeorge Keishing
1796bd1224SGeorge Keishing*** Variables ***
1896bd1224SGeorge Keishing${LOOP_COUNT}          ${50}
19*397846bbSGeorge Keishing${CHECK_FOR_ERRORS}    ${1}
2096bd1224SGeorge Keishing
212c89173cSGeorge Keishing# Error strings to check from journald.
225b8ff520SGeorge Keishing${ERROR_REGEX}     SEGV|core-dump|FAILURE|Failed to start
232c89173cSGeorge Keishing
2496bd1224SGeorge Keishing*** Test Cases ***
2596bd1224SGeorge Keishing
2696bd1224SGeorge KeishingRun Multiple Power Cycle
2796bd1224SGeorge Keishing    [Documentation]  Execute multiple power cycles.
2896bd1224SGeorge Keishing    [Setup]  Validate Parameters
2996bd1224SGeorge Keishing    [Tags]  Run_Multiple_Power_Cycle
3096bd1224SGeorge Keishing
3196bd1224SGeorge Keishing    # By default run test for 50 loops, else user input iteration.
3296bd1224SGeorge Keishing    # Fails immediately if any of the execution rounds fail and
3396bd1224SGeorge Keishing    # check if BMC is still pinging and FFDC is collected.
3496bd1224SGeorge Keishing    Repeat Keyword  ${LOOP_COUNT} times  Power Cycle System Via PDU
3596bd1224SGeorge Keishing
3696bd1224SGeorge Keishing
375d5b8a29SGeorge KeishingRun Multiple BMC Reset Via Redfish
3896bd1224SGeorge Keishing    [Documentation]  Execute multiple reboots via REST.
395d5b8a29SGeorge Keishing    [Tags]  Run_Multiple_BMC_Reset_Via_Redfish
4096bd1224SGeorge Keishing
4196bd1224SGeorge Keishing    # By default run test for 50 loops, else user input iteration.
4296bd1224SGeorge Keishing    # Fails immediately if any of the execution rounds fail and
4396bd1224SGeorge Keishing    # check if BMC is still pinging and FFDC is collected.
445d5b8a29SGeorge Keishing    Repeat Keyword  ${LOOP_COUNT} times  BMC Redfish Reset Cycle
4596bd1224SGeorge Keishing
4696bd1224SGeorge Keishing
4796bd1224SGeorge KeishingRun Multiple BMC Reset Via Reboot
4896bd1224SGeorge Keishing    [Documentation]  Execute multiple reboots via "reboot" command.
4996bd1224SGeorge Keishing    [Tags]  Run_Multiple_BMC_Reset_Via_Reboot
5096bd1224SGeorge Keishing
5196bd1224SGeorge Keishing    # By default run test for 50 loops, else user input iteration.
5296bd1224SGeorge Keishing    # Fails immediately if any of the execution rounds fail and
5396bd1224SGeorge Keishing    # check if BMC is still pinging and FFDC is collected.
5496bd1224SGeorge Keishing    Repeat Keyword  ${LOOP_COUNT} times  BMC Reboot Cycle
5596bd1224SGeorge Keishing
5696bd1224SGeorge Keishing
5796bd1224SGeorge Keishing*** Keywords ***
5896bd1224SGeorge Keishing
5996bd1224SGeorge KeishingPower Cycle System Via PDU
6096bd1224SGeorge Keishing    [Documentation]  Power cycle system and wait for BMC to reach Ready state.
615d5b8a29SGeorge Keishing
6296bd1224SGeorge Keishing    PDU Power Cycle
6396bd1224SGeorge Keishing    Check If BMC Is Up  5 min  10 sec
6496bd1224SGeorge Keishing
6596bd1224SGeorge Keishing    Wait Until Keyword Succeeds  10 min  10 sec  Is BMC Ready
66b39a679dSGeorge Keishing    Verify BMC RTC And UTC Time Drift
6796bd1224SGeorge Keishing
6896bd1224SGeorge Keishing
695d5b8a29SGeorge KeishingBMC Redfish Reset Cycle
705d5b8a29SGeorge Keishing    [Documentation]  Reset BMC via Redfish and verify required states.
715d5b8a29SGeorge Keishing
725d5b8a29SGeorge Keishing    Redfish OBMC Reboot (off)
73*397846bbSGeorge Keishing
745d5b8a29SGeorge Keishing    ${bmc_version}=  Get BMC Version
75*397846bbSGeorge Keishing    Valid Value  bmc_version  valid_values=['${initial_bmc_version}']
76*397846bbSGeorge Keishing
77*397846bbSGeorge Keishing    Run Keyword If  '${CHECK_FOR_ERRORS}' == '${1}'
78*397846bbSGeorge Keishing    ...  Check For Regex In Journald  ${ERROR_REGEX}  error_check=${0}  boot=-b
79*397846bbSGeorge Keishing
80b39a679dSGeorge Keishing    Verify BMC RTC And UTC Time Drift
8196bd1224SGeorge Keishing
8296bd1224SGeorge Keishing
8396bd1224SGeorge KeishingBMC Reboot Cycle
8496bd1224SGeorge Keishing    [Documentation]  Reboot BMC and wait for ready state.
855d5b8a29SGeorge Keishing
8696bd1224SGeorge Keishing    OBMC Reboot (off)  stack_mode=normal
875d5b8a29SGeorge Keishing    ${bmc_version}=  Get BMC Version
889aa2f0bbSGeorge Keishing    Valid Value  bmc_version  ["${initial_bmc_version}"]
89b39a679dSGeorge Keishing    Verify BMC RTC And UTC Time Drift
90ef3308b7SGeorge Keishing    Check For Regex In Journald  ${ERROR_REGEX}  error_check=${0}  boot=-b
915d5b8a29SGeorge Keishing    ${boot_side}=  Get BMC Flash Chip Boot Side
925d5b8a29SGeorge Keishing    Valid Value  boot_side  ['0']
9396bd1224SGeorge Keishing
9496bd1224SGeorge Keishing
9594659a2cSGeorge KeishingTest Teardown Execution
9694659a2cSGeorge Keishing    [Documentation]  Do test case tear-down.
9796bd1224SGeorge Keishing    Ping Host  ${OPENBMC_HOST}
9896bd1224SGeorge Keishing    FFDC On Test Case Fail
9996bd1224SGeorge Keishing
10096bd1224SGeorge Keishing
10196bd1224SGeorge KeishingValidate Parameters
10294659a2cSGeorge Keishing    [Documentation]  Validate PDU parameters.
10396bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_IP}
10496bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_TYPE}
10596bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_SLOT_NO}
10696bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_USERNAME}
10796bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_PASSWORD}
10896bd1224SGeorge Keishing
109c26e74deSGeorge Keishing
110c26e74deSGeorge KeishingSuite Setup Execution
1115d5b8a29SGeorge Keishing    [Documentation]  Do suite setup.
1125d5b8a29SGeorge Keishing
1135d5b8a29SGeorge Keishing    ${bmc_version}=  Get BMC Version
1145d5b8a29SGeorge Keishing    Set Suite Variable  ${initial_bmc_version}  ${bmc_version}
115