blob: 9f9c3e0c16532fb32f496512e083da45c741c502 [file] [log] [blame]
*** Settings ***
Documentation Test BMC network interface functionalities.
Resource ../../lib/bmc_redfish_resource.robot
Resource ../../lib/bmc_network_utils.robot
Resource ../../lib/openbmc_ffdc.robot
Library ../../lib/bmc_network_utils.py
Suite Setup Suite Setup Execution
Test Teardown Test Teardown Execution
Force Tags Bmc_Network_Mac
*** Variables ***
# AA:AA:AA:AA:AA:AA series is a valid MAC and does not exist in
# our network, so this is chosen to avoid MAC conflict.
${valid_mac} AA:E2:84:14:28:79
${zero_mac} 00:00:00:00:00:00
${broadcast_mac} FF:FF:FF:FF:FF:FF
${out_of_range_mac} AA:FF:FF:FF:FF:100
# There will be 6 bytes in MAC address (e.g. xx.xx.xx.xx.xx.xx).
# Here trying to configure xx.xx.xx.xx.xx
${less_byte_mac} AA:AA:AA:AA:BB
# Here trying to configure xx.xx.xx.xx.xx.xx.xx
${more_byte_mac} AA:AA:AA:AA:AA:AA:BB
# MAC address with special characters.
${special_char_mac} &A:$A:AA:AA:AA:^^
*** Test Cases ***
Configure Valid MAC And Verify
[Documentation] Configure valid MAC via Redfish and verify.
[Tags] Configure_Valid_MAC_And_Verify
Configure MAC Settings ${valid_mac}
# Verify whether new MAC is configured on BMC and FW_Env.
Validate MAC On BMC ${valid_mac}
Verify MAC Address Via FW_Env ${valid_mac}
Configure Zero MAC And Verify
[Documentation] Configure zero MAC via Redfish and verify.
[Tags] Configure_Zero_MAC_And_Verify
[Template] Configure MAC Settings
# MAC address scenario
${zero_mac} ${HTTP_BAD_REQUEST}
Configure Broadcast MAC And Verify
[Documentation] Configure broadcast MAC via Redfish and verify.
[Tags] Configure_Broadcast_MAC_And_Verify
[Template] Configure MAC Settings
# MAC address scenario
${broadcast_mac} ${HTTP_BAD_REQUEST}
Configure Invalid MAC And Verify
[Documentation] Configure invalid MAC address which is a string.
[Tags] Configure_Invalid_MAC_And_Verify
[Template] Configure MAC Settings
# MAC Address Expected_Result
${special_char_mac} ${HTTP_BAD_REQUEST}
Configure Valid MAC And Check Persistency
[Documentation] Configure valid MAC and check persistency.
[Tags] Configure_Valid_MAC_And_Check_Persistency
Configure MAC Settings ${valid_mac}
# Verify whether new MAC is configured on BMC.
Validate MAC On BMC ${valid_mac}
# Reboot BMC and check whether MAC is persistent on BMC and FW_Env.
OBMC Reboot (off)
Validate MAC On BMC ${valid_mac}
Verify MAC Address Via FW_Env ${valid_mac}
Configure Invalid MAC And Verify On FW_Env
[Documentation] Configure Invalid MAC via Redfish and verify on FW_Env.
[Tags] Configure_Invalid_MAC_And_Verify_On_FW_Env
[Template] Configure MAC Settings
# invalid_MAC scenario
${zero_mac} ${HTTP_BAD_REQUEST}
${broadcast_mac} ${HTTP_BAD_REQUEST}
${special_char_mac} ${HTTP_BAD_REQUEST}
${less_byte_mac} ${HTTP_BAD_REQUEST}
Configure Invalid MAC And Verify Persistency On FW_Env
[Documentation] Configure invalid MAC and verify persistency on FW_Env.
[Tags] Configure_Invalid_MAC_And_Verify_Persistency_On_FW_Env
Configure MAC Settings ${special_char_mac} ${HTTP_BAD_REQUEST}
# Reboot BMC and check whether MAC is persistent on FW_Env.
OBMC Reboot (off)
Verify MAC Address Via FW_Env ${special_char_mac} ${HTTP_BAD_REQUEST}
Configure Out Of Range MAC And Verify
[Documentation] Configure out of range MAC via Redfish and verify.
[Tags] Configure_Out_Of_Range_MAC_And_Verify
Configure MAC Settings ${out_of_range_mac} ${HTTP_BAD_REQUEST}
# Verify whether new MAC is configured on FW_Env.
Verify MAC Address Via FW_Env ${out_of_range_mac} ${HTTP_BAD_REQUEST}
Configure Less Byte MAC And Verify
[Documentation] Configure less byte MAC via Redfish and verify.
[Tags] Configure_Less_Byte_MAC_And_Verify
[Template] Configure MAC Settings
# MAC address scenario
${less_byte_mac} ${HTTP_BAD_REQUEST}
Configure More Byte MAC And Verify
[Documentation] Configure more byte MAC via Redfish and verify.
[Tags] Configure_More_Byte_MAC_And_Verify
Configure MAC Settings ${more_byte_mac} ${HTTP_BAD_REQUEST}
# Verify whether new MAC is configured on FW_Env.
Verify MAC Address Via FW_Env ${more_byte_mac} ${HTTP_BAD_REQUEST}
*** Keywords ***
Test Teardown Execution
[Documentation] Do the post test teardown.
# Revert to initial MAC address.
Configure MAC Settings ${initial_mac_address}
# Verify whether new MAC is configured on BMC and FW_Env.
Validate MAC On BMC ${initial_mac_address}
Validate MAC On Fw_Env ${initial_mac_address}
FFDC On Test Case Fail
Redfish.Logout
Suite Setup Execution
[Documentation] Do suite setup tasks.
Redfish.Login
${active_channel_config}= Get Active Channel Config
${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
# Get BMC MAC address.
${resp}= redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
Set Suite Variable ${initial_mac_address} ${resp.dict['MACAddress']}
Validate MAC On BMC ${initial_mac_address}
Redfish.Logout
Configure MAC Settings
[Documentation] Configure MAC settings via Redfish.
[Arguments] ${mac_address} ${valid_status_codes}=[${HTTP_OK}]
# Description of argument(s):
# mac_address MAC address of BMC.
# expected_result Expected status of MAC configuration.
${active_channel_config}= Get Active Channel Config
${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
Redfish.Login
${payload}= Create Dictionary MACAddress=${mac_address}
Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{payload}
... valid_status_codes=${valid_status_codes}
# After any modification on network interface, BMC restarts network
# Note: Network restart takes around 15-18s after patch request processing.
Sleep ${NETWORK_TIMEOUT}s
Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
# Verify whether new MAC address is populated on BMC system.
# It should not allow to configure invalid settings.
${status}= Run Keyword And Return Status
... Validate MAC On BMC ${mac_address}
Run Keyword If ${valid_status_codes} == ${HTTP_BAD_REQUEST}
... Should Be Equal ${status} ${False}
... msg=Allowing the configuration of an invalid MAC.
... ELSE
... Should Be Equal ${status} ${True}
... msg=Not allowing the configuration of a valid MAC.
Verify MAC Address Via FW_Env ${mac_address} ${valid_status_codes}
Verify MAC Address Via FW_Env
[Documentation] Verify MAC address on FW_Env.
[Arguments] ${mac_address} ${valid_status_codes}=[${HTTP_OK}]
# Description of argument(s):
# mac_address MAC address of BMC.
# expected_result Expected status of MAC configuration.
${status}= Run Keyword And Return Status
... Validate MAC On FW_Env ${mac_address}
Run Keyword If ${valid_status_codes} == ${HTTP_BAD_REQUEST}
... Should Be Equal ${status} ${False}
... msg=Allowing the configuration of an invalid MAC.
... ELSE
... Should Be Equal ${status} ${True}
... msg=Not allowing the configuration of a valid MAC.