1*** Settings *** 2 3Documentation eSEL's Test cases. 4 5Resource ../../../lib/ipmi_client.robot 6Resource ../../../lib/openbmc_ffdc.robot 7Resource ../../../lib/utils.robot 8Resource ../../../lib/boot_utils.robot 9Resource ../../../lib/esel_utils.robot 10Resource ../../../lib/boot_utils.robot 11Variables ../../../data/variables.py 12 13Suite Setup Suite Setup Execution 14Suite Teardown Suite Teardown Execution 15Test Setup Test Setup Execution 16Test Teardown FFDC On Test Case Fail 17 18Test Tags eSEL 19 20*** Variables *** 21 22${stack_mode} skip 23 24${LOGGING_SERVICE} xyz.openbmc_project.Logging.service 25 26${ESEL_DATA} ESEL=00 00 df 00 00 00 00 20 00 04 12 35 6f aa 00 00 27 28*** Test Cases *** 29 30Verify eSEL Using Redfish 31 [Documentation] Generate eSEL log and verify using redfish. 32 [Tags] Verify_eSEL_Using_Redfish 33 34 Create eSEL 35 Event Log Should Exist 36 37 38Verify eSEL Entries Using Redfish 39 [Documentation] Verify that eSEL entries have data. 40 [Tags] Verify_eSEL_Entries_Using_Redfish 41 42 Create eSEL 43 Redfish.Login 44 Verify eSEL Entries 45 46 47# TODO: openbmc/openbmc-test-automation#1789 48Verify eSEL Description And EntryID Using REST 49 [Documentation] Create eSEL log and verify "Description" and "EntryID" 50 ... are not empty via REST. 51 [Tags] Verify_eSEL_Description_And_EntryID_Using_REST 52 53 # { 54 # "AdditionalData": [ 55 # "CALLOUT_INVENTORY_PATH=", 56 # "ESEL=00 00 df 00 00 00 00 20 00 04 12 35 6f aa 00 00", 57 # "_PID=1175" 58 # ], 59 # "Description": "An error was detected with the base platform, 60 # but was not able to be deciphered. Contact your next level of support.", 61 # "EventID": "FQPSPAA0011M", 62 # "Id": 1, 63 # "Message": "org.open_power.Host.Error.Event", 64 # "Resolved": 0, 65 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error", 66 # "Timestamp": 1524233022072, 67 # "Associations": [ 68 # [ 69 # "callout", 70 # "fault", 71 # "" 72 # ] 73 # ] 74 75 Create eSEL 76 77 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY} 78 ${desc}= Read Attribute ${elog_entry[0]} Description 79 Should Not Be Empty ${desc} msg=${desc} is not populated. 80 81 ${event_id}= Read Attribute ${elog_entry[0]} EventID 82 Should Not Be Equal ${event_id} ${None} 83 ... msg=${event_id} is populated default "None". 84 85 86Verify Multiple eSEL Using Redfish 87 [Documentation] Generate multiple eSEL log and verify using redfish 88 [Tags] Verify_Multiple_eSEL_Using_Redfish 89 90 Create eSEL 91 Create eSEL 92 ${entries}= Count eSEL Entries 93 Should Be Equal As Integers ${entries} ${2} 94 ... msg=Expecting 2 eSELs but found ${entries}. 95 96 97# TODO: openbmc/openbmc-test-automation#1789 98Check eSEL AdditionalData 99 [Documentation] Generate eSEL log and verify AdditionalData is 100 ... not empty. 101 [Tags] Check_eSEL_AdditionalData 102 103 Create eSEL 104 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY} 105 ${resp}= OpenBMC Get Request ${elog_entry[0]} 106 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 107 # "/xyz/openbmc_project/logging/entry/1": { 108 # "Timestamp": 1487743771812, 109 # "AdditionalData": [], 110 # "Message": "org.open_power.Error.Host.Event.Event", 111 # "Id": 1, 112 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Emergency" 113 # } 114 Should Not Be Empty ${resp.json()["data"]["AdditionalData"]} 115 116 117Test Wrong Reservation_ID 118 [Documentation] This testcase is to test BMC can handle multi-requestor's 119 ... oem partial add command with incorrect reservation id. 120 ... It simulates sending partial add command with fake content 121 ... and wrong Reservation ID. This command will be rejected. 122 [Tags] Test_Wrong_Reservation_ID 123 124 ${rev_id_1}= Run Inband IPMI Raw Command 0x0a 0x42 125 ${rev_id_ls}= Get Substring ${rev_id_1} 1 3 126 ${rev_id_ms}= Get Substring ${rev_id_1} -2 127 Run Inband IPMI Raw Command 0x0a 0x42 128 ${output}= Check IPMI OEMpartialadd Reject 129 ... 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 130 Should Contain ${output} Reservation cancelled 131 132Test Correct Reservation_ID 133 [Documentation] This testcase is to test BMC can handle multi-requestor's 134 ... oem partial add command with correct reservation id. It 135 ... simulates sending partial add command with fake content 136 ... and correct Reservation ID. This command will be accepted. 137 [Tags] Test_Correct_Reservation_ID 138 139 Run Inband IPMI Raw Command 0x0a 0x42 140 ${rev_id_2}= Run Inband IPMI Raw Command 0x0a 0x42 141 ${rev_id_ls}= Get Substring ${rev_id_2} 1 3 142 ${rev_id_ms}= Get Substring ${rev_id_2} -2 143 ${output}= Check IPMI OEMpartialadd Accept 144 ... 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 145 Should Be Empty ${output} 146 147 148*** Keywords *** 149 150 151Suite Teardown Execution 152 [Documentation] Cleanup test logs and connection. 153 Close All Connections 154 Redfish.Logout 155 156 157Restart Logging Service 158 [Documentation] Restart Logging to clear eSEL log. 159 ${MainPID} ${stderr}= Execute Command 160 ... systemctl restart ${LOGGING_SERVICE} return_stderr=True 161 Should Be Empty ${stderr} 162 163 Sleep 10s reason=Wait for service to restart properly. 164 165 166Run IPMI Command Returned 167 [Documentation] Run the IPMI command and return the output. 168 [Arguments] ${args} 169 ${output_1}= Execute Command /tmp/ipmitool -I dbus raw ${args} 170 RETURN ${output_1} 171 172 173Check IPMI OEMpartialadd Reject 174 [Documentation] Check if IPMI rejects the OEM partial add command. 175 [Arguments] ${args} 176 Login To OS Host ${OS_HOST} ${OS_USERNAME} ${OS_PASSWORD} 177 ${stdout} ${stderr} ${output_2}= Execute Command ipmitool raw ${args} 178 ... return_stdout=True return_stderr=True return_rc=True 179 RETURN ${stderr} 180 181 182Test Setup Execution 183 [Documentation] Do test case setup tasks. 184 185 Redfish.Login 186 Redfish Purge Event Log 187 188 189Suite Setup Execution 190 [Documentation] Validates input parameters & check if HOST OS is up. 191 192 Should Not Be Empty 193 ... ${OS_HOST} msg=You must provide DNS name/IP of the OS host. 194 Should Not Be Empty 195 ... ${OS_USERNAME} msg=You must provide OS host user name. 196 Should Not Be Empty 197 ... ${OS_PASSWORD} msg=You must provide OS host user password. 198 199 # Boot to OS. 200 Redfish Power On 201 202 Redfish.Login 203 Redfish Purge Event Log 204 205 Login To OS Host ${OS_HOST} ${OS_USERNAME} ${OS_PASSWORD} 206 Open Connection And Log In 207 208 209Check IPMI OEMpartialadd Accept 210 [Documentation] Check if IPMI accepts the OEM partial add command. 211 [Arguments] ${args} 212 Login To OS Host ${OS_HOST} ${OS_USERNAME} ${OS_PASSWORD} 213 ${stdout} ${stderr} ${output_3}= Execute Command ipmitool raw ${args} 214 ... return_stdout=True return_stderr=True return_rc=True 215 Should Be Equal ${output_3} ${0} msg=${stderr} 216 RETURN ${stderr} 217 218 219Event Log Should Exist 220 [Documentation] Event log entries should exist. 221 222 ${elogs}= Get Event Logs 223 Should Not Be Empty ${elogs} msg=System event log entry is not empty. 224