blob: 18f6ef37bcd694917423cc91102e8382ffeba5bb [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
*** 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
*** 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} valid
# Verify whether new MAC is configured on BMC.
Validate MAC On BMC ${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} error
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} error
*** Keywords ***
Test Teardown Execution
[Documentation] Do the post test teardown.
FFDC On Test Case Fail
Redfish.Logout
Suite Setup Execution
[Documentation] Do suite setup tasks.
Redfish.Login
# Get BMC MAC address.
${resp}= redfish.Get ${REDFISH_NW_ETH0_URI}
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} ${expected_result}
# Description of argument(s):
# mac_address MAC address of BMC.
# expected_result Expected status of MAC configuration.
Redfish.Login
${payload}= Create Dictionary MACAddress=${mac_address}
Redfish.Patch ${REDFISH_NW_ETH0_URI} body=&{payload}
... valid_status_codes=[200, 400]
# After any modification on network interface, BMC restarts network
# module, wait until it is reachable.
Wait For Host To Ping ${OPENBMC_HOST}
... ${NETWORK_TIMEOUT} ${NETWORK_RETRY_TIME}
# 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 '${expected_result}' == 'error'
... 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.