*** Settings *** Documentation REST test Error callout association. Resource ../../../lib/bmc_redfish_resource.robot Resource ../../../lib/bmc_redfish_utils.robot Resource ../../../lib/connection_client.robot Resource ../../../lib/openbmc_ffdc.robot Resource ../../../lib/utils.robot Resource ../../../lib/state_manager.robot Resource ../../../lib/boot_utils.robot Suite Setup Suite Setup Execution Suite Teardown Suite Teardown Execution Test Setup Test Setup Execution Test Teardown FFDC On Test Case Fail Force Tags Event_Association ***Variables*** ${target_device_path} /sys/devices/platform/gpio-fsi/fsi0/slave@00:00/raw ${stack_mode} skip *** Test Cases *** Create Test Error Callout And Verify [Documentation] Create error log callout and verify via REST. [Tags] Create_Test_Error_Callout_And_Verify Create Test Error With Callout Verify Test Error Log And Callout Create Test Error Callout And Verify AdditionalData [Documentation] Create Test Error Callout And Verify AdditionalData. [Tags] Create_Test_Error_Callout_And_Verify_AdditionalData # Test error log entry example: # "/xyz/openbmc_project/logging/entry/1": { # "AdditionalData": [ # "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00", # "CALLOUT_ERRNO_TEST=0", # "DEV_ADDR=0x0DEADEAD" # ] Create Test Error With Callout ${elog_entry}= Get Elog URL List ${resp}= OpenBMC Get Request ${elog_entry[0]} List Should Contain Value ... ${resp.json()["data"]["AdditionalData"]} CALLOUT_DEVICE_PATH_TEST=${target_device_path} List Should Contain Value ${resp.json()["data"]["AdditionalData"]} DEV_ADDR=0x0DEADEAD Create Test Error Callout And Verify Associations [Documentation] Create test error callout and verify Associations. [Tags] Create_Test_Error_Callout_And_Verify_Associations # Test error log association entry example: # "Associations": [ # [ # "callout", # "fault", # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # ] Create Test Error With Callout ${elog_entry}= Get Elog URL List ${resp}= OpenBMC Get Request ${elog_entry[0]} List Should Contain Value ${resp.json()["data"]["Associations"][0]} callout List Should Contain Value ${resp.json()["data"]["Associations"][0]} fault List Should Contain Value ... ${resp.json()["data"]["Associations"][0]} ... /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0 Create Test Error Callout And Delete [Documentation] Create Test Error Callout And Delete. [Tags] Create_Test_Error_Callout_And_Delete # Test error log entry example: # "/xyz/openbmc_project/logging/entry/1": { # "AdditionalData": [ # "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00", # "CALLOUT_ERRNO_TEST=0", # "DEV_ADDR=0x0DEADEAD" # ], # "Id": 1, # "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout", # "Resolved": 0, # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error", # "Timestamp": 1487747332528, # "Associations": [ # [ # "callout", # "fault", # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # ] # }, # "/xyz/openbmc_project/logging/entry/1/callout": { # "endpoints": [ # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # }, Create Test Error With Callout ${elog_entry}= Get Elog URL List Delete Error Log Entry ${elog_entry[0]} ${resp}= OpenBMC Get Request ${elog_entry[0]}/callout Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} Create Two Test Error Callout And Delete [Documentation] Create Two Test Error Callout And Delete. [Tags] Create_Two_Test_Error_Callout_And_Delete # Test error log entry example: # "/xyz/openbmc_project/logging/entry/1": { # "AdditionalData": [ # "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00", # "CALLOUT_ERRNO_TEST=0", # "DEV_ADDR=0x0DEADEAD" # ], # "Id": 1, # "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout", # "Resolved": 0, # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error", # "Timestamp": 1487747332528, # "Associations": [ # [ # "callout", # "fault", # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # ] # }, # "/xyz/openbmc_project/logging/entry/1/callout": { # "endpoints": [ # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # }, # "/xyz/openbmc_project/logging/entry/2": { # "AdditionalData": [ # "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00", # "CALLOUT_ERRNO_TEST=0", # "DEV_ADDR=0x0DEADEAD" # ], # "Id": 2, # "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout", # "Resolved": 0, # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error", # "Timestamp": 1487747332528, # "Associations": [ # [ # "callout", # "fault", # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # ] # }, # "/xyz/openbmc_project/logging/entry/2/callout": { # "endpoints": [ # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # }, # Create two error logs. Create Test Error With Callout Create Test Error With Callout # Delete entry/2 elog entry. ${elog_entry}= Get Elog URL List Delete Error Log Entry ${elog_entry[1]} # Verify if entry/1 exist and entry/2 is deleted. ${resp}= OpenBMC Get Request ${elog_entry[0]} Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} ${resp}= OpenBMC Get Request ${elog_entry[1]} Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} Create Test Error Callout And Verify LED [Documentation] Create an error log callout and verify respective ... LED state. [Tags] Create_Test_Error_Callout_And_Verify_LED Create Test Error With Callout ${resp}= Get LED State XYZ cpu0_fault Should Be Equal ${resp} ${1} Set Resolved Field And Verify Callout Deletion [Documentation] Set the "Resolved" error log and verify callout is deleted [Tags] Set_Resolved_Field_And_Verify_Callout_Deletion Delete All Error Logs Create Test Error With Callout ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY} ${resp}= OpenBMC Get Request ${elog_entry[0]} Should Contain ${resp.json()["data"]["Associations"][0]} callout # Set the error log field "Resolved". # By doing so, the callout object should get deleted automatically. ${valueDict}= Create Dictionary data=${1} OpenBMC Put Request ${elog_entry[0]}/attr/Resolved data=${valueDict} # Verify if the callout entry is deleted. ${resp}= OpenBMC Get Request ${elog_entry[0]}/callout Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} *** Keywords *** Callout Test Binary Exist [Documentation] Verify existence of prerequisite callout-test. Open Connection And Log In ${out} ${stderr}= Execute Command ... which /tmp/tarball/bin/callout-test return_stderr=True Should Be Empty ${stderr} Should Contain ${out} callout-test Create Test Error With Callout [Documentation] Generate test error log with callout for CPU0. # Test error log entry example: # "/xyz/openbmc_project/logging/entry/4": { # "AdditionalData": [ # "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00", # "CALLOUT_ERRNO_TEST=0", # "DEV_ADDR=0x0DEADEAD" # ], # "Id": 4, # "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout", # "Resolved": 0, # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error", # "Timestamp": 1487747332528, # "Associations": [ # [ # "callout", # "fault", # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # ] # }, # "/xyz/openbmc_project/logging/entry/4/callout": { # "endpoints": [ # "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0" # ] # }, BMC Execute Command ... /tmp/tarball/bin/callout-test ${target_device_path} Verify Test Error Log And Callout [Documentation] Verify test error log entries. ${elog_entry}= Get Elog URL List ${resp}= OpenBMC Get Request ${elog_entry[0]} Should Be Equal ${resp.json()["data"]["Message"]} ... example.xyz.openbmc_project.Example.Elog.TestCallout Should Be Equal ${resp.json()["data"]["Severity"]} ... xyz.openbmc_project.Logging.Entry.Level.Error ${content}= Read Attribute ${elog_entry[0]}/callout endpoints Should Be Equal ${content[0]} ... /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0 Test Setup Execution [Documentation] Do test case setup tasks. ${status}= Run Keyword And Return Status Callout Test Binary Exist Run Keyword If ${status} == ${False} Install Tarball Delete All Error Logs Install Tarball [Documentation] Install tarball on BMC. Run Keyword If '${DEBUG_TARBALL_PATH}' == '${EMPTY}' Return from Keyword BMC Execute Command rm -rf /tmp/tarball Install Debug Tarball On BMC ${DEBUG_TARBALL_PATH} Suite Setup Execution [Documentation] Do test case setup tasks. Redfish.Login Redfish Purge Event Log Redfish Power On stack_mode=skip quiet=1 ${status}= Run Keyword And Return Status Logging Test Binary Exist Run Keyword If ${status} == ${False} Install Tarball Suite Teardown Execution [Documentation] Do the post suite teardown. Redfish.Logout