Re: [PATCH] test/py: net: Add dhcp abort test
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 --- 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 +@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@ff0e: 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
Re: [PATCH] test/py: net: Add dhcp abort test
On Tue, Oct 3, 2023 at 3:46 PM 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 > --- > 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 > > +@pytest.mark.buildconfigspec("cmd_dhcp") > +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@ff0e: 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. > -- > 2.25.1 > Reviewed-by: Ramon Fried
[PATCH] test/py: net: Add dhcp abort test
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 --- 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 +@pytest.mark.buildconfigspec("cmd_dhcp") +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@ff0e: 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. -- 2.25.1