| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 1 | *** Settings *** | 
 | 2 | Documentation  Test BMC network interface functionalities. | 
 | 3 |  | 
 | 4 | Resource       ../../lib/bmc_redfish_resource.robot | 
 | 5 | Resource       ../../lib/bmc_network_utils.robot | 
 | 6 | Resource       ../../lib/openbmc_ffdc.robot | 
 | 7 | Library        ../../lib/bmc_network_utils.py | 
 | 8 |  | 
 | 9 | Suite Setup    Suite Setup Execution | 
| George Keishing | a8cc1ad | 2019-03-13 02:58:34 -0500 | [diff] [blame] | 10 | Test Teardown  Test Teardown Execution | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 11 |  | 
| Prashanth Katti | d218f53 | 2019-06-13 04:22:34 -0500 | [diff] [blame] | 12 | Force Tags     MAC_Test | 
 | 13 |  | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 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 | 
| Prashanth Katti | 46ca7ae | 2019-03-14 02:41:11 -0500 | [diff] [blame] | 19 | ${zero_mac}          00:00:00:00:00:00 | 
 | 20 | ${broadcast_mac}     FF:FF:FF:FF:FF:FF | 
| Prashanth Katti | 6386213 | 2019-03-15 04:45:31 -0500 | [diff] [blame] | 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 | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 28 |  | 
| Prashanth Katti | e8c8735 | 2019-03-21 06:23:41 -0500 | [diff] [blame] | 29 | # MAC address with special characters. | 
 | 30 | ${special_char_mac}  &A:$A:AA:AA:AA:^^ | 
 | 31 |  | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 32 | *** Test Cases *** | 
 | 33 |  | 
 | 34 | Configure 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}  valid | 
 | 39 |  | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 40 |     # Verify whether new MAC is configured on BMC and FW_Env. | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 41 |     Validate MAC On BMC  ${valid_mac} | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 42 |     Verify MAC Address Via FW_Env  ${valid_mac}  valid | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 43 |  | 
| Prashanth Katti | 46ca7ae | 2019-03-14 02:41:11 -0500 | [diff] [blame] | 44 | Configure 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}    error | 
 | 51 |  | 
| Prashanth Katti | 46ca7ae | 2019-03-14 02:41:11 -0500 | [diff] [blame] | 52 | Configure 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}  error | 
 | 59 |  | 
| Prashanth Katti | e8c8735 | 2019-03-21 06:23:41 -0500 | [diff] [blame] | 60 | Configure 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}  error | 
 | 67 |  | 
 | 68 | Configure 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}  valid | 
 | 73 |  | 
 | 74 |     # Verify whether new MAC is configured on BMC. | 
 | 75 |     Validate MAC On BMC  ${valid_mac} | 
 | 76 |  | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 77 |     # Reboot BMC and check whether MAC is persistent on BMC and FW_Env. | 
| Prashanth Katti | e8c8735 | 2019-03-21 06:23:41 -0500 | [diff] [blame] | 78 |     OBMC Reboot (off) | 
 | 79 |     Validate MAC On BMC  ${valid_mac} | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 80 |     Verify MAC Address Via FW_Env  ${valid_mac}  valid | 
 | 81 |  | 
 | 82 | Configure 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}          error | 
 | 90 |     ${broadcast_mac}     error | 
 | 91 |     ${special_char_mac}  error | 
 | 92 |     ${less_byte_mac}     error | 
 | 93 |  | 
| George Keishing | eedd71a | 2020-09-17 00:40:36 -0500 | [diff] [blame] | 94 | Configure Invalid MAC And Verify Persistency On FW_Env | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 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}  error | 
 | 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}  error | 
| Prashanth Katti | 46ca7ae | 2019-03-14 02:41:11 -0500 | [diff] [blame] | 103 |  | 
| Prashanth Katti | 6386213 | 2019-03-15 04:45:31 -0500 | [diff] [blame] | 104 | Configure 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 |  | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 108 |     Configure MAC Settings  ${out_of_range_mac}  valid | 
 | 109 |  | 
 | 110 |     # Verify whether new MAC is configured on FW_Env. | 
 | 111 |     Verify MAC Address Via FW_Env  ${out_of_range_mac}  valid | 
| Prashanth Katti | 6386213 | 2019-03-15 04:45:31 -0500 | [diff] [blame] | 112 |  | 
 | 113 | Configure 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}  error | 
 | 120 |  | 
 | 121 | Configure More Byte MAC And Verify | 
 | 122 |     [Documentation]  Configure more byte MAC via Redfish and verify. | 
| Tony Lee | 3112f4c | 2020-05-13 20:31:42 +0800 | [diff] [blame] | 123 |     [Tags]  Configure_More_Byte_MAC_And_Verify | 
| Prashanth Katti | 6386213 | 2019-03-15 04:45:31 -0500 | [diff] [blame] | 124 |  | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 125 |     Configure MAC Settings  ${more_byte_mac}  valid | 
 | 126 |     # Verify whether new MAC is configured on FW_Env. | 
 | 127 |     Verify MAC Address Via FW_Env  ${more_byte_mac}  valid | 
| Prashanth Katti | 6386213 | 2019-03-15 04:45:31 -0500 | [diff] [blame] | 128 |  | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 129 | *** Keywords *** | 
 | 130 |  | 
| George Keishing | a8cc1ad | 2019-03-13 02:58:34 -0500 | [diff] [blame] | 131 | Test Teardown Execution | 
 | 132 |     [Documentation]  Do the post test teardown. | 
 | 133 |  | 
| Prashanth Katti | e8c8735 | 2019-03-21 06:23:41 -0500 | [diff] [blame] | 134 |     # Revert to initial MAC address. | 
 | 135 |     Configure MAC Settings  ${initial_mac_address}  valid | 
 | 136 |  | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 137 |     # Verify whether new MAC is configured on BMC and FW_Env. | 
| Prashanth Katti | e8c8735 | 2019-03-21 06:23:41 -0500 | [diff] [blame] | 138 |     Validate MAC On BMC  ${initial_mac_address} | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 139 |     Validate MAC On Fw_Env  ${initial_mac_address} | 
| Prashanth Katti | e8c8735 | 2019-03-21 06:23:41 -0500 | [diff] [blame] | 140 |  | 
| George Keishing | a8cc1ad | 2019-03-13 02:58:34 -0500 | [diff] [blame] | 141 |     FFDC On Test Case Fail | 
 | 142 |     Redfish.Logout | 
 | 143 |  | 
 | 144 |  | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 145 | Suite Setup Execution | 
 | 146 |     [Documentation]  Do suite setup tasks. | 
 | 147 |  | 
 | 148 |     Redfish.Login | 
| Tony Lee | 8094d38 | 2020-04-02 13:14:47 +0800 | [diff] [blame] | 149 |     ${active_channel_config}=  Get Active Channel Config | 
 | 150 |     ${ethernet_interface}=  Set Variable  ${active_channel_config['${CHANNEL_NUMBER}']['name']} | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 151 |  | 
 | 152 |     # Get BMC MAC address. | 
| Tony Lee | 8094d38 | 2020-04-02 13:14:47 +0800 | [diff] [blame] | 153 |     ${resp}=  redfish.Get  ${REDFISH_NW_ETH_IFACE}${ethernet_interface} | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 154 |     Set Suite Variable  ${initial_mac_address}  ${resp.dict['MACAddress']} | 
 | 155 |  | 
 | 156 |     Validate MAC On BMC  ${initial_mac_address} | 
 | 157 |  | 
 | 158 |     Redfish.Logout | 
 | 159 |  | 
| Prashanth Katti | 46ca7ae | 2019-03-14 02:41:11 -0500 | [diff] [blame] | 160 |  | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 161 | Configure MAC Settings | 
 | 162 |     [Documentation]  Configure MAC settings via Redfish. | 
 | 163 |     [Arguments]  ${mac_address}  ${expected_result} | 
 | 164 |  | 
 | 165 |     # Description of argument(s): | 
 | 166 |     # mac_address      MAC address of BMC. | 
 | 167 |     # expected_result  Expected status of MAC configuration. | 
 | 168 |  | 
| Tony Lee | 8094d38 | 2020-04-02 13:14:47 +0800 | [diff] [blame] | 169 |     ${active_channel_config}=  Get Active Channel Config | 
 | 170 |     ${ethernet_interface}=  Set Variable  ${active_channel_config['${CHANNEL_NUMBER}']['name']} | 
 | 171 |  | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 172 |     Redfish.Login | 
 | 173 |     ${payload}=  Create Dictionary  MACAddress=${mac_address} | 
 | 174 |  | 
| Tony Lee | 8094d38 | 2020-04-02 13:14:47 +0800 | [diff] [blame] | 175 |     Redfish.Patch  ${REDFISH_NW_ETH_IFACE}${ethernet_interface}  body=&{payload} | 
| Prashanth Katti | 12ebf6c | 2019-06-28 06:31:22 -0500 | [diff] [blame] | 176 |     ...  valid_status_codes=[200, 400, 500] | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 177 |  | 
 | 178 |     # After any modification on network interface, BMC restarts network | 
 | 179 |     # module, wait until it is reachable. | 
 | 180 |  | 
| Prashanth Katti | 12ebf6c | 2019-06-28 06:31:22 -0500 | [diff] [blame] | 181 |     Wait Until Keyword Succeeds  ${NETWORK_TIMEOUT}  ${NETWORK_RETRY_TIME} | 
| Tony Lee | 8094d38 | 2020-04-02 13:14:47 +0800 | [diff] [blame] | 182 |     ...  redfish.Get  ${REDFISH_NW_ETH_IFACE}${ethernet_interface} | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 183 |  | 
 | 184 |     # Verify whether new MAC address is populated on BMC system. | 
 | 185 |     # It should not allow to configure invalid settings. | 
| Prashanth Katti | ed0bedd | 2019-02-20 07:34:14 -0600 | [diff] [blame] | 186 |     ${status}=  Run Keyword And Return Status | 
 | 187 |     ...  Validate MAC On BMC  ${mac_address} | 
 | 188 |  | 
 | 189 |     Run Keyword If  '${expected_result}' == 'error' | 
 | 190 |     ...      Should Be Equal  ${status}  ${False} | 
 | 191 |     ...      msg=Allowing the configuration of an invalid MAC. | 
 | 192 |     ...  ELSE | 
 | 193 |     ...      Should Be Equal  ${status}  ${True} | 
 | 194 |     ...      msg=Not allowing the configuration of a valid MAC. | 
 | 195 |  | 
| shrsuman123 | fdc51d2 | 2020-08-18 06:51:09 -0500 | [diff] [blame] | 196 |     Verify MAC Address Via FW_Env  ${mac_address}  ${expected_result} | 
 | 197 |  | 
 | 198 | Verify MAC Address Via FW_Env | 
 | 199 |     [Documentation]  Verify MAC address on FW_Env. | 
 | 200 |     [Arguments]  ${mac_address}  ${expected_result} | 
 | 201 |  | 
 | 202 |     # Description of argument(s): | 
 | 203 |     # mac_address      MAC address of BMC. | 
 | 204 |     # expected_result  Expected status of MAC configuration. | 
 | 205 |  | 
 | 206 |     ${status}=  Run Keyword And Return Status | 
 | 207 |     ...  Validate MAC On FW_Env  ${mac_address} | 
 | 208 |  | 
 | 209 |     Run Keyword If  '${expected_result}' == 'error' | 
 | 210 |     ...      Should Be Equal  ${status}  ${False} | 
 | 211 |     ...      msg=Allowing the configuration of an invalid MAC. | 
 | 212 |     ...  ELSE | 
 | 213 |     ...      Should Be Equal  ${status}  ${True} | 
 | 214 |     ...      msg=Not allowing the configuration of a valid MAC. | 
 | 215 |  | 
 | 216 |  |