1*** Settings *** 2Documentation Test BMC network interface functionalities. 3 4Resource ../../lib/bmc_redfish_resource.robot 5Resource ../../lib/bmc_network_utils.robot 6Resource ../../lib/openbmc_ffdc.robot 7Library ../../lib/bmc_network_utils.py 8 9Suite Setup Suite Setup Execution 10Test Teardown Test Teardown Execution 11 12Test Tags Bmc_Network_Mac 13 14*** Variables *** 15 16# AA:AA:AA:AA:AA:AA series is a valid MAC and does not exist in 17# our network, so this is chosen to avoid MAC conflict. 18${valid_mac} AA:E2:84:14:28:79 19${zero_mac} 00:00:00:00:00:00 20${broadcast_mac} FF:FF:FF:FF:FF:FF 21${out_of_range_mac} AA:FF:FF:FF:FF:100 22 23# There will be 6 bytes in MAC address (e.g. xx.xx.xx.xx.xx.xx). 24# Here trying to configure xx.xx.xx.xx.xx 25${less_byte_mac} AA:AA:AA:AA:BB 26# Here trying to configure xx.xx.xx.xx.xx.xx.xx 27${more_byte_mac} AA:AA:AA:AA:AA:AA:BB 28 29# MAC address with special characters. 30${special_char_mac} &A:$A:AA:AA:AA:^^ 31 32*** Test Cases *** 33 34Configure Valid MAC And Verify 35 [Documentation] Configure valid MAC via Redfish and verify. 36 [Tags] Configure_Valid_MAC_And_Verify 37 38 Configure MAC Settings ${valid_mac} 39 40 # Verify whether new MAC is configured on BMC and FW_Env. 41 Validate MAC On BMC ${valid_mac} 42 Verify MAC Address Via FW_Env ${valid_mac} 43 44Configure Zero MAC And Verify 45 [Documentation] Configure zero MAC via Redfish and verify. 46 [Tags] Configure_Zero_MAC_And_Verify 47 48 [Template] Configure MAC Settings 49 # MAC address scenario 50 ${zero_mac} ${HTTP_BAD_REQUEST} 51 52Configure Broadcast MAC And Verify 53 [Documentation] Configure broadcast MAC via Redfish and verify. 54 [Tags] Configure_Broadcast_MAC_And_Verify 55 56 [Template] Configure MAC Settings 57 # MAC address scenario 58 ${broadcast_mac} ${HTTP_BAD_REQUEST} 59 60Configure Invalid MAC And Verify 61 [Documentation] Configure invalid MAC address which is a string. 62 [Tags] Configure_Invalid_MAC_And_Verify 63 64 [Template] Configure MAC Settings 65 # MAC Address Expected_Result 66 ${special_char_mac} ${HTTP_BAD_REQUEST} 67 68Configure Valid MAC And Check Persistency 69 [Documentation] Configure valid MAC and check persistency. 70 [Tags] Configure_Valid_MAC_And_Check_Persistency 71 72 Configure MAC Settings ${valid_mac} 73 74 # Verify whether new MAC is configured on BMC. 75 Validate MAC On BMC ${valid_mac} 76 77 # Reboot BMC and check whether MAC is persistent on BMC and FW_Env. 78 OBMC Reboot (off) 79 Validate MAC On BMC ${valid_mac} 80 Verify MAC Address Via FW_Env ${valid_mac} 81 82Configure Invalid MAC And Verify On FW_Env 83 [Documentation] Configure Invalid MAC via Redfish and verify on FW_Env. 84 [Tags] Configure_Invalid_MAC_And_Verify_On_FW_Env 85 86 [Template] Configure MAC Settings 87 88 # invalid_MAC scenario 89 ${zero_mac} ${HTTP_BAD_REQUEST} 90 ${broadcast_mac} ${HTTP_BAD_REQUEST} 91 ${special_char_mac} ${HTTP_BAD_REQUEST} 92 ${less_byte_mac} ${HTTP_BAD_REQUEST} 93 94Configure Invalid MAC And Verify Persistency On FW_Env 95 [Documentation] Configure invalid MAC and verify persistency on FW_Env. 96 [Tags] Configure_Invalid_MAC_And_Verify_Persistency_On_FW_Env 97 98 Configure MAC Settings ${special_char_mac} ${HTTP_BAD_REQUEST} 99 100 # Reboot BMC and check whether MAC is persistent on FW_Env. 101 OBMC Reboot (off) 102 Verify MAC Address Via FW_Env ${special_char_mac} ${HTTP_BAD_REQUEST} 103 104Configure Out Of Range MAC And Verify 105 [Documentation] Configure out of range MAC via Redfish and verify. 106 [Tags] Configure_Out_Of_Range_MAC_And_Verify 107 108 Configure MAC Settings ${out_of_range_mac} ${HTTP_BAD_REQUEST} 109 110 # Verify whether new MAC is configured on FW_Env. 111 Verify MAC Address Via FW_Env ${out_of_range_mac} ${HTTP_BAD_REQUEST} 112 113Configure Less Byte MAC And Verify 114 [Documentation] Configure less byte MAC via Redfish and verify. 115 [Tags] Configure_Less_Byte_MAC_And_Verify 116 117 [Template] Configure MAC Settings 118 # MAC address scenario 119 ${less_byte_mac} ${HTTP_BAD_REQUEST} 120 121Configure More Byte MAC And Verify 122 [Documentation] Configure more byte MAC via Redfish and verify. 123 [Tags] Configure_More_Byte_MAC_And_Verify 124 125 Configure MAC Settings ${more_byte_mac} ${HTTP_BAD_REQUEST} 126 # Verify whether new MAC is configured on FW_Env. 127 Verify MAC Address Via FW_Env ${more_byte_mac} ${HTTP_BAD_REQUEST} 128 129 130*** Keywords *** 131 132Test Teardown Execution 133 [Documentation] Do the post test teardown. 134 135 # Revert to initial MAC address. 136 Configure MAC Settings ${initial_mac_address} 137 138 # Verify whether new MAC is configured on BMC and FW_Env. 139 Validate MAC On BMC ${initial_mac_address} 140 Validate MAC On Fw_Env ${initial_mac_address} 141 142 FFDC On Test Case Fail 143 Redfish.Logout 144 145 146Suite Setup Execution 147 [Documentation] Do suite setup tasks. 148 149 Redfish.Login 150 ${active_channel_config}= Get Active Channel Config 151 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 152 153 # Get BMC MAC address. 154 ${resp}= redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 155 Set Suite Variable ${initial_mac_address} ${resp.dict['MACAddress']} 156 157 Validate MAC On BMC ${initial_mac_address} 158 159 Redfish.Logout 160 161 162Configure MAC Settings 163 [Documentation] Configure MAC settings via Redfish. 164 [Arguments] ${mac_address} ${valid_status_code}=${HTTP_OK} 165 166 # Description of argument(s): 167 # mac_address MAC address of BMC. 168 # valid_status_code Expected response code, default is ${HTTP_OK}. 169 170 ${active_channel_config}= Get Active Channel Config 171 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 172 173 Redfish.Login 174 ${payload}= Create Dictionary MACAddress=${mac_address} 175 176 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{payload} 177 ... valid_status_codes=[${valid_status_code},${HTTP_INTERNAL_SERVER_ERROR}] 178 179 # After any modification on network interface, BMC restarts network 180 # Note: Network restart takes around 15-18s after patch request processing. 181 Sleep ${NETWORK_TIMEOUT}s 182 183 Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 184 185 # Verify whether new MAC address is populated on BMC system. 186 # It should not allow to configure invalid settings. 187 ${status}= Run Keyword And Return Status 188 ... Validate MAC On BMC ${mac_address} 189 190 Run Keyword If ${valid_status_code} == ${HTTP_BAD_REQUEST} 191 ... Should Be Equal ${status} ${False} 192 ... msg=Allowing the configuration of an invalid MAC. 193 ... ELSE 194 ... Should Be Equal ${status} ${True} 195 ... msg=Not allowing the configuration of a valid MAC. 196 197 Verify MAC Address Via FW_Env ${mac_address} ${valid_status_code} 198 199Verify MAC Address Via FW_Env 200 [Documentation] Verify MAC address on FW_Env. 201 [Arguments] ${mac_address} ${valid_status_code}=${HTTP_OK} 202 203 # Description of argument(s): 204 # mac_address MAC address of BMC. 205 # valid_status_code Expected response code, default is ${HTTP_OK}. 206 207 ${status}= Run Keyword And Return Status 208 ... Validate MAC On FW_Env ${mac_address} 209 210 Run Keyword If ${valid_status_code} == ${HTTP_BAD_REQUEST} 211 ... Should Be Equal ${status} ${False} 212 ... msg=Allowing the configuration of an invalid MAC. 213 ... ELSE 214 ... Should Be Equal ${status} ${True} 215 ... msg=Not allowing the configuration of a valid MAC. 216