blob: 60af824ecb661b7e5c107a6589d47c8c91ac6d0f [file] [log] [blame]
*** Settings ***
Documentation Network interface IPv6 configuration connected to DHCP server
... and verification tests.
Resource ../../lib/bmc_redfish_resource.robot
Resource ../../lib/openbmc_ffdc.robot
Resource ../../lib/bmc_ipv6_utils.robot
Resource ../../lib/bmc_network_utils.robot
Library Collections
Library Process
Library OperatingSystem
Test Teardown Test Teardown Execution
Suite Setup Suite Setup Execution
Suite Teardown Redfish.Logout
Test Tags BMC_IPv6_Config
*** Variables ***
# Remote DHCP test bed server. Leave variables EMPTY if server is configured local
# to the test where it is running else if remote pass the server credentials
# -v SERVER_IPv6:xx.xx.xx.xx
# -v SERVER_USERNAME:root
# -v SERVER_PASSWORD:*********
${SERVER_USERNAME} ${EMPTY}
${SERVER_PASSWORD} ${EMPTY}
${SERVER_IPv6} ${EMPTY}
*** Test Cases ***
Get SLAAC Address And Verify Connectivity
[Documentation] Fetch the SLAAC address and verify ping and SSH connection.
[Tags] Get_SLAAC_Address_And_Verify_Connectivity
@{ipv6_addressorigin_list} ${ipv6_slaac_addr}=
... Get Address Origin List And Address For Type SLAAC
IF '${SERVER_USERNAME}' != '${EMPTY}'
Check IPv6 Connectivity ${ipv6_slaac_addr}
ELSE
Wait For IPv6 Host To Ping ${ipv6_slaac_addr}
END
Verify SSH Connection Via IPv6 ${ipv6_slaac_addr}
*** Keywords ***
Suite Setup Execution
[Documentation] Do suite setup execution.
Redfish.Login
${active_channel_config}= Get Active Channel Config
Set Suite Variable ${active_channel_config}
${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
Set Suite variable ${ethernet_interface}
Test Teardown Execution
[Documentation] Test teardown execution.
FFDC On Test Case Fail
Wait For IPv6 Host To Ping
[Documentation] Verify that the IPv6 host responds successfully to ping.
[Arguments] ${host} ${timeout}=${OPENBMC_REBOOT_TIMEOUT}sec
... ${interval}=5 sec ${expected_rc}=${0}
# Description of argument(s):
# host The IPv6 address of the host to ping.
# timeout Maximum time to wait for the host to respond to ping.
# interval Time to wait between ping attempts.
# expected_rc Expected return code of ping command.
Wait Until Keyword Succeeds ${timeout} ${interval} Ping Host Over IPv6 ${host} ${expected_rc}
Ping Host Over IPv6
[Documentation] Ping6 the given host.
[Arguments] ${host} ${expected_rc}=${0}
# Description of argument(s):
# host IPv6 address of the host to ping.
# expected_rc Expected return code of ping command.
Should Not Be Empty ${host} msg=No host provided.
${rc} ${output}= Run and return RC and Output ping6 -c 4 ${host}
Log RC: ${rc}\nOutput:\n${output}
Should Be Equal ${rc} ${expected_rc}
Check IPv6 Connectivity
[Documentation] Check ping6 status and verify.
[Arguments] ${OPENBMC_HOST_IPv6}
# Description of argument(s):
# OPENBMC_HOST_IPv6 IPv6 address to check connectivity.
Open Connection And Log In ${SERVER_USERNAME} ${SERVER_PASSWORD} host=${SERVER_IPv6}
Wait For IPv6 Host To Ping ${OPENBMC_HOST_IPv6} 30 secs
Verify SSH Connection Via IPv6
[Documentation] Verify connectivity to the IPv6 host via SSH.
[Arguments] ${OPENBMC_HOST_IPv6}
# Description of argument(s):
# OPENBMC_HOST_IPv6 IPv6 address to check connectivity.
IF '${SERVER_USERNAME}' == '${EMPTY}'
SSHLibrary.Open Connection ${OPENBMC_HOST_IPv6}
SSHLibrary.Login ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
ELSE
Open Connection And Log In ${SERVER_USERNAME} ${SERVER_PASSWORD} host=${SERVER_IPv6} alias=IPv6Conn
SSHLibrary.Open Connection ${OPENBMC_HOST_IPv6}
SSHLibrary.Login ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} jumphost_index_or_alias=IPv6Conn
END