| *** Settings *** |
| |
| Documentation Module to test IPMI Get BIOS POST Code Command. |
| Resource ../lib/ipmi_client.robot |
| Resource ../lib/boot_utils.robot |
| Library ../lib/ipmi_utils.py |
| Variables ../data/ipmi_raw_cmd_table.py |
| |
| Suite Setup IPMI Power On |
| Suite Teardown IPMI Power On stack_mode=skip quiet=1 |
| |
| Force Tags Get_BIOS_Post_Code |
| |
| *** Test Cases *** |
| |
| Test Get BIOS POST Code via IPMI Raw Command |
| [Documentation] Get BIOS POST Code via IPMI raw command. |
| [Tags] Test_Get_BIOS_POST_Code_via_IPMI_Raw_Command |
| |
| Wait Until Keyword Succeeds 10 min 1 sec Check Host Is Pinging ${OS_HOST} |
| Wait Until Keyword Succeeds 1 min 1 sec Check Chassis Power Status on |
| ${resp}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][0]} |
| Verify POST Code Response Length ${resp} |
| |
| Test Get BIOS POST Code via IPMI Raw Command After Power Cycle |
| [Documentation] Get BIOS POST Code via IPMI raw command after power cycle. |
| [Tags] Test_Get_BIOS_POST_Code_via_IPMI_Raw_Command_After_Power_Cycle |
| |
| ${resp}= Run IPMI Standard Command chassis power cycle |
| Wait Until Keyword Succeeds 1 min 1 sec Check Host Is Not Pinging ${OS_HOST} |
| Wait Until Keyword Succeeds 10 min 1 sec Check Host Is Pinging ${OS_HOST} |
| |
| ${resp}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][0]} |
| Verify POST Code Response Length ${resp} |
| |
| Test Get BIOS POST Code via IPMI Raw Command With Host Powered Off |
| [Documentation] Get BIOS POST Code via IPMI raw command after power off. |
| [Tags] Test_Get_BIOS_POST_Code_via_IPMI_Raw_Command_With_Host_Powered_Off |
| |
| ${resp}= Run IPMI Standard Command chassis power off |
| Wait Until Keyword Succeeds 1 min 1 sec Check Host Is Not Pinging ${OS_HOST} |
| Wait Until Keyword Succeeds 1 min 1 sec Check Chassis Power Status off |
| |
| ${resp}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][0]} fail_on_err=0 |
| Should Contain ${resp} ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][3]} |
| |
| *** Keywords *** |
| Verify POST Code Response Length |
| [Documentation] Verify the BIOS POST Code response byte length. |
| [Tags] Verify_POST_Code_Response_Length |
| [Arguments] ${resp} |
| |
| # Description of argument(s): |
| # resp The complete response bytes from |
| # Get BIOS POST Code command returned |
| # in one string. |
| |
| @{resp_bytes}= Split String ${resp} |
| ${string_length}= Get Length ${resp_bytes} |
| |
| # Convert response byte length to integer. |
| ${value}= Get Slice From List ${resp_bytes} 2 4 |
| Reverse List ${value} |
| ${byte_length_string}= Evaluate "".join(${value}) |
| ${byte_length_integer}= Convert To Integer ${byte_length_string} 16 |
| ${true_length}= Evaluate (${string_length} - 4) |
| |
| Should Be Equal ${true_length} ${byte_length_integer} |
| |
| Check Chassis Power Status |
| [Documentation] Validate chassis power status. |
| [Arguments] ${expected_state} |
| |
| # Description of argument(s): |
| # expected_state on, off |
| |
| ${resp}= Run IPMI Standard Command chassis power status |
| Should Contain ${resp} ${expected_state} |
| |
| Check Host Is Pinging |
| [Documentation] Check given ip/hostname is pinging. |
| [Arguments] ${host_ip} |
| |
| # Description of argument(s): |
| # host_ip The host name or IP of the host to ping. |
| |
| ${ping_rsp}= Host Ping ${host_ip} |
| # Should Not Contain ${ping_rsp} Destination Host Unreachable |
| # ... msg=${host_ip} is not pinging. |
| Should Not Contain ${ping_rsp} 100% packet loss |
| ... msg=${host_ip} is not pinging. |
| |
| Check Host Is Not Pinging |
| [Documentation] Check given ip/hostname is not pinging. |
| [Arguments] ${host_ip} |
| |
| # Description of argument(s): |
| # host_ip The host name or IP of the host to ping. |
| |
| ${ping_rsp}= Host Ping ${host_ip} |
| Should Contain ${ping_rsp} 100% packet loss |
| ... msg=${host_ip} is pinging. |
| |
| Host Ping |
| [Documentation] Ping the given host. |
| [Arguments] ${host_ip} |
| |
| # Description of argument(s): |
| # host_ip The host name or IP of the host to ping. |
| |
| ${cmd}= Catenate ping -c 4 ${host_ip} |
| ${output}= Run ${cmd} |
| |
| [Return] ${output} |