[PATCH] test/py: net: Add dhcp abort test

Michal Simek michal.simek at amd.com
Mon Oct 9 16:14:45 CEST 2023



On 10/3/23 14:46, Love Kumar wrote:
> Abort the dhcp request in the middle by pressing ctrl + c on u-boot
> prompt and validate the abort status.
> 
> Signed-off-by: Love Kumar <love.kumar at amd.com>
> ---
>   test/py/tests/test_net.py | 44 +++++++++++++++++++++++++++++++++++++++
>   1 file changed, 44 insertions(+)
> 
> diff --git a/test/py/tests/test_net.py b/test/py/tests/test_net.py
> index cd4b4dc53cbc..1e8eb0357eef 100644
> --- a/test/py/tests/test_net.py
> +++ b/test/py/tests/test_net.py
> @@ -6,6 +6,7 @@
>   
>   import pytest
>   import u_boot_utils
> +import re
>   
>   """
>   Note: This test relies on boardenv_* containing configuration values to define
> @@ -104,6 +105,49 @@ def test_net_dhcp(u_boot_console):
>       global net_set_up
>       net_set_up = True
>   
> + at pytest.mark.buildconfigspec("cmd_dhcp")

Similar issue is visible here too.
There should be CMD_MII dependency.

> +def test_net_dhcp_abort(u_boot_console):
> +    """Test the dhcp command by pressing ctrl+c in the middle of dhcp request
> +
> +    The boardenv_* file may be used to enable/disable this test; see the
> +    comment at the beginning of this file.
> +    """
> +
> +    test_dhcp = u_boot_console.config.env.get("env__net_dhcp_server", False)
> +    if not test_dhcp:
> +        pytest.skip("No DHCP server available")
> +
> +    u_boot_console.run_command("setenv autoload no")
> +
> +    # Phy reset before running dhcp command
> +    output = u_boot_console.run_command("mii device")
> +    eth_num = re.search(r"Current device: '(.+?)'", output).groups()[0]
> +    u_boot_console.run_command(f"mii device {eth_num}")
> +    output = u_boot_console.run_command("mii info")
> +    eth_addr = hex(int(re.search(r"PHY (.+?):", output).groups()[0], 16))
> +    u_boot_console.run_command(f"mii modify {eth_addr} 0 0x8000 0x8000")
> +
> +    u_boot_console.run_command("dhcp", wait_for_prompt=False)
> +    try:
> +        u_boot_console.wait_for("Waiting for PHY auto negotiation to complete")
> +    except:
> +        pytest.skip("Timeout waiting for PHY auto negotiation to complete")
> +
> +    u_boot_console.wait_for("done")
> +
> +    # Sending Ctrl-C
> +    output = u_boot_console.run_command(
> +        chr(3), wait_for_echo=False, send_nl=False
> +    )
> +
> +    assert "TIMEOUT" not in output
> +    assert "DHCP client bound to address " not in output
> +    assert "Abort" in output
> +
> +    # Provide a time to recover from Abort - if it is not performed
> +    # There is message like: ethernet at ff0e0000: No link.
> +    u_boot_console.run_command("sleep 1")
> +
>   @pytest.mark.buildconfigspec('cmd_dhcp6')
>   def test_net_dhcp6(u_boot_console):
>       """Test the dhcp6 command.

qemu_arm64 test.py is showing this issue.
____________________________ test_net_dhcp_abort ______________________________
test/py/tests/test_net.py:138: in test_net_dhcp_abort
     eth_num = re.search(r"Current device: '(.+?)'", output).groups()[0]
E   AttributeError: 'NoneType' object has no attribute 'groups'

M


More information about the U-Boot mailing list