| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 1 | *** Settings *** | 
|  | 2 |  | 
|  | 3 | Documentation    Module to test IPMI Get BIOS POST Code Command. | 
|  | 4 | Resource         ../lib/ipmi_client.robot | 
|  | 5 | Resource         ../lib/boot_utils.robot | 
|  | 6 | Library          ../lib/ipmi_utils.py | 
|  | 7 | Variables        ../data/ipmi_raw_cmd_table.py | 
|  | 8 |  | 
| George Keishing | 87dc442 | 2023-10-20 12:56:30 +0530 | [diff] [blame] | 9 | Suite Setup      IPMI Power On | 
|  | 10 | Suite Teardown   IPMI Power On  stack_mode=skip  quiet=1 | 
|  | 11 |  | 
| Matt Fischer | 6fb70d9 | 2023-10-24 19:06:33 -0600 | [diff] [blame] | 12 | Test Tags       Get_BIOS_Post_Code | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 13 |  | 
|  | 14 | *** Test Cases *** | 
| George Keishing | 87dc442 | 2023-10-20 12:56:30 +0530 | [diff] [blame] | 15 |  | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 16 | Test Get BIOS POST Code via IPMI Raw Command | 
|  | 17 | [Documentation]  Get BIOS POST Code via IPMI raw command. | 
|  | 18 | [Tags]  Test_Get_BIOS_POST_Code_via_IPMI_Raw_Command | 
|  | 19 |  | 
| ganesanb | 52d5ea5 | 2023-04-28 17:48:27 +0000 | [diff] [blame] | 20 | Wait Until Keyword Succeeds  10 min  1 sec  Check Host Is Pinging  ${OS_HOST} | 
|  | 21 | Wait Until Keyword Succeeds  1 min  1 sec  Check Chassis Power Status  on | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 22 | ${resp}=  Run IPMI Standard Command  raw ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][0]} | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 23 | Verify POST Code Response Length  ${resp} | 
|  | 24 |  | 
|  | 25 | Test Get BIOS POST Code via IPMI Raw Command After Power Cycle | 
|  | 26 | [Documentation]  Get BIOS POST Code via IPMI raw command after power cycle. | 
|  | 27 | [Tags]  Test_Get_BIOS_POST_Code_via_IPMI_Raw_Command_After_Power_Cycle | 
|  | 28 |  | 
| leet | 666ceaa | 2022-02-16 19:50:14 +0000 | [diff] [blame] | 29 | ${resp}=  Run IPMI Standard Command  chassis power cycle | 
| ganesanb | 52d5ea5 | 2023-04-28 17:48:27 +0000 | [diff] [blame] | 30 | Wait Until Keyword Succeeds  1 min  1 sec  Check Host Is Not Pinging  ${OS_HOST} | 
|  | 31 | Wait Until Keyword Succeeds  10 min  1 sec  Check Host Is Pinging  ${OS_HOST} | 
| leet | 666ceaa | 2022-02-16 19:50:14 +0000 | [diff] [blame] | 32 |  | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 33 | ${resp}=  Run IPMI Standard Command  raw ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][0]} | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 34 | Verify POST Code Response Length  ${resp} | 
|  | 35 |  | 
|  | 36 | Test Get BIOS POST Code via IPMI Raw Command With Host Powered Off | 
|  | 37 | [Documentation]  Get BIOS POST Code via IPMI raw command after power off. | 
|  | 38 | [Tags]  Test_Get_BIOS_POST_Code_via_IPMI_Raw_Command_With_Host_Powered_Off | 
|  | 39 |  | 
|  | 40 | ${resp}=  Run IPMI Standard Command  chassis power off | 
| ganesanb | 52d5ea5 | 2023-04-28 17:48:27 +0000 | [diff] [blame] | 41 | Wait Until Keyword Succeeds  1 min  1 sec  Check Host Is Not Pinging  ${OS_HOST} | 
|  | 42 | Wait Until Keyword Succeeds  1 min  1 sec  Check Chassis Power Status  off | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 43 |  | 
| leet | 92a8105 | 2022-06-03 19:11:08 +0000 | [diff] [blame] | 44 | ${resp}=  Run IPMI Standard Command  raw ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][0]}  fail_on_err=0 | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 45 | Should Contain  ${resp}  ${IPMI_RAW_CMD['BIOS_POST_Code']['Get'][3]} | 
|  | 46 |  | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 47 | *** Keywords *** | 
| Nagarjun | e94e540 | 2022-01-19 15:26:27 -0500 | [diff] [blame] | 48 | Verify POST Code Response Length | 
|  | 49 | [Documentation]  Verify the BIOS POST Code response byte length. | 
|  | 50 | [Tags]  Verify_POST_Code_Response_Length | 
|  | 51 | [Arguments]  ${resp} | 
|  | 52 |  | 
|  | 53 | # Description of argument(s): | 
|  | 54 | # resp                          The complete response bytes from | 
|  | 55 | #                               Get BIOS POST Code command returned | 
|  | 56 | #                               in one string. | 
|  | 57 |  | 
|  | 58 | @{resp_bytes}=  Split String  ${resp} | 
|  | 59 | ${string_length}=  Get Length  ${resp_bytes} | 
|  | 60 |  | 
|  | 61 | # Convert response byte length to integer. | 
|  | 62 | ${value}=  Get Slice From List  ${resp_bytes}   2   4 | 
|  | 63 | Reverse List   ${value} | 
|  | 64 | ${byte_length_string}=  Evaluate   "".join(${value}) | 
|  | 65 | ${byte_length_integer}=  Convert To Integer  ${byte_length_string}  16 | 
|  | 66 | ${true_length}=  Evaluate  (${string_length} - 4) | 
|  | 67 |  | 
|  | 68 | Should Be Equal  ${true_length}  ${byte_length_integer} | 
|  | 69 |  | 
| ganesanb | 52d5ea5 | 2023-04-28 17:48:27 +0000 | [diff] [blame] | 70 | Check Chassis Power Status | 
|  | 71 | [Documentation]  Validate chassis power status. | 
|  | 72 | [Arguments]  ${expected_state} | 
|  | 73 |  | 
|  | 74 | # Description of argument(s): | 
|  | 75 | # expected_state    on, off | 
|  | 76 |  | 
|  | 77 | ${resp}=  Run IPMI Standard Command  chassis power status | 
|  | 78 | Should Contain  ${resp}  ${expected_state} | 
|  | 79 |  | 
|  | 80 | Check Host Is Pinging | 
|  | 81 | [Documentation]  Check given ip/hostname is pinging. | 
|  | 82 | [Arguments]  ${host_ip} | 
|  | 83 |  | 
|  | 84 | # Description of argument(s): | 
|  | 85 | # host_ip      The host name or IP of the host to ping. | 
|  | 86 |  | 
|  | 87 | ${ping_rsp}=  Host Ping  ${host_ip} | 
|  | 88 | # Should Not Contain  ${ping_rsp}  Destination Host Unreachable | 
|  | 89 | # ...  msg=${host_ip} is not pinging. | 
|  | 90 | Should Not Contain  ${ping_rsp}  100% packet loss | 
|  | 91 | ...  msg=${host_ip} is not pinging. | 
|  | 92 |  | 
|  | 93 | Check Host Is Not Pinging | 
|  | 94 | [Documentation]  Check given ip/hostname is not pinging. | 
|  | 95 | [Arguments]  ${host_ip} | 
|  | 96 |  | 
|  | 97 | # Description of argument(s): | 
|  | 98 | # host_ip      The host name or IP of the host to ping. | 
|  | 99 |  | 
|  | 100 | ${ping_rsp}=  Host Ping  ${host_ip} | 
|  | 101 | Should Contain  ${ping_rsp}  100% packet loss | 
|  | 102 | ...  msg=${host_ip} is pinging. | 
|  | 103 |  | 
|  | 104 | Host Ping | 
|  | 105 | [Documentation]  Ping the given host. | 
|  | 106 | [Arguments]  ${host_ip} | 
|  | 107 |  | 
|  | 108 | # Description of argument(s): | 
|  | 109 | # host_ip      The host name or IP of the host to ping. | 
|  | 110 |  | 
|  | 111 | ${cmd}=  Catenate  ping -c 4 ${host_ip} | 
|  | 112 | ${output}=  Run  ${cmd} | 
|  | 113 |  | 
| George Keishing | 409df05 | 2024-01-17 22:36:14 +0530 | [diff] [blame] | 114 | RETURN  ${output} |