| *** Settings *** |
| Documentation This suite tests IPMI POH Counter Support in OpenBMC. |
| ... Feature: IPMI POH Counter Support |
| ... |
| ... POH (Power-On Hours) counter is the incremental count of power ON |
| ... hours in the system. |
| ... |
| ... Request and Response data defined under data/ipmi_raw_cmd_table.py |
| ... |
| ... Testcases added - |
| ... Get POH Counter Command Via IPMI |
| ... Verify Get POH Counter With Invalid Data Request Via IPMI |
| ... Verify POH Counter Reading With Wait Time |
| ... Verify POH Counter Reading With Host Power Off |
| ... Verify POH Counter Reading With Host Power On |
| ... |
| ... Script compares Minutes per count and Counter reading for the above scenarios. |
| ... |
| ... Minutes per count usually 60 minutes. |
| ... |
| ... Wait Time given - 1 hour, 1 hour 30minutes when Host power OFF, 1 hour |
| ... after Host Power ON |
| ... |
| ... Comparison between Initial POH Counter reading and reading after wait |
| ... time / Power operation. |
| |
| |
| Resource ../lib/ipmi_client.robot |
| Resource ../lib/openbmc_ffdc.robot |
| Library Collections |
| Library ../lib/ipmi_utils.py |
| Variables ../data/ipmi_raw_cmd_table.py |
| |
| Suite Setup Suite Setup Execution |
| Suite Teardown Suite Teardown Execution |
| |
| Test Teardown FFDC On Test Case Fail |
| |
| Force Tags IPMI_Poh_Counter |
| |
| *** Variables *** |
| |
| |
| *** Test Cases *** |
| |
| Get POH Counter Command Via IPMI |
| [Documentation] Verify get POH counter command Via IPMI. |
| [Tags] Get_POH_Counter_Command_Via_IPMI |
| |
| # Verify get POH counter command via IPMI. |
| ${resp}= Run External IPMI Raw Command |
| ... ${IPMI_RAW_CMD['Get']['POH_Counter'][0]} |
| Should Not Contain ${resp} ${IPMI_RAW_CMD['Get']['POH_Counter'][1]} |
| |
| |
| Verify Get POH Counter With Invalid Data Request Via IPMI |
| [Documentation] Verify get POH counter with invalid data request via IPMI. |
| [Tags] Verify_Get_POH_Counter_With_Invalid_Data_Request_Via_IPMI |
| |
| # verify get POH counter command with invalid data request Via IPMI. |
| ${resp}= Run Keyword and Expect Error *Request data length invalid* |
| ... Run External IPMI Raw Command ${IPMI_RAW_CMD['Get']['POH_Counter'][0]} 0x00 |
| |
| |
| Verify POH Counter Reading With Wait Time |
| [Documentation] Verify POH counter reading with wait time via IPMI. |
| [Tags] Verify_POH_Counter_Reading_With_Wait_Time |
| |
| # Get initial POH command counter reading. |
| ${poh_counter_1}= Run Get POH Command And Return Counter Reading |
| |
| # Sleep for given time. |
| Sleep 1h |
| |
| # Get POH Counter Reading after waiting for given time period. |
| ${poh_counter_2}= Run Get POH Command And Return Counter Reading |
| |
| # Verify difference between initial and present counter readings. |
| # The counter reading should always be incremented by 1 for each hour. |
| ${difference}= Evaluate ${poh_counter_2} - ${poh_counter_1} |
| Should Be Equal As Integers ${difference} 1 |
| |
| |
| Verify POH Counter Reading With Host Power Off |
| [Documentation] Verify POH counter reading with wait time after host power off. |
| [Tags] Verify_POH_Counter_Reading_With_Host_Power_Off |
| |
| # Get initial POH command counter reading. |
| ${poh_counter_1}= Run Get POH Command And Return Counter Reading |
| |
| # Power off the system. |
| IPMI Power Off |
| |
| # Sleep for given time. |
| Sleep 1 hours 30 minutes |
| |
| # Get POH counter reading after waiting for given time period. |
| ${poh_counter_2}= Run Get POH Command And Return Counter Reading |
| |
| # Once the system is powered off, |
| # the poh counter reading should not increment. |
| Should Be Equal As Integers ${poh_counter_2} ${poh_counter_1} |
| |
| |
| Verify POH Counter Reading With Host Power On |
| [Documentation] Verify Get POH Counter with wait time after host power on. |
| [Tags] Verify_POH_Counter_Reading_With_Host_Power_On |
| |
| # Get initial POH command counter reading. |
| ${poh_counter_1}= Run Get POH Command And Return Counter Reading |
| |
| # Power on the system. |
| IPMI Power On |
| |
| # Sleep for given time. |
| Sleep 1h |
| |
| # Get POH Counter reading after waiting for given time period. |
| ${poh_counter_2}= Run Get POH Command And Return Counter Reading |
| |
| # Once the system is powered on, |
| # the pon counter reading should increment by 1. |
| ${difference}= Evaluate ${poh_counter_2} - ${poh_counter_1} |
| Should Be Equal As Integers ${difference} 1 |
| |
| |
| *** Keywords *** |
| |
| Run Get POH Command And Return Counter Reading |
| [Documentation] Run the IPMI command to Get POH Counter. |
| |
| # Get POH counter Via IPMI. |
| ${resp}= Run External IPMI Raw Command |
| ... ${IPMI_RAW_CMD['Get']['POH_Counter'][0]} |
| |
| # Verify Minutes per count. |
| ${data}= Split String ${resp} |
| Should Be Equal ${data[0]} 3c |
| |
| # Get POH Command counter reading. |
| ${poh_counter_reading}= Set Variable ${data[1:]} |
| Reverse List ${poh_counter_reading} |
| ${poh_counter_reading}= Evaluate "".join(${poh_counter_reading}) |
| ${poh_counter_reading}= Convert To Integer ${poh_counter_reading} 16 |
| |
| RETURN ${poh_counter_reading} |
| |
| |
| Suite Setup Execution |
| [Documentation] Suite Setup Execution. |
| |
| Redfish.Login |
| |
| # Check Host current status. |
| ${current_host_state}= Get Host State Via Redfish |
| |
| # If Host state is 'On' then the condition will not be executed. |
| # Host may take approx 5 - 6 minutes to complete power ON process. |
| Run Keyword If '${current_host_state}' == 'Off' |
| ... IPMI Power On |
| |
| |
| Suite Teardown Execution |
| [Documentation] Suite Teardown Execution. |
| |
| IPMI Power On |
| Redfish.Logout |