*** 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