Re: [PATCH v4 2/3] test/py: IPv6 network discovery test

Vyacheslav V. Mitrofanov
2023-04-24T07:59:22Z

On Fri, 2023-04-21 at 17:08 -0700, emohandesi@linux.microsoft.com
wrote:
> «Внимание! Данное письмо от внешнего адресата!»
>
> From: Ehsan Mohandesi <emohandesi@linux.microsoft.com>
>
> Test the IPv6 network discovery feature if indicated by boardenv
> file.
>
> Signed-off-by: Ehsan Mohandesi <emohandesi@linux.microsoft.com>
> ---
> configs/sandbox64_defconfig | 2 ++
> configs/sandbox_defconfig | 2 ++
> configs/sandbox_flattree_defconfig | 2 ++
> test/py/tests/test_net.py | 31
> ++++++++++++++++++++++++++++++-
> 4 files changed, 36 insertions(+), 1 deletion(-)
>
> diff --git a/configs/sandbox64_defconfig
> b/configs/sandbox64_defconfig
> index af2c56a..be36ede 100644
> --- a/configs/sandbox64_defconfig
> +++ b/configs/sandbox64_defconfig
> @@ -260,3 +260,5 @@ CONFIG_FWU_MULTI_BANK_UPDATE=y
> CONFIG_UNIT_TEST=y
> CONFIG_UT_TIME=y
> CONFIG_UT_DM=y
> +CONFIG_IPV6=y
> +CONFIG_IPV6_ROUTER_DISCOVERY=y
> diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
> index ca95b2c..0673c69 100644
> --- a/configs/sandbox_defconfig
> +++ b/configs/sandbox_defconfig
> @@ -341,3 +341,5 @@ CONFIG_UNIT_TEST=y
> CONFIG_UT_TIME=y
> CONFIG_UT_DM=y
> CONFIG_CMD_2048=y
> +CONFIG_IPV6=y
> +CONFIG_IPV6_ROUTER_DISCOVERY=y
> diff --git a/configs/sandbox_flattree_defconfig
> b/configs/sandbox_flattree_defconfig
> index e9fcc5b..d6c8dd2 100644
> --- a/configs/sandbox_flattree_defconfig
> +++ b/configs/sandbox_flattree_defconfig
> @@ -229,3 +229,5 @@ CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y
> CONFIG_UNIT_TEST=y
> CONFIG_UT_TIME=y
> CONFIG_UT_DM=y
> +CONFIG_IPV6=y
> +CONFIG_IPV6_ROUTER_DISCOVERY=y
> diff --git a/test/py/tests/test_net.py b/test/py/tests/test_net.py
> index 9ca6743..f85071d 100644
> --- a/test/py/tests/test_net.py
> +++ b/test/py/tests/test_net.py
> @@ -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:
> @@ -55,6 +55,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
> @@ -126,6 +131,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.
> --
> 1.8.3.1
>
>

Reviewed-by: Viacheslav Mitrofanov <v.v.mitrofanov@yadro.com>