Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/utest/lwip/lwip.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# dependencies
CONFIG_RT_CONSOLEBUF_SIZE=1024
CONFIG_RT_NAME_MAX=24
CONFIG_RT_USING_CI_ACTION=y

CONFIG_RT_LWIP_NETIF_LOOPBACK=y
CONFIG_LWIP_NETIF_LOOPBACK=1
CONFIG_RT_UTEST_TC_USING_LWIP=y
CONFIG_RT_UTEST_LWIP_DNS_TEST=y
CONFIG_RT_UTEST_LWIP_TCP_TEST=y
CONFIG_RT_UTEST_LWIP_UDP_TEST=y
CONFIG_RT_UTEST_LWIP_ICMP_TEST=y
CONFIG_RT_UTEST_LWIP_SOCKET_OPT_TEST=y
CONFIG_RT_UTEST_LWIP_ADDR_CONV_TEST=y
CONFIG_RT_UTEST_LWIP_NETIF_TEST=y
CONFIG_RT_UTEST_LWIP_TCP_PORT=1234
CONFIG_RT_UTEST_LWIP_UDP_PORT=1235
CONFIG_RT_UTEST_LWIP_TEST_URL="www.rt-thread.org"
CONFIG_RT_UTEST_LWIP_TEST_ADDR="180.163.146.111"
CONFIG_BSP_DRV_EMAC=y
3 changes: 3 additions & 0 deletions .github/workflows/utest_auto_run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ jobs:
- platform: { UTEST: "A9", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", SD_FILE: "sd.bin", KERNEL: "standard", "SMP_RUN":"" }
config_file: "cpp11/cpp11.cfg"

- platform: { UTEST: "A9", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", SD_FILE: "sd.bin", KERNEL: "standard", "SMP_RUN":"" }
config_file: "lwip/lwip.cfg"

env:
TEST_QEMU_ARCH: ${{ matrix.platform.QEMU_ARCH }}
TEST_QEMU_MACHINE: ${{ matrix.platform.QEMU_MACHINE }}
Expand Down
1 change: 1 addition & 0 deletions Kconfig.utestcases
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ rsource "src/klibc/utest/Kconfig"

rsource "components/drivers/audio/utest/Kconfig"
rsource "components/dfs/utest/Kconfig"
rsource "components/net/utest/Kconfig"

endif

Expand Down
107 changes: 107 additions & 0 deletions components/net/utest/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
if RT_USING_LWIP
menu "LwIP Network Unit Testcase"

config RT_UTEST_TC_USING_LWIP
bool "lwIP API test"
help
Enable lwIP network stack unit tests including DNS resolution,
TCP/UDP socket operations, and network interface tests

if RT_UTEST_TC_USING_LWIP

config RT_UTEST_LWIP_DNS_TEST
bool "DNS resolution test"
default y
help
Enable DNS resolution unit tests including gethostbyname()
and gethostbyname_r() functions for hostname to IP resolution,
as well as getaddrinfo() and freeaddrinfo() for address info
retrieval and release. Tests verify successful resolution
without hardcoded IP comparisons.

config RT_UTEST_LWIP_TCP_TEST
bool "TCP socket test"
default y
help
Enable TCP socket unit tests including client-server communication
with echo functionality, socket creation, binding, listening,
accepting connections, data transmission with varying buffer sizes,
socket options (TCP_NODELAY, SO_REUSEADDR, SO_REUSEPORT),
and connection management (shutdown, close).

config RT_UTEST_LWIP_UDP_TEST
bool "UDP socket test"
default y
help
Enable UDP socket unit tests including datagram transmission
and reception, client-server echo communication, socket binding
to any port, select() operations with timeout, recvfrom/sendto
functions, and timeout handling for receive operations.

config RT_UTEST_LWIP_ICMP_TEST
bool "ICMP ping test"
default y
help
Enable ICMP ping unit tests using raw sockets to send
ICMP echo requests and receive echo replies. Tests verify
basic ICMP functionality with loopback address (127.0.0.1).

config RT_UTEST_LWIP_SOCKET_OPT_TEST
bool "Socket options test"
default y
help
Enable socket options unit tests including setsockopt()
and getsockopt() functions. Tests verify setting and
retrieving socket options such as SO_REUSEADDR.

config RT_UTEST_LWIP_ADDR_CONV_TEST
bool "Address conversion test"
default y
help
Enable address conversion unit tests including inet_addr()
for converting string IP addresses to binary format and
inet_ntoa() for converting binary addresses back to strings.
Tests verify proper conversion functionality.

config RT_UTEST_LWIP_NETIF_TEST
bool "Network interface management test"
default y
help
Enable network interface management unit tests including
netif_set_up(), netif_set_down(), and netif_set_default()
functions. Tests verify interface state changes and
default interface configuration.

config RT_UTEST_LWIP_TCP_PORT
int "TCP test port"
default 1234
range 1024 65535
help
Configure the TCP port number for unit test communication.
Must be in the range 1024-65535 to avoid system ports

config RT_UTEST_LWIP_UDP_PORT
int "UDP test port"
default 1235
range 1024 65535
help
Configure the UDP port number for unit test communication.
Must be in the range 1024-65535 to avoid system ports

config RT_UTEST_LWIP_TEST_URL
string "Test domain name"
default "www.rt-thread.org"
help
Configure the domain name for DNS resolution tests.
This domain will be resolved to verify DNS functionality

config RT_UTEST_LWIP_TEST_ADDR
string "Expected IP address"
default "180.163.146.111"
help
Configure the expected IP address for DNS resolution verification.
This should match the actual IP of the test domain

endif
endmenu
endif
15 changes: 15 additions & 0 deletions components/net/utest/SConscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Import('rtconfig')
from building import *

cwd = GetCurrentDir()
src = []
CPPPATH = [cwd]

if GetDepend('RT_UTEST_TC_USING_LWIP'):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

为何不依赖于 RT_UTEST_USING_ALL_CASES

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个原因和此评论的 第二条 一样

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个原因和此评论的 第二条 一样

我不是很清楚为啥会影响 CI。不过如果按照这个缘由继续下去,看上去 RT_UTEST_USING_ALL_CASES 会失去意义。

# Add lwIP test source if enabled
src += ['tc_lwip.c']

# Define the test group with proper dependencies
group = DefineGroup('utestcases', src, depend = ['RT_USING_UTESTCASES', 'RT_USING_LWIP'], CPPPATH = CPPPATH)

Return('group')
Loading