Migrate BMC dump to redfish
Change-Id: I84ccd39cbe9a853a97ed8f46707c281606592d33
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/redfish/extended/test_bmc_dump.robot b/redfish/extended/test_bmc_dump.robot
new file mode 100644
index 0000000..2dcb1b2
--- /dev/null
+++ b/redfish/extended/test_bmc_dump.robot
@@ -0,0 +1,230 @@
+*** Settings ***
+
+Documentation Test dump functionality of OpenBMC.
+
+Resource ../../lib/openbmc_ffdc.robot
+Resource ../../lib/rest_client.robot
+Resource ../../lib/dump_utils.robot
+Resource ../../lib/boot_utils.robot
+Resource ../../lib/utils.robot
+Library ../../lib/bmc_ssh_utils.py
+
+Test Setup Open Connection And Log In
+Test Teardown Test Teardown Execution
+
+*** Test Cases ***
+
+Pre Dump BMC Performance Test
+ [Documentation] Check performance of memory, CPU & file system of BMC.
+ [Tags] Pre_Dump_BMC_Performance_Test
+
+ Open Connection And Log In
+ Check BMC Performance
+
+
+Verify User Initiated BMC Dump When 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_Powered_Off
+
+ Redfish Power Off stack_mode=skip
+ ${dump_id}= Create User Initiated Dump
+ Check Existence of BMC Dump file ${dump_id}
+
+
+Verify Dump Persistency On Service Restart
+ [Documentation] Create user dump, restart BMC service and verify dump
+ ... persistency.
+ [Tags] Verify_Dump_Persistency_On_Service_Restart
+
+ Delete All BMC Dump
+ ${dump_id}= Create User Initiated Dump
+ BMC Execute Command
+ ... systemctl restart xyz.openbmc_project.Dump.Manager.service
+ Sleep 10s reason=Wait for BMC dump service to restart properly.
+
+ ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}list
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+ Check Existence of BMC Dump file ${dump_id}
+
+
+Verify Dump Persistency On Reset
+ [Documentation] Create user dump, reset BMC and verify dump persistency.
+ [Tags] Verify_Dump_Persistency_On_Reset
+
+ Delete All BMC Dump
+ ${dump_id}= Create User Initiated Dump
+ OBMC Reboot (off)
+ ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}list
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+ Check Existence of BMC Dump file ${dump_id}
+
+
+Delete User Initiated BMC Dump And Verify
+ [Documentation] Delete user initiated dump and verify.
+ [Tags] Delete_User_Initiated_Dump_And_Verify
+
+ ${dump_id}= Create User Initiated Dump
+ Check Existence of BMC Dump file ${dump_id}
+
+ Delete BMC Dump ${dump_id}
+
+
+Verify User Initiated Dump Size
+ [Documentation] Verify user Initiated BMC dump size is under 200k.
+ [Tags] Verify_User_Initiated_Dump_Size
+
+ ${dump_id}= Create User Initiated Dump
+
+ ${dump_size}= Read Attribute ${DUMP_ENTRY_URI}${dump_id} Size
+ # Max size for dump is 200k = 200x1024
+ Should Be True 0 < ${dump_size} < 204800
+ Check Existence of BMC Dump file ${dump_id}
+
+
+Create Two User Initiated Dump And Delete One
+ [Documentation] Create two dumps and delete the first.
+ [Tags] Create_Two_User_Initiated_Dump_And_Delete_One
+
+ ${dump_id_1}= Create User Initiated Dump
+ ${dump_id_2}= Create User Initiated Dump
+
+ Delete BMC Dump ${dump_id_1}
+
+ ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}${dump_id_1}
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
+
+ ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}${dump_id_2}
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+ Check Existence of BMC Dump file ${dump_id_2}
+
+
+Create And Delete BMC Dump Multiple Times
+ [Documentation] Create and delete BMC dump multiple times.
+ [Tags] Create_And_Delete_BMC_Dump_Multiple_Times
+
+ :FOR ${INDEX} IN RANGE 1 5
+ \ ${dump_id}= Create User Initiated Dump
+ \ Delete BMC Dump ${dump_id}
+
+
+Delete All BMC Dumps And Verify
+ [Documentation] Delete all BMC dumps and verify.
+ [Tags] Delete_All_BMC_Dumps_And_Verify
+
+ # Create some dump.
+ Create User Initiated Dump
+ Create User Initiated Dump
+
+ Delete All BMC Dump
+ ${resp}= OpenBMC Get Request ${DUMP_ENTRY_URI}list
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
+
+
+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
+ Create User Initiated Dump
+
+
+Verify Core Dump Size
+ [Documentation] Verify BMC core dump size is under 200k.
+ [Tags] Verify_Core_Dump_Size
+
+ Delete All Dumps
+ Trigger Core Dump
+ Wait Until Keyword Succeeds 2 min 10 sec Get Dump Entries
+
+ ${dump_entries}= Get URL List ${DUMP_ENTRY_URI}
+ ${dump_size}= Read Attribute ${dump_entries[0]} Size
+
+ # Max size for dump is 200k = 200x1024
+ Should Be True 0 < ${dump_size} < 204800 msg=Size of dump is incorrect.
+
+
+Dump Out Of Space Test
+ [Documentation] Verify out of dump space is reported when attempt
+ ... to create too many dumps.
+ [Tags] Dump_Out_Of_Space_Test
+
+ # Systems typically hold 8-14 dumps before running out of dump space.
+ # Attempt to create too_many_dumps. Expect to run out of space
+ # before this.
+ ${too_many_dumps} Set Variable ${100}
+
+ # Should be able to create at least this many dumps.
+ ${minimum_number_of_dumps} Set Variable ${7}
+
+ # Loop, creating a dump each iteration. Will either get dump_id or
+ # will get EMPTY when out of dump space.
+ :FOR ${n} IN RANGE ${too_many_dumps}
+ \ ${dump_id}= Create User Initiated Dump check_out_of_space=${True}
+ \ Exit For Loop If '${dump_id}' == '${EMPTY}'
+ \ Check Existence of BMC Dump file ${dump_id}
+
+ Run Keyword If '${dump_id}' != '${EMPTY}' Fail
+ ... msg=Did not run out of dump space as expected.
+
+ Run Keyword If ${n} < ${minimum_number_of_dumps} Fail
+ ... msg=Insufficient space for at least ${minimum_number_of_dumps} dumps.
+
+
+Post Dump BMC Performance Test
+ [Documentation] Check performance of memory, CPU & file system of BMC.
+ [Tags] Post_Dump_BMC_Performance_Test
+
+ Open Connection And Log In
+ Check BMC Performance
+
+
+Post Dump Core Dump Check
+ [Documentation] Check core dump existence on BMC after code update.
+ [Tags] Post_Dump_Core_Dump_Check
+
+ Check For Core Dumps
+
+
+Verify Dump After Host Watchdog Error Injection
+ [Documentation] Inject host watchdog error and verify whether dump is generated.
+ [Tags] Verify_Dump_After_Host_Watchdog_Error_Injection
+
+ Redfish Power On
+
+ Run Keyword And Ignore Error Delete All Dumps
+
+ # Enable auto reboot
+ Set Auto Reboot ${1}
+
+ Trigger Host Watchdog Error 2000 30
+
+ Wait Until Keyword Succeeds 300 sec 20 sec Is Host Rebooted
+
+ #Get dump details
+ @{dump_entry_list}= Read Properties ${DUMP_ENTRY_URI}
+
+ # Verifing that there is only one dump
+ ${length}= Get length ${dump_entry_list}
+ Should Be Equal As Integers ${length} ${1}
+
+ # Get dump id
+ ${value}= Get From List ${dump_entry_list} 0
+ @{split_value}= Split String ${value} /
+ ${dump_id}= Get From List ${split_value} -1
+
+ # Max size for dump is 200k = 200x1024
+ ${dump_size}= Read Attribute ${DUMP_ENTRY_URI}${dump_id} Size
+ Should Be True 0 < ${dump_size} < 204800
+
+
+*** Keywords ***
+
+Test Teardown Execution
+ [Documentation] Do the post test teardown.
+
+ Wait Until Keyword Succeeds 3 min 15 sec Verify No Dump In Progress
+ FFDC On Test Case Fail
+ Delete All BMC Dump
+ Close All Connections