test/py: IPv6 network discovery test

Test the IPv6 network discovery feature if indicated by boardenv file.

Signed-off-by: Ehsan Mohandesi <emohandesi@linux.microsoft.com>
Reviewed-by: Viacheslav Mitrofanov <v.v.mitrofanov@yadro.com>
This commit is contained in:
Ehsan Mohandesi 2023-04-21 17:08:22 -07:00 committed by Tom Rini
parent 6de98b60ba
commit eafbe16b01
4 changed files with 33 additions and 1 deletions

View file

@ -69,6 +69,7 @@ CONFIG_CMD_CDP=y
CONFIG_CMD_SNTP=y
CONFIG_CMD_DNS=y
CONFIG_CMD_LINK_LOCAL=y
CONFIG_IPV6_ROUTER_DISCOVERY=y
CONFIG_CMD_ETHSW=y
CONFIG_CMD_BMP=y
CONFIG_CMD_EFIDEBUG=y

View file

@ -101,6 +101,7 @@ CONFIG_CMD_CDP=y
CONFIG_CMD_SNTP=y
CONFIG_CMD_DNS=y
CONFIG_CMD_LINK_LOCAL=y
CONFIG_IPV6_ROUTER_DISCOVERY=y
CONFIG_CMD_ETHSW=y
CONFIG_CMD_2048=y
CONFIG_CMD_BMP=y

View file

@ -59,6 +59,7 @@ CONFIG_CMD_CDP=y
CONFIG_CMD_SNTP=y
CONFIG_CMD_DNS=y
CONFIG_CMD_LINK_LOCAL=y
CONFIG_IPV6_ROUTER_DISCOVERY=y
CONFIG_CMD_EFIDEBUG=y
CONFIG_CMD_RTC=y
CONFIG_CMD_TIME=y

View file

@ -9,7 +9,7 @@ import u_boot_utils
"""
Note: This test relies on boardenv_* containing configuration values to define
which the network environment available for testing. Without this, this test
which network environment is available for testing. Without this, this test
will be automatically skipped.
For example:
@ -60,6 +60,11 @@ env__net_nfs_readable_file = {
'size': 5058624,
'crc32': 'c2244b26',
}
# True if a router advertisement service is connected to the network, and should
# be tested. If router advertisement testing is not possible or desired, this
variable may be omitted or set to False.
env__router_on_net = True
"""
net_set_up = False
@ -151,6 +156,30 @@ def test_net_ping(u_boot_console):
output = u_boot_console.run_command('ping $serverip')
assert 'is alive' in output
@pytest.mark.buildconfigspec('IPV6_ROUTER_DISCOVERY')
def test_net_network_discovery(u_boot_console):
"""Test the network discovery feature of IPv6.
An IPv6 network command (ping6 in this case) is run to make U-Boot send a
router solicitation packet, receive a router advertisement message, and
parse it.
A router advertisement service needs to be running for this test to succeed.
U-Boot receives the RA, processes it, and if successful, assigns the gateway
IP and prefix length.
The configuration is provided by the boardenv_* file; see the comment at
the beginning of this file.
"""
router_on_net = u_boot_console.config.env.get('env__router_on_net', False)
if not router_on_net:
pytest.skip('No router on network')
fake_host_ip = 'fe80::215:5dff:fef6:2ec6'
output = u_boot_console.run_command('ping6 ' + fake_host_ip)
assert 'ROUTER SOLICITATION 1' in output
assert 'Set gatewayip6:' in output
assert '0000:0000:0000:0000:0000:0000:0000:0000' not in output
@pytest.mark.buildconfigspec('cmd_net')
def test_net_tftpboot(u_boot_console):
"""Test the tftpboot command.