1*** Settings *** 2 3Documentation Test BMC dump functionality of OpenBMC. 4 5Resource ../../lib/openbmc_ffdc.robot 6Resource ../../lib/dump_utils.robot 7 8Test Setup Redfish Delete All BMC Dumps 9Test Teardown Test Teardown Execution 10 11 12*** Test Cases *** 13 14Verify User Initiated BMC Dump When Host Powered Off 15 [Documentation] Create user initiated BMC dump at host off state and 16 ... verify dump entry for it. 17 [Tags] Verify_User_Initiated_BMC_Dump_When_Host_Powered_Off 18 19 Redfish Power Off stack_mode=skip 20 ${dump_id}= Create User Initiated BMC Dump 21 ${dump_entries}= Get BMC Dump Entries 22 Length Should Be ${dump_entries} 1 23 List Should Contain Value ${dump_entries} ${dump_id} 24 25Verify User Initiated BMC Dump When Host Booted 26 [Documentation] Create user initiated BMC dump at host booted state and 27 ... verify dump entry for it. 28 [Tags] Verify_User_Initiated_BMC_Dump_When_Host_Booted 29 30 Redfish Power On stack_mode=skip 31 ${dump_id}= Create User Initiated BMC Dump 32 ${dump_entries}= Get BMC Dump Entries 33 Length Should Be ${dump_entries} 1 34 List Should Contain Value ${dump_entries} ${dump_id} 35 36 37Verify Dump Persistency On Dump Service Restart 38 [Documentation] Create user dump, restart dump manager service and verify dump 39 ... persistency. 40 [Tags] Verify_Dump_Persistency_On_Dump_Service_Restart 41 42 Create User Initiated BMC Dump 43 ${dump_entries_before}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries 44 45 # Restart dump service. 46 BMC Execute Command systemctl restart xyz.openbmc_project.Dump.Manager.service 47 Sleep 10s reason=Wait for BMC dump service to restart properly 48 49 ${dump_entries_after}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries 50 Lists Should Be Equal ${dump_entries_before} ${dump_entries_after} 51 52 53Verify Dump Persistency On BMC Reset 54 [Documentation] Create user dump, reset BMC and verify dump persistency. 55 [Tags] Verify_Dump_Persistency_On_BMC_Reset 56 57 Create User Initiated BMC Dump 58 ${dump_entries_before}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries 59 60 # Reset BMC. 61 OBMC Reboot (off) 62 63 ${dump_entries_after}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries 64 Lists Should Be Equal ${dump_entries_before} ${dump_entries_after} 65 66 67Delete User Initiated BMC Dump And Verify 68 [Documentation] Delete user initiated BMC dump and verify. 69 [Tags] Delete_User_Initiated_BMC_Dump_And_Verify 70 71 ${dump_id}= Create User Initiated BMC Dump 72 Redfish Delete BMC Dump ${dump_id} 73 74 ${dump_entries}= Get BMC Dump Entries 75 Should Be Empty ${dump_entries} 76 77 78Delete All User Initiated BMC Dumps And Verify 79 [Documentation] Delete all user initiated BMC dumps and verify. 80 [Tags] Delete_All_User_Initiated_BMC_Dumps_And_Verify 81 82 # Create some BMC dump. 83 Create User Initiated BMC Dump 84 Create User Initiated BMC Dump 85 86 Redfish Delete All BMC Dumps 87 ${dump_entries}= Get BMC Dump Entries 88 Should Be Empty ${dump_entries} 89 90 91Create Two User Initiated BMC Dumps 92 [Documentation] Create two user initiated BMC dumps. 93 [Tags] Create_Two_User_Initiated_BMC_Dumps 94 95 ${dump_id1}= Create User Initiated BMC Dump 96 ${dump_id2}= Create User Initiated BMC Dump 97 98 ${dump_entries}= Get BMC Dump Entries 99 Length Should Be ${dump_entries} 2 100 Should Contain ${dump_entries} ${dump_id1} 101 Should Contain ${dump_entries} ${dump_id2} 102 103 104Create Two User Initiated BMC Dumps And Delete One 105 [Documentation] Create two dumps and delete the first. 106 [Tags] Create_Two_User_Initiated_BMC_Dumps_And_Delete_One 107 108 ${dump_id1}= Create User Initiated BMC Dump 109 ${dump_id2}= Create User Initiated BMC Dump 110 111 Redfish Delete BMC Dump ${dump_id1} 112 113 ${dump_entries}= Get BMC Dump Entries 114 Length Should Be ${dump_entries} 1 115 List Should Contain Value ${dump_entries} ${dump_id2} 116 117 118Create And Delete User Initiated BMC Dump Multiple Times 119 [Documentation] Create and delete user initiated BMC dump multiple times. 120 [Tags] Create_And_Delete_User_Initiated_BMC_Dump_Multiple_Times 121 122 FOR ${INDEX} IN 1 10 123 ${dump_id}= Create User Initiated BMC Dump 124 Redfish Delete BMC Dump ${dump_id} 125 END 126 127 128*** Keywords *** 129 130Create User Initiated BMC Dump 131 [Documentation] Generate user initiated BMC dump and return the dump id number (e.g., "5"). 132 133 ${payload}= Create Dictionary DiagnosticDataType=Manager 134 ${resp}= Redfish.Post /redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData 135 ... body=${payload} valid_status_codes=[${HTTP_ACCEPTED}] 136 137 # Example of response from above Redfish POST request. 138 # "@odata.id": "/redfish/v1/TaskService/Tasks/0", 139 # "@odata.type": "#Task.v1_4_3.Task", 140 # "Id": "0", 141 # "TaskState": "Running", 142 # "TaskStatus": "OK" 143 144 Wait Until Keyword Succeeds 5 min 15 sec Is Task Completed ${resp.dict['Id']} 145 ${task_id}= Set Variable ${resp.dict['Id']} 146 147 ${task_dict}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id} 148 149 # Example of HttpHeaders field of task details. 150 # "Payload": { 151 # "HttpHeaders": [ 152 # "Host: <BMC_IP>", 153 # "Accept-Encoding: identity", 154 # "Connection: Keep-Alive", 155 # "Accept: */*", 156 # "Content-Length: 33", 157 # "Location: /redfish/v1/Managers/bmc/LogServices/Dump/Entries/2"] 158 # ], 159 # "HttpOperation": "POST", 160 # "JsonBody": "{\"DiagnosticDataType\":\"Manager\"}", 161 # "TargetUri": "/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData" 162 # } 163 164 [Return] ${task_dict["Payload"]["HttpHeaders"][-1].split("/")[-1]} 165 166 167Get BMC Dump Entries 168 [Documentation] Return BMC dump ids list. 169 170 ${dump_uris}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries 171 ${dump_ids}= Create List 172 173 FOR ${dump_uri} IN @{dump_uris} 174 ${dump_id}= Fetch From Right ${dump_uri} / 175 Append To List ${dump_ids} ${dump_id} 176 END 177 178 [Return] ${dump_ids} 179 180 181Is Task Completed 182 [Documentation] Verify if the given task is completed. 183 [Arguments] ${task_id} 184 185 # Description of argument(s): 186 # task_id Id of task which needs to be checked. 187 188 ${task_dict}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id} 189 Should Be Equal As Strings ${task_dict['TaskState']} Completed 190 191 192Test Teardown Execution 193 [Documentation] Do test teardown operation. 194 195 FFDC On Test Case Fail 196 Close All Connections 197