Move file test_esel.robot to redfish
Change-Id: I645ad6d910f1d71df0f0bdde28001792f597256a
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/redfish/systems/eventlog/test_esel.robot b/redfish/systems/eventlog/test_esel.robot
new file mode 100644
index 0000000..9f49378
--- /dev/null
+++ b/redfish/systems/eventlog/test_esel.robot
@@ -0,0 +1,205 @@
+*** Settings ***
+
+Documentation eSEL's Test cases.
+
+Resource ../../../lib/ipmi_client.robot
+Resource ../../../lib/openbmc_ffdc.robot
+Resource ../../../lib/utils.robot
+Variables ../../../data/variables.py
+Resource ../../../lib/boot_utils.robot
+Resource ../../../lib/esel_utils.robot
+Resource ../../../lib/logging_utils.robot
+
+Suite Setup Suite Setup Execution
+Suite Teardown Suite Teardown Execution
+Test Teardown FFDC On Test Case Fail
+Test Setup Delete All Error Logs
+
+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 REST
+ [Documentation] Generate eSEL log and verify using REST.
+ [Tags] Verify_eSEL_Using_REST
+
+ Create eSEL
+ # New eSEL log should exist
+ ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}list
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+
+
+Verify eSEL Entries Using REST
+ [Documentation] Verify that eSEL entries have data.
+ [Tags] Verify_eSEL_Entries_Using_REST
+
+ Create eSEL
+ Verify eSEL Entries
+
+
+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 REST
+ [Documentation] Generate multiple eSEL log and verify using REST.
+ [Tags] Verify_Multiple_eSEL_Using_REST
+
+ Create eSEL
+ Create eSEL
+ ${entries}= Count eSEL Entries
+ Should Be Equal As Integers ${entries} ${2}
+ ... msg=Expecting 2 eSELs but found ${entries}.
+
+
+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
+
+
+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}
+
+
+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.
+ REST Power On
+
+ 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}