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

2023-10-09 Thread Michal Simek




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

2023-10-06 Thread Ramon Fried
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

2023-10-03 Thread Love Kumar
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