blob: 16f27ceeef0b4452aa7b5e6231232010f3623ac4 [file] [log] [blame]
*** Settings ***
Documentation eSEL's Test cases.
Resource ../../../lib/ipmi_client.robot
Resource ../../../lib/openbmc_ffdc.robot
Resource ../../../lib/utils.robot
Resource ../../../lib/boot_utils.robot
Resource ../../../lib/esel_utils.robot
Resource ../../../lib/boot_utils.robot
Variables ../../../data/variables.py
Suite Setup Suite Setup Execution
Suite Teardown Suite Teardown Execution
Test Setup Test Setup Execution
Test Teardown FFDC On Test Case Fail
Force Tags eSEL_Logging
*** Variables ***
${stack_mode} skip
${LOGGING_SERVICE} xyz.openbmc_project.Logging.service
${ESEL_DATA} ESEL=00 00 df 00 00 00 00 20 00 04 12 35 6f aa 00 00
*** Test Cases ***
Verify eSEL Using Redfish
[Documentation] Generate eSEL log and verify using redfish.
[Tags] Verify_eSEL_Using_Redfish
Create eSEL
Event Log Should Exist
Verify eSEL Entries Using Redfish
[Documentation] Verify that eSEL entries have data.
[Tags] Verify_eSEL_Entries_Using_Redfish
Create eSEL
Redfish.Login
Verify eSEL Entries
# TODO: openbmc/openbmc-test-automation#1789
Verify eSEL Description And EntryID Using REST
[Documentation] Create eSEL log and verify "Description" and "EntryID"
... are not empty via REST.
[Tags] Verify_eSEL_Description_And_EntryID_Using_REST
# {
# "AdditionalData": [
# "CALLOUT_INVENTORY_PATH=",
# "ESEL=00 00 df 00 00 00 00 20 00 04 12 35 6f aa 00 00",
# "_PID=1175"
# ],
# "Description": "An error was detected with the base platform,
# but was not able to be deciphered. Contact your next level of support.",
# "EventID": "FQPSPAA0011M",
# "Id": 1,
# "Message": "org.open_power.Host.Error.Event",
# "Resolved": 0,
# "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
# "Timestamp": 1524233022072,
# "associations": [
# [
# "callout",
# "fault",
# ""
# ]
# ]
Create eSEL
${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
${desc}= Read Attribute ${elog_entry[0]} Description
Should Not Be Empty ${desc} msg=${desc} is not populated.
${event_id}= Read Attribute ${elog_entry[0]} EventID
Should Not Be Equal ${event_id} ${None}
... msg=${event_id} is populated default "None".
Verify Multiple eSEL Using Redfish
[Documentation] Generate multiple eSEL log and verify using redfish
[Tags] Verify_Multiple_eSEL_Using_Redfish
Create eSEL
Create eSEL
${entries}= Count eSEL Entries
Should Be Equal As Integers ${entries} ${2}
... msg=Expecting 2 eSELs but found ${entries}.
# TODO: openbmc/openbmc-test-automation#1789
Check eSEL AdditionalData
[Documentation] Generate eSEL log and verify AdditionalData is
... not empty.
[Tags] Check_eSEL_AdditionalData
Create eSEL
${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
${resp}= OpenBMC Get Request ${elog_entry[0]}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
${jsondata}= To JSON ${resp.content}
# "/xyz/openbmc_project/logging/entry/1": {
# "Timestamp": 1487743771812,
# "AdditionalData": [],
# "Message": "org.open_power.Error.Host.Event.Event",
# "Id": 1,
# "Severity": "xyz.openbmc_project.Logging.Entry.Level.Emergency"
# }
Should Not Be Empty ${jsondata["data"]["AdditionalData"]}
Test Wrong Reservation_ID
[Documentation] This testcase is to test BMC can handle multi-requestor's
... oem partial add command with incorrect reservation id.
... It simulates sending partial add command with fake content
... and wrong Reservation ID. This command will be rejected.
[Tags] Test_Wrong_Reservation_ID
${rev_id_1}= Run Inband IPMI Raw Command 0x0a 0x42
${rev_id_ls}= Get Substring ${rev_id_1} 1 3
${rev_id_ms}= Get Substring ${rev_id_1} -2
Run Inband IPMI Raw Command 0x0a 0x42
${output}= Check IPMI OEMpartialadd Reject
... 0x3a 0xf0 0x${rev_id_ls} 0x${rev_id_ms} 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0xa 0xb 0xc 0xd 0xe 0xf
Should Contain ${output} Reservation cancelled
Test Correct Reservation_ID
[Documentation] This testcase is to test BMC can handle multi-requestor's
... oem partial add command with correct reservation id. It
... simulates sending partial add command with fake content
... and correct Reservation ID. This command will be accepted.
[Tags] Test_Correct_Reservation_ID
Run Inband IPMI Raw Command 0x0a 0x42
${rev_id_2}= Run Inband IPMI Raw Command 0x0a 0x42
${rev_id_ls}= Get Substring ${rev_id_2} 1 3
${rev_id_ms}= Get Substring ${rev_id_2} -2
${output}= Check IPMI OEMpartialadd Accept
... 0x3a 0xf0 0x${rev_id_ls} 0x${rev_id_ms} 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0xa 0xb 0xc 0xd 0xe 0xf
Should Be Empty ${output}
*** Keywords ***
Suite Teardown Execution
[Documentation] Cleanup test logs and connection.
Close All Connections
Redfish.Logout
Restart Logging Service
[Documentation] Restart Logging to clear eSEL log.
${MainPID} ${stderr}= Execute Command
... systemctl restart ${LOGGING_SERVICE} return_stderr=True
Should Be Empty ${stderr}
Sleep 10s reason=Wait for service to restart properly.
Run IPMI Command Returned
[Documentation] Run the IPMI command and return the output.
[Arguments] ${args}
${output_1}= Execute Command /tmp/ipmitool -I dbus raw ${args}
[Return] ${output_1}
Check IPMI OEMpartialadd Reject
[Documentation] Check if IPMI rejects the OEM partial add command.
[Arguments] ${args}
Login To OS Host ${OS_HOST} ${OS_USERNAME} ${OS_PASSWORD}
${stdout} ${stderr} ${output_2}= Execute Command ipmitool raw ${args}
... return_stdout=True return_stderr=True return_rc=True
[Return] ${stderr}
Test Setup Execution
[Documentation] Do test case setup tasks.
Redfish.Login
Redfish Purge Event Log
Suite Setup Execution
[Documentation] Validates input parameters & check if HOST OS is up.
Should Not Be Empty
... ${OS_HOST} msg=You must provide DNS name/IP of the OS host.
Should Not Be Empty
... ${OS_USERNAME} msg=You must provide OS host user name.
Should Not Be Empty
... ${OS_PASSWORD} msg=You must provide OS host user password.
# Boot to OS.
Redfish Power On
Redfish.Login
Redfish Purge Event Log
Login To OS Host ${OS_HOST} ${OS_USERNAME} ${OS_PASSWORD}
Open Connection And Log In
Check IPMI OEMpartialadd Accept
[Documentation] Check if IPMI accepts the OEM partial add command.
[Arguments] ${args}
Login To OS Host ${OS_HOST} ${OS_USERNAME} ${OS_PASSWORD}
${stdout} ${stderr} ${output_3}= Execute Command ipmitool raw ${args}
... return_stdout=True return_stderr=True return_rc=True
Should Be Equal ${output_3} ${0} msg=${stderr}
[Return] ${stderr}
Event Log Should Exist
[Documentation] Event log entries should exist.
${elogs}= Get Event Logs
Should Not Be Empty ${elogs} msg=System event log entry is not empty.