Test Redfish BMC dump
Changes:
- Added a suite to test redfish BMC dump.
- Added tests to verify BMC dump create and delete operation
- Added tests to verify BMC dump persistency
Change-Id: If53f3c8c526444fb5cf27be7c053173efc4a2ff1
Signed-off-by: Rahul Maheshwari <rahulmaheshwari@in.ibm.com>
diff --git a/redfish/extended/test_bmc_dumps.robot b/redfish/extended/test_bmc_dumps.robot
new file mode 100644
index 0000000..874321f
--- /dev/null
+++ b/redfish/extended/test_bmc_dumps.robot
@@ -0,0 +1,122 @@
+*** Settings ***
+
+Documentation Test BMC dump functionality of OpenBMC.
+
+Resource ../../lib/openbmc_ffdc.robot
+Resource ../../lib/dump_utils.robot
+
+Test Setup Redfish Delete All BMC Dumps
+Test Teardown Test Teardown Execution
+
+
+*** Test Cases ***
+
+Verify User Initiated BMC Dump When Host Powered Off
+ [Documentation] Create user initiated BMC dump at host off state and
+ ... verify dump entry for it.
+ [Tags] Verify_User_Initiated_BMC_Dump_When_Host_Powered_Off
+
+ Redfish Power Off stack_mode=skip
+ ${dump_id}= Create User Initiated BMC Dump
+ ${dump_entries}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
+ Length Should Be ${dump_entries} 1
+ List Should Contain Value ${dump_entries} ${dump_id}
+
+
+Verify User Initiated BMC Dump When Host Booted
+ [Documentation] Create user initiated BMC dump at host booted state and
+ ... verify dump entry for it.
+ [Tags] Verify_User_Initiated_BMC_Dump_When_Host_Booted
+
+ Redfish Power On stack_mode=skip
+ ${dump_id}= Create User Initiated BMC Dump
+ ${dump_entries}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
+ Length Should Be ${dump_entries} 1
+ List Should Contain Value ${dump_entries} ${dump_id}
+
+
+Verify Dump Persistency On Dump Service Restart
+ [Documentation] Create user dump, restart dump manager service and verify dump
+ ... persistency.
+ [Tags] Verify_Dump_Persistency_On_Dump_Service_Restart
+
+ Create User Initiated BMC Dump
+ ${dump_entries_before}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
+
+ # Restart dump service.
+ BMC Execute Command systemctl restart xyz.openbmc_project.Dump.Manager.service
+ Sleep 10s reason=Wait for BMC dump service to restart properly
+
+ ${dump_entries_after}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
+ Lists Should Be Equal ${dump_entries_before} ${dump_entries_after}
+
+
+Verify Dump Persistency On BMC Reset
+ [Documentation] Create user dump, reset BMC and verify dump persistency.
+ [Tags] Verify_Dump_Persistency_On_BMC_Reset
+
+ Create User Initiated BMC Dump
+ ${dump_entries_before}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
+
+ # Reset BMC.
+ OBMC Reboot (off)
+
+ ${dump_entries_after}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
+ Lists Should Be Equal ${dump_entries_before} ${dump_entries_after}
+
+
+*** Keywords ***
+
+Create User Initiated BMC Dump
+ [Documentation] Generate user initiated BMC dump and return the dump id number (e.g., "5").
+
+ ${payload}= Create Dictionary DiagnosticDataType=Manager
+ ${resp}= Redfish.Post /redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData
+ ... body=${payload} valid_status_codes=[${HTTP_ACCEPTED}]
+
+ # Example of response from above Redfish POST request.
+ # "@odata.id": "/redfish/v1/TaskService/Tasks/0",
+ # "@odata.type": "#Task.v1_4_3.Task",
+ # "Id": "0",
+ # "TaskState": "Running",
+ # "TaskStatus": "OK"
+
+ Wait Until Keyword Succeeds 5 min 15 sec Is Task Completed ${resp.dict['Id']}
+ ${task_id}= Set Variable ${resp.dict['Id']}
+
+ ${task_dict}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id}
+
+ # Example of HttpHeaders field of task details.
+ # "Payload": {
+ # "HttpHeaders": [
+ # "Host: <BMC_IP>",
+ # "Accept-Encoding: identity",
+ # "Connection: Keep-Alive",
+ # "Accept: */*",
+ # "Content-Length: 33",
+ # "Location: /redfish/v1/Managers/bmc/LogServices/Dump/Entries/2"]
+ # ],
+ # "HttpOperation": "POST",
+ # "JsonBody": "{\"DiagnosticDataType\":\"Manager\"}",
+ # "TargetUri": "/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData"
+ # }
+
+ [Return] ${task_dict["Payload"]["HttpHeaders"][-1].split("/")[-1]}
+
+
+Is Task Completed
+ [Documentation] Verify if the given task is completed.
+ [Arguments] ${task_id}
+
+ # Description of argument(s):
+ # task_id Id of task which needs to be checked.
+
+ ${task_dict}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id}
+ Should Be Equal As Strings ${task_dict['TaskState']} Completed
+
+
+Test Teardown Execution
+ [Documentation] Do test teardown operation.
+
+ FFDC On Test Case Fail
+ Close All Connections