blob: 169f2c776d7b8fd5353eb515af88e5b1f0b5ff40 [file] [log] [blame]
*** 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}