xref: /openbmc/openbmc-test-automation/extended/test_bmc_reset_loop.robot (revision 2c89173ccc32911060f1e851e56070e23ad67898)
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}
1996bd1224SGeorge Keishing
20*2c89173cSGeorge Keishing# Error strings to check from journald.
21*2c89173cSGeorge Keishing${ERROR_REGEX}     SEGV|core-dump
22*2c89173cSGeorge Keishing
2396bd1224SGeorge Keishing*** Test Cases ***
2496bd1224SGeorge Keishing
2596bd1224SGeorge KeishingRun Multiple Power Cycle
2696bd1224SGeorge Keishing    [Documentation]  Execute multiple power cycles.
2796bd1224SGeorge Keishing    [Setup]  Validate Parameters
2896bd1224SGeorge Keishing    [Tags]  Run_Multiple_Power_Cycle
2996bd1224SGeorge Keishing
3096bd1224SGeorge Keishing    # By default run test for 50 loops, else user input iteration.
3196bd1224SGeorge Keishing    # Fails immediately if any of the execution rounds fail and
3296bd1224SGeorge Keishing    # check if BMC is still pinging and FFDC is collected.
3396bd1224SGeorge Keishing    Repeat Keyword  ${LOOP_COUNT} times  Power Cycle System Via PDU
3496bd1224SGeorge Keishing
3596bd1224SGeorge Keishing
3696bd1224SGeorge KeishingRun Multiple BMC Reset Via REST
3796bd1224SGeorge Keishing    [Documentation]  Execute multiple reboots via REST.
3896bd1224SGeorge Keishing    [Tags]  Run_Multiple_BMC_Reset_Via_REST
3996bd1224SGeorge Keishing
4096bd1224SGeorge Keishing    # By default run test for 50 loops, else user input iteration.
4196bd1224SGeorge Keishing    # Fails immediately if any of the execution rounds fail and
4296bd1224SGeorge Keishing    # check if BMC is still pinging and FFDC is collected.
4396bd1224SGeorge Keishing    Repeat Keyword  ${LOOP_COUNT} times  BMC REST Reset Cycle
4496bd1224SGeorge Keishing
4596bd1224SGeorge Keishing
4696bd1224SGeorge KeishingRun Multiple BMC Reset Via Reboot
4796bd1224SGeorge Keishing    [Documentation]  Execute multiple reboots via "reboot" command.
4896bd1224SGeorge Keishing    [Tags]  Run_Multiple_BMC_Reset_Via_Reboot
4996bd1224SGeorge Keishing
5096bd1224SGeorge Keishing    # By default run test for 50 loops, else user input iteration.
5196bd1224SGeorge Keishing    # Fails immediately if any of the execution rounds fail and
5296bd1224SGeorge Keishing    # check if BMC is still pinging and FFDC is collected.
5396bd1224SGeorge Keishing    Repeat Keyword  ${LOOP_COUNT} times  BMC Reboot Cycle
5496bd1224SGeorge Keishing
5596bd1224SGeorge Keishing
5696bd1224SGeorge Keishing*** Keywords ***
5796bd1224SGeorge Keishing
5896bd1224SGeorge KeishingPower Cycle System Via PDU
5996bd1224SGeorge Keishing    [Documentation]  Power cycle system and wait for BMC to reach Ready state.
6096bd1224SGeorge Keishing    Log  "Doing power cycle"
6196bd1224SGeorge Keishing    PDU Power Cycle
6296bd1224SGeorge Keishing    Check If BMC Is Up  5 min  10 sec
6396bd1224SGeorge Keishing
6496bd1224SGeorge Keishing    Wait Until Keyword Succeeds  10 min  10 sec  Is BMC Ready
65b39a679dSGeorge Keishing    Verify BMC RTC And UTC Time Drift
66c26e74deSGeorge Keishing    Field Mode Should Be Enabled
6796bd1224SGeorge Keishing
6896bd1224SGeorge Keishing
6996bd1224SGeorge KeishingBMC REST Reset Cycle
7096bd1224SGeorge Keishing    [Documentation]  Reset BMC via REST and wait for ready state.
7196bd1224SGeorge Keishing    Log  "Doing Reboot cycle"
7296bd1224SGeorge Keishing    ${bmc_version_before}=  Get BMC Version
7396bd1224SGeorge Keishing    Initiate BMC Reboot
7496bd1224SGeorge Keishing    Wait Until Keyword Succeeds  10 min  10 sec  Is BMC Ready
7596bd1224SGeorge Keishing    ${bmc_version_after}=  Get BMC Version
7696bd1224SGeorge Keishing    Should Be Equal  ${bmc_version_before}  ${bmc_version_after}
77*2c89173cSGeorge Keishing    Check For Regex In Journald  ${ERROR_REGEX}  error_check=${0}
78b39a679dSGeorge Keishing    Verify BMC RTC And UTC Time Drift
79c26e74deSGeorge Keishing    Field Mode Should Be Enabled
8096bd1224SGeorge Keishing
8196bd1224SGeorge Keishing
8296bd1224SGeorge KeishingBMC Reboot Cycle
8396bd1224SGeorge Keishing    [Documentation]  Reboot BMC and wait for ready state.
8496bd1224SGeorge Keishing    Log  "Doing Reboot cycle"
8596bd1224SGeorge Keishing    ${bmc_version_before}=  Get BMC Version
8696bd1224SGeorge Keishing    OBMC Reboot (off)  stack_mode=normal
8796bd1224SGeorge Keishing    ${bmc_version_after}=  Get BMC Version
8896bd1224SGeorge Keishing    Should Be Equal  ${bmc_version_before}  ${bmc_version_after}
89b39a679dSGeorge Keishing    Verify BMC RTC And UTC Time Drift
90*2c89173cSGeorge Keishing    Check For Regex In Journald  ${ERROR_REGEX}  error_check=${0}
91c26e74deSGeorge Keishing    Field Mode Should Be Enabled
9296bd1224SGeorge Keishing
9396bd1224SGeorge Keishing
9494659a2cSGeorge KeishingTest Teardown Execution
9594659a2cSGeorge Keishing    [Documentation]  Do test case tear-down.
9696bd1224SGeorge Keishing    Ping Host  ${OPENBMC_HOST}
9796bd1224SGeorge Keishing    FFDC On Test Case Fail
9896bd1224SGeorge Keishing
999867beddSGeorge Keishing    # Example of the u-boot-env o/p:
1009867beddSGeorge Keishing    # root@witherspoon:~# grep fieldmode /dev/mtd/u-boot-env
1019867beddSGeorge Keishing    # fieldmode=true
1029867beddSGeorge Keishing    # fieldmode=true
1039867beddSGeorge Keishing    ${field_mode}=
1049867beddSGeorge Keishing    ...  BMC Execute Command  grep fieldmode /dev/mtd/u-boot-env
1059867beddSGeorge Keishing    Should Contain  "${field_mode[0]}"  fieldmode=true
1069867beddSGeorge Keishing    ...  msg=u-boot-env shows "fieldmode" is not set to true.
1079867beddSGeorge Keishing
10896bd1224SGeorge Keishing
10996bd1224SGeorge KeishingValidate Parameters
11094659a2cSGeorge Keishing    [Documentation]  Validate PDU parameters.
11196bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_IP}
11296bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_TYPE}
11396bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_SLOT_NO}
11496bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_USERNAME}
11596bd1224SGeorge Keishing    Should Not Be Empty   ${PDU_PASSWORD}
11696bd1224SGeorge Keishing
117c26e74deSGeorge Keishing
118c26e74deSGeorge KeishingSuite Setup Execution
119c26e74deSGeorge Keishing    [Documentation]  Enable field mode.
120c26e74deSGeorge Keishing    Enable Field Mode And Verify Unmount
121c26e74deSGeorge Keishing    Field Mode Should Be Enabled
122