From 2eb01fe191d5e5e3b148c311df6ae2ccaa95ced5 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Thu, 18 Aug 2016 10:21:27 +0300 Subject: [PATCH] net: tests: Enable unit tests for the new IP stack We are not just checking the test build but this time the tests are also run. Change-Id: I7b0b24c51dfc2dc58f290cca7a593be431b8077f Signed-off-by: Jukka Rissanen --- tests/net/6lo/testcase.ini | 2 - tests/net/arp/src/Makefile | 1 + tests/net/arp/src/main.c | 89 ++++++++++++++----------- tests/net/arp/testcase.ini | 4 ++ tests/net/context/testcase.ini | 4 +- tests/net/fragment/testcase.ini | 2 - tests/net/icmpv6/src/Makefile | 2 +- tests/net/icmpv6/src/main.c | 41 ++++++++++-- tests/net/icmpv6/testcase.ini | 4 ++ tests/net/ieee802154/testcase.ini | 3 +- tests/net/ip-addr/src/Makefile | 1 + tests/net/ip-addr/src/main.c | 106 +++++++++++++++++++----------- tests/net/ip-addr/testcase.ini | 4 ++ tests/net/nbuf/src/Makefile | 1 + tests/net/nbuf/src/main.c | 15 ++++- tests/net/nbuf/testcase.ini | 4 ++ tests/net/neighbor/src/Makefile | 1 + tests/net/neighbor/src/main.c | 81 +++++++++++++++-------- tests/net/neighbor/testcase.ini | 4 ++ tests/net/trickle/testcase.ini | 4 +- tests/net/udp/src/Makefile | 1 + tests/net/udp/src/main.c | 38 +++++++---- tests/net/udp/testcase.ini | 4 +- tests/net/utils/src/Makefile | 1 + tests/net/utils/src/main.c | 50 ++++++++++---- tests/net/utils/testcase.ini | 4 ++ 26 files changed, 314 insertions(+), 157 deletions(-) create mode 100644 tests/net/arp/testcase.ini create mode 100644 tests/net/icmpv6/testcase.ini create mode 100644 tests/net/ip-addr/testcase.ini create mode 100644 tests/net/nbuf/testcase.ini create mode 100644 tests/net/neighbor/testcase.ini create mode 100644 tests/net/utils/testcase.ini diff --git a/tests/net/6lo/testcase.ini b/tests/net/6lo/testcase.ini index f38f90e9f3e..7b07e40b61c 100644 --- a/tests/net/6lo/testcase.ini +++ b/tests/net/6lo/testcase.ini @@ -2,10 +2,8 @@ tags = net-6lo arch_whitelist = x86 kernel = micro -build_only = true [test_nano] tags = net-6lo arch_whitelist = x86 kernel = nano -build_only = true diff --git a/tests/net/arp/src/Makefile b/tests/net/arp/src/Makefile index 828165cf78d..f284a4d5ca3 100644 --- a/tests/net/arp/src/Makefile +++ b/tests/net/arp/src/Makefile @@ -1,2 +1,3 @@ obj-y = main.o +ccflags-y += -I${ZEPHYR_BASE}/tests/include ccflags-y += -I${ZEPHYR_BASE}/net/yaip diff --git a/tests/net/arp/src/main.c b/tests/net/arp/src/main.c index 9411788a50a..46d3214b4d6 100644 --- a/tests/net/arp/src/main.c +++ b/tests/net/arp/src/main.c @@ -19,6 +19,8 @@ #include #include +#include + #include #include #include @@ -325,7 +327,7 @@ NET_DEVICE_INIT(net_arp_test, "net_arp_test", CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &net_arp_if_api, _ETH_L2_LAYER, _ETH_L2_CTX_TYPE, 127); -void main_fiber(void) +static bool run_tests(void) { struct net_buf *buf, *buf2; struct net_buf *frag; @@ -355,13 +357,13 @@ void main_fiber(void) buf = net_nbuf_get_reserve_tx(0); if (!buf) { printk("Out of mem TX xcast\n"); - return; + return false; } frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr)); if (!frag) { printk("Out of mem DATA xcast\n"); - return; + return false; } net_buf_frag_add(buf, frag); @@ -378,7 +380,7 @@ void main_fiber(void) if (buf2 != buf) { printk("ARP broadcast buffer different\n"); - return; + return false; } eth_hdr = (struct net_eth_hdr *)net_nbuf_ll(buf); @@ -392,7 +394,7 @@ void main_fiber(void) printk("ETH addr dest invalid %s, should be %s", out, net_sprint_ll_addr((uint8_t *)net_eth_broadcast_addr(), sizeof(struct net_eth_addr))); - return; + return false; } net_ipaddr_copy(&ipv4->dst, &mcast); @@ -401,7 +403,7 @@ void main_fiber(void) if (buf2 != buf) { printk("ARP multicast buffer different\n"); - return; + return false; } if (memcmp(ð_hdr->dst.addr, &multicast_eth_addr, @@ -413,7 +415,7 @@ void main_fiber(void) printk("ETH maddr dest invalid %s, should be %s", out, net_sprint_ll_addr((uint8_t *)&multicast_eth_addr, sizeof(struct net_eth_addr))); - return; + return false; } net_nbuf_unref(buf); @@ -429,13 +431,13 @@ void main_fiber(void) buf = net_nbuf_get_reserve_tx(0); if (!buf) { printk("Out of mem TX\n"); - return; + return false; } frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr)); if (!frag) { printk("Out of mem DATA\n"); - return; + return false; } net_buf_frag_add(buf, frag); @@ -451,7 +453,7 @@ void main_fiber(void) printk("LL reserve invalid, should be %d was %d\n", sizeof(struct net_eth_hdr), net_nbuf_ll_reserve(buf)); - return; + return false; } ipv4 = (struct net_ipv4_hdr *)net_buf_add(frag, @@ -471,12 +473,12 @@ void main_fiber(void) * still room for the buf. */ printk("ARP cache should still have free space\n"); - return; + return false; } if (!buf2) { printk("ARP buf is empty\n"); - return; + return false; } /* The ARP cache should now have a link to pending net_buf @@ -484,7 +486,7 @@ void main_fiber(void) */ if (!buf->frags) { printk("Pending buf fragment is NULL\n"); - return; + return false; } pending_buf = buf; @@ -497,7 +499,7 @@ void main_fiber(void) net_hexdump("ETH dest correct", (uint8_t *)net_eth_broadcast_addr(), sizeof(struct net_eth_addr)); - return; + return false; } if (memcmp(net_nbuf_ll(buf2) + sizeof(struct net_eth_addr), @@ -510,7 +512,7 @@ void main_fiber(void) net_hexdump("ETH src wrong ", net_nbuf_ll(buf2) + sizeof(struct net_eth_addr), sizeof(struct net_eth_addr)); - return; + return false; } arp_hdr = NET_ARP_BUF(buf2); @@ -519,37 +521,37 @@ void main_fiber(void) if (eth_hdr->type != htons(NET_ETH_PTYPE_ARP)) { printk("ETH type 0x%x, should be 0x%x\n", eth_hdr->type, htons(NET_ETH_PTYPE_ARP)); - return; + return false; } if (arp_hdr->hwtype != htons(NET_ARP_HTYPE_ETH)) { printk("ARP hwtype 0x%x, should be 0x%x\n", arp_hdr->hwtype, htons(NET_ARP_HTYPE_ETH)); - return; + return false; } if (arp_hdr->protocol != htons(NET_ETH_PTYPE_IP)) { printk("ARP protocol 0x%x, should be 0x%x\n", arp_hdr->protocol, htons(NET_ETH_PTYPE_IP)); - return; + return false; } if (arp_hdr->hwlen != sizeof(struct net_eth_addr)) { printk("ARP hwlen 0x%x, should be 0x%x\n", arp_hdr->hwlen, sizeof(struct net_eth_addr)); - return; + return false; } if (arp_hdr->protolen != sizeof(struct in_addr)) { printk("ARP IP addr len 0x%x, should be 0x%x\n", arp_hdr->protolen, sizeof(struct in_addr)); - return; + return false; } if (arp_hdr->opcode != htons(NET_ARP_REQUEST)) { printk("ARP opcode 0x%x, should be 0x%x\n", arp_hdr->opcode, htons(NET_ARP_REQUEST)); - return; + return false; } if (!net_ipv4_addr_cmp(&arp_hdr->dst_ipaddr, @@ -559,7 +561,7 @@ void main_fiber(void) net_sprint_ipv4_addr(&arp_hdr->dst_ipaddr)); printk("ARP IP dest invalid %s, should be %s", out, net_sprint_ipv4_addr(&NET_IPV4_BUF(buf)->dst)); - return; + return false; } if (!net_ipv4_addr_cmp(&arp_hdr->src_ipaddr, @@ -569,7 +571,7 @@ void main_fiber(void) net_sprint_ipv4_addr(&arp_hdr->src_ipaddr)); printk("ARP IP src invalid %s, should be %s", out, net_sprint_ipv4_addr(&NET_IPV4_BUF(buf)->src)); - return; + return false; } /* We could have send the new ARP request but for this test we @@ -579,7 +581,7 @@ void main_fiber(void) if (buf->ref != 2) { printk("ARP cache should own the original buffer\n"); - return; + return false; } /* Then a case where target is not in the same subnet */ @@ -589,12 +591,12 @@ void main_fiber(void) if (buf2 == buf) { printk("ARP cache should not find anything\n"); - return; + return false; } if (!buf2) { printk("ARP buf2 is empty\n"); - return; + return false; } arp_hdr = NET_ARP_BUF(buf2); @@ -605,7 +607,7 @@ void main_fiber(void) net_sprint_ipv4_addr(&arp_hdr->dst_ipaddr)); printk("ARP IP dst invalid %s, should be %s\n", out, net_sprint_ipv4_addr(&iface->ipv4.gw)); - return; + return false; } net_nbuf_unref(buf2); @@ -623,7 +625,7 @@ void main_fiber(void) buf2 = net_arp_prepare(buf); if (!buf2) { printk("ARP cache is not sending the request again\n"); - return; + return false; } net_nbuf_unref(buf2); @@ -641,7 +643,7 @@ void main_fiber(void) buf2 = net_arp_prepare(buf); if (!buf2) { printk("ARP cache did not send a req\n"); - return; + return false; } /* Restore the original address so that following test case can @@ -655,14 +657,14 @@ void main_fiber(void) buf = net_nbuf_get_reserve_rx(0); if (!buf) { printk("Out of mem RX reply\n"); - return; + return false; } printk("%d buf %p\n", __LINE__, buf); frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr)); if (!frag) { printk("Out of mem DATA reply\n"); - return; + return false; } printk("%d frag %p\n", __LINE__, frag); @@ -680,7 +682,7 @@ void main_fiber(void) buf2 = prepare_arp_reply(iface, buf, &hwaddr); if (!buf2) { printk("ARP reply generation failed."); - return; + return false; } /* The pending packet should now be sent */ @@ -697,12 +699,12 @@ void main_fiber(void) if (send_status < 0) { printk("ARP reply was not sent\n"); - return; + return false; } if (buf->ref != 1) { printk("ARP cache should no longer own the original buffer\n"); - return; + return false; } net_nbuf_unref(buf); @@ -711,13 +713,13 @@ void main_fiber(void) buf = net_nbuf_get_reserve_rx(0); if (!buf) { printk("Out of mem RX request\n"); - return; + return false; } frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr)); if (!frag) { printk("Out of mem DATA request\n"); - return; + return false; } net_buf_frag_add(buf, frag); @@ -736,7 +738,7 @@ void main_fiber(void) buf2 = prepare_arp_request(iface, buf, &hwaddr); if (!buf2) { printk("ARP request generation failed."); - return; + return false; } req_test = true; @@ -756,12 +758,23 @@ void main_fiber(void) if (send_status < 0) { printk("ARP req was not sent\n"); - return; + return false; } net_nbuf_unref(buf); printk("Network ARP checks passed\n"); + + return true; +} + +void main_fiber(void) +{ + if (run_tests()) { + TC_END_REPORT(TC_PASS); + } else { + TC_END_REPORT(TC_FAIL); + } } #if defined(CONFIG_NANOKERNEL) diff --git a/tests/net/arp/testcase.ini b/tests/net/arp/testcase.ini new file mode 100644 index 00000000000..f98630df774 --- /dev/null +++ b/tests/net/arp/testcase.ini @@ -0,0 +1,4 @@ +[test] +tags = net-arp +arch_whitelist = x86 +platform_whitelist = qemu_x86 diff --git a/tests/net/context/testcase.ini b/tests/net/context/testcase.ini index 7bd2b2383a7..694066dade3 100644 --- a/tests/net/context/testcase.ini +++ b/tests/net/context/testcase.ini @@ -1,6 +1,4 @@ [test] tags = net-context -build_only = true arch_whitelist = x86 -# Doesn't work for ia32_pci -filter = CONFIG_SOC : "ia32" +platform_whitelist = qemu_x86 diff --git a/tests/net/fragment/testcase.ini b/tests/net/fragment/testcase.ini index f38f90e9f3e..7b07e40b61c 100644 --- a/tests/net/fragment/testcase.ini +++ b/tests/net/fragment/testcase.ini @@ -2,10 +2,8 @@ tags = net-6lo arch_whitelist = x86 kernel = micro -build_only = true [test_nano] tags = net-6lo arch_whitelist = x86 kernel = nano -build_only = true diff --git a/tests/net/icmpv6/src/Makefile b/tests/net/icmpv6/src/Makefile index 911261bc617..f284a4d5ca3 100644 --- a/tests/net/icmpv6/src/Makefile +++ b/tests/net/icmpv6/src/Makefile @@ -1,3 +1,3 @@ obj-y = main.o - +ccflags-y += -I${ZEPHYR_BASE}/tests/include ccflags-y += -I${ZEPHYR_BASE}/net/yaip diff --git a/tests/net/icmpv6/src/main.c b/tests/net/icmpv6/src/main.c index 4640d85c0ee..4c1f76d4260 100644 --- a/tests/net/icmpv6/src/main.c +++ b/tests/net/icmpv6/src/main.c @@ -21,6 +21,9 @@ #include #include #include +#include + +#include #include @@ -69,7 +72,7 @@ static struct net_icmpv6_handler test_handler2 = { .handler = handle_test_msg, }; -void main(void) +static bool run_tests(void) { struct net_buf *buf, *frag; int ret; @@ -91,33 +94,59 @@ void main(void) ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags), 0, 0); if (!ret) { printk("%d: Callback not called properly\n", __LINE__); - return; + return false; } ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags), NET_ICMPV6_ECHO_REPLY, 0); if (ret < 0 || buf_status(buf) != 0) { printk("%d: Callback not called properly\n", __LINE__); - return; + return false; } ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags), 1, 0); if (!ret) { printk("%d: Callback not called properly\n", __LINE__); - return; + return false; } ret = net_icmpv6_input(buf, net_buf_frags_len(buf->frags), NET_ICMPV6_ECHO_REQUEST, 0); if (ret < 0 || buf_status(buf) != 0) { printk("%d: Callback not called properly\n", __LINE__); - return; + return false; } if (handler_called != 2) { printk("%d: Callbacks not called properly\n", __LINE__); - return; + return false; } printk("ICMPv6 tests passed\n"); + + return true; +} + +void main_fiber(void) +{ + if (run_tests()) { + TC_END_REPORT(TC_PASS); + } else { + TC_END_REPORT(TC_FAIL); + } +} + +#if defined(CONFIG_NANOKERNEL) +#define STACKSIZE 2000 +char __noinit __stack fiberStack[STACKSIZE]; +#endif + +void main(void) +{ +#if defined(CONFIG_MICROKERNEL) + main_fiber(); +#else + task_fiber_start(&fiberStack[0], STACKSIZE, + (nano_fiber_entry_t)main_fiber, 0, 0, 7, 0); +#endif } diff --git a/tests/net/icmpv6/testcase.ini b/tests/net/icmpv6/testcase.ini new file mode 100644 index 00000000000..9eae4bc12c9 --- /dev/null +++ b/tests/net/icmpv6/testcase.ini @@ -0,0 +1,4 @@ +[test] +tags = net-icmpv6 +arch_whitelist = x86 +platform_whitelist = qemu_x86 diff --git a/tests/net/ieee802154/testcase.ini b/tests/net/ieee802154/testcase.ini index 7f2bd8943da..eaaeecc5d0e 100644 --- a/tests/net/ieee802154/testcase.ini +++ b/tests/net/ieee802154/testcase.ini @@ -1,5 +1,4 @@ [test] -tags = net +tags = net-ieee802154 arch_whitelist = x86 platform_whitelist = qemu_x86 -build_only = true diff --git a/tests/net/ip-addr/src/Makefile b/tests/net/ip-addr/src/Makefile index 828165cf78d..f284a4d5ca3 100644 --- a/tests/net/ip-addr/src/Makefile +++ b/tests/net/ip-addr/src/Makefile @@ -1,2 +1,3 @@ obj-y = main.o +ccflags-y += -I${ZEPHYR_BASE}/tests/include ccflags-y += -I${ZEPHYR_BASE}/net/yaip diff --git a/tests/net/ip-addr/src/main.c b/tests/net/ip-addr/src/main.c index e4ee33c2cb6..b089eb510bc 100644 --- a/tests/net/ip-addr/src/main.c +++ b/tests/net/ip-addr/src/main.c @@ -24,6 +24,10 @@ #include #include #include +#include + +#include + #include #include #include @@ -37,7 +41,7 @@ net_byte_to_hex(out, value, 'A', true); \ if (strcmp(out, expected)) { \ printk("Test 0x%s failed.\n", expected); \ - return; \ + return false; \ } \ } while (0) @@ -47,7 +51,7 @@ net_byte_to_hex(out, value, 'a', true); \ if (strcmp(out, expected)) { \ printk("Test 0x%s failed.\n", expected); \ - return; \ + return false; \ } \ } while (0) @@ -57,7 +61,7 @@ if (strcmp(net_sprint_ll_addr(ll, sizeof(ll)), \ expected)) { \ printk("Test %s failed.\n", expected); \ - return; \ + return false; \ } \ } while (0) @@ -67,7 +71,7 @@ if (strcmp(net_sprint_ll_addr(ll, sizeof(ll)), \ expected)) { \ printk("Test %s failed.\n", expected); \ - return; \ + return false; \ } \ } while (0) @@ -82,7 +86,7 @@ net_sprint_ll_addr(ll2, sizeof(ll2))); \ if (strcmp(out, expected)) { \ printk("Test %s failed, got %s\n", expected, out); \ - return; \ + return false; \ } \ } while (0) @@ -93,7 +97,7 @@ char *ptr = net_sprint_ipv6_addr(&addr); \ if (strcmp(ptr, expected)) { \ printk("Test %s failed, got %s\n", expected, ptr); \ - return; \ + return false; \ } \ } while (0) @@ -103,7 +107,7 @@ char *ptr = net_sprint_ipv4_addr(&addr); \ if (strcmp(ptr, expected)) { \ printk("Test %s failed, got %s\n", expected, ptr); \ - return; \ + return false; \ } \ } while (0) @@ -166,11 +170,7 @@ NET_DEVICE_INIT(net_addr_test, "net_addr_test", CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &net_test_if_api, _ETH_L2_LAYER, _ETH_L2_CTX_TYPE, 127); -#ifdef CONFIG_MICROKERNEL -void mainloop(void) -#else -void main(void) -#endif +static bool run_tests(void) { struct in6_addr loopback = IN6ADDR_LOOPBACK_INIT; struct in6_addr any = IN6ADDR_ANY_INIT; @@ -236,12 +236,12 @@ void main(void) if (!net_is_ipv6_addr_loopback(&loopback)) { printk("IPv6 loopback address check failed.\n"); - return; + return false; } if (!net_is_ipv6_addr_mcast(&mcast)) { printk("IPv6 multicast address check failed.\n"); - return; + return false; } ifaddr1 = net_if_ipv6_addr_add(net_if_get_default(), @@ -250,63 +250,63 @@ void main(void) 0); if (!ifaddr1) { printk("IPv6 interface address add failed\n"); - return; + return false; } ifaddr2 = net_if_ipv6_addr_lookup(&addr6, NULL); if (ifaddr1 != ifaddr2) { printk("IPv6 interface address mismatch\n"); - return; + return false; } if (net_is_my_ipv6_addr(&loopback)) { printk("My IPv6 loopback address check failed\n"); - return; + return false; } if (!net_is_my_ipv6_addr(&addr6)) { printk("My IPv6 address check failed\n"); - return; + return false; } if (!net_is_ipv6_prefix((uint8_t *)&addr6_pref1, (uint8_t *)&addr6_pref2, 64)) { printk("Same IPv6 prefix test failed\n"); - return; + return false; } if (net_is_ipv6_prefix((uint8_t *)&addr6_pref1, (uint8_t *)&addr6_pref3, 64)) { printk("Different IPv6 prefix test failed\n"); - return; + return false; } if (net_is_ipv6_prefix((uint8_t *)&addr6_pref1, (uint8_t *)&addr6_pref2, 128)) { printk("Different full IPv6 prefix test failed\n"); - return; + return false; } if (net_is_ipv6_prefix((uint8_t *)&addr6_pref1, (uint8_t *)&addr6_pref3, 255)) { printk("Too long prefix test failed\n"); - return; + return false; } ifmaddr1 = net_if_ipv6_maddr_add(net_if_get_default(), &mcast); if (!ifmaddr1) { printk("IPv6 multicast address add failed\n"); - return; + return false; } ifmaddr1 = net_if_ipv6_maddr_add(net_if_get_default(), &addr6); if (ifmaddr1) { printk("IPv6 multicast address could be added failed\n"); - return; + return false; } ifaddr1 = net_if_ipv4_addr_add(net_if_get_default(), @@ -315,22 +315,22 @@ void main(void) 0); if (!ifaddr1) { printk("IPv4 interface address add failed\n"); - return; + return false; } if (!net_is_my_ipv4_addr(&addr4)) { printk("My IPv4 address check failed\n"); - return; + return false; } if (net_is_my_ipv4_addr(&loopback4)) { printk("My IPv4 loopback address check failed\n"); - return; + return false; } if (memcmp(net_if_ipv6_unspecified_addr(), &any, sizeof(any))) { printk("My IPv6 unspecified address check failed\n"); - return; + return false; } ifaddr2 = net_if_ipv6_addr_add(net_if_get_default(), @@ -339,14 +339,14 @@ void main(void) 0); if (!ifaddr2) { printk("IPv6 ll address autoconf add failed\n"); - return; + return false; } ifaddr2->addr_state = NET_ADDR_PREFERRED; tmp = net_if_ipv6_get_ll(net_if_get_default(), NET_ADDR_PREFERRED); if (memcmp(tmp, &addr6.s6_addr, sizeof(struct in6_addr))) { printk("IPv6 ll address fetch failed\n"); - return; + return false; } ifaddr2->addr_state = NET_ADDR_DEPRECATED; @@ -354,7 +354,7 @@ void main(void) tmp = net_if_ipv6_get_ll(net_if_get_default(), NET_ADDR_PREFERRED); if (tmp || !memcmp(tmp, &any, sizeof(struct in6_addr))) { printk("IPv6 preferred ll address fetch failed\n"); - return; + return false; } ifaddr1 = net_if_ipv6_addr_add(net_if_get_default(), @@ -363,7 +363,7 @@ void main(void) 0); if (!ifaddr1) { printk("IPv6 global address autoconf add failed\n"); - return; + return false; } ifaddr1->addr_state = NET_ADDR_PREFERRED; @@ -375,7 +375,7 @@ void main(void) if (!out) { printk("IPv6 src addr selection failed, iface %p\n", iface); - return; + return false; } printk("Selected IPv6 address %s, iface %p\n", net_sprint_ipv6_addr(out), iface); @@ -384,7 +384,7 @@ void main(void) sizeof(struct in6_addr))) { printk("IPv6 wrong src address selected, iface %p\n", iface); - return; + return false; } /* Now we should get :: address */ @@ -392,7 +392,7 @@ void main(void) if (!out) { printk("IPv6 src any addr selection failed, " "iface %p\n", iface); - return; + return false; } printk("Selected IPv6 address %s, iface %p\n", net_sprint_ipv6_addr(out), iface); @@ -401,7 +401,7 @@ void main(void) sizeof(struct in6_addr))) { printk("IPv6 wrong src any address selected, " "iface %p\n", iface); - return; + return false; } ifaddr2->addr_state = NET_ADDR_PREFERRED; @@ -411,7 +411,7 @@ void main(void) if (!out) { printk("IPv6 src ll addr selection failed, iface %p\n", iface); - return; + return false; } printk("Selected IPv6 address %s, iface %p\n", net_sprint_ipv6_addr(out), iface); @@ -420,7 +420,7 @@ void main(void) sizeof(struct in6_addr))) { printk("IPv6 wrong src ll address selected, " "iface %p\n", iface); - return; + return false; } } @@ -431,13 +431,39 @@ void main(void) if (net_ipv4_addr_mask_cmp(iface, &fail_addr)) { printk("IPv4 wrong match failed\n"); - return; + return false; } if (!net_ipv4_addr_mask_cmp(iface, &match_addr)) { printk("IPv4 match failed\n"); - return; + return false; } printk("IP address checks passed\n"); + + return true; +} + +void main_fiber(void) +{ + if (run_tests()) { + TC_END_REPORT(TC_PASS); + } else { + TC_END_REPORT(TC_FAIL); + } +} + +#if defined(CONFIG_NANOKERNEL) +#define STACKSIZE 2000 +char __noinit __stack fiberStack[STACKSIZE]; +#endif + +void main(void) +{ +#if defined(CONFIG_MICROKERNEL) + main_fiber(); +#else + task_fiber_start(&fiberStack[0], STACKSIZE, + (nano_fiber_entry_t)main_fiber, 0, 0, 7, 0); +#endif } diff --git a/tests/net/ip-addr/testcase.ini b/tests/net/ip-addr/testcase.ini new file mode 100644 index 00000000000..63e487c40bf --- /dev/null +++ b/tests/net/ip-addr/testcase.ini @@ -0,0 +1,4 @@ +[test] +tags = net-ip-addr +arch_whitelist = x86 +platform_whitelist = qemu_x86 diff --git a/tests/net/nbuf/src/Makefile b/tests/net/nbuf/src/Makefile index 00066e15678..342d2bc319d 100644 --- a/tests/net/nbuf/src/Makefile +++ b/tests/net/nbuf/src/Makefile @@ -1 +1,2 @@ obj-y = main.o +ccflags-y += -I${ZEPHYR_BASE}/tests/include diff --git a/tests/net/nbuf/src/main.c b/tests/net/nbuf/src/main.c index 27192b895c7..d5efb73601f 100644 --- a/tests/net/nbuf/src/main.c +++ b/tests/net/nbuf/src/main.c @@ -23,6 +23,8 @@ #include #include +#include + #include #include @@ -470,16 +472,23 @@ void main(void) #endif { if (test_ipv6_multi_frags() < 0) { - return; + goto fail; } if (test_fragment_copy() < 0) { - return; + goto fail; } if (test_fragment_push() < 0) { - return; + goto fail; } printk("nbuf tests passed\n"); + + TC_END_REPORT(TC_PASS); + return; + +fail: + TC_END_REPORT(TC_FAIL); + return; } diff --git a/tests/net/nbuf/testcase.ini b/tests/net/nbuf/testcase.ini new file mode 100644 index 00000000000..986c0037d2f --- /dev/null +++ b/tests/net/nbuf/testcase.ini @@ -0,0 +1,4 @@ +[test] +tags = net-nbuf +arch_whitelist = x86 +platform_whitelist = qemu_x86 diff --git a/tests/net/neighbor/src/Makefile b/tests/net/neighbor/src/Makefile index 828165cf78d..f284a4d5ca3 100644 --- a/tests/net/neighbor/src/Makefile +++ b/tests/net/neighbor/src/Makefile @@ -1,2 +1,3 @@ obj-y = main.o +ccflags-y += -I${ZEPHYR_BASE}/tests/include ccflags-y += -I${ZEPHYR_BASE}/net/yaip diff --git a/tests/net/neighbor/src/main.c b/tests/net/neighbor/src/main.c index e7310a19b03..b82f3bb7dfe 100644 --- a/tests/net/neighbor/src/main.c +++ b/tests/net/neighbor/src/main.c @@ -28,6 +28,9 @@ #include #include #include +#include + +#include #include "nbr.h" @@ -65,11 +68,7 @@ static struct net_eth_addr hwaddr3 = { { 0xee, 0xe1, 0x55, 0xfe, 0x44, 0x03 } }; static struct net_eth_addr hwaddr4 = { { 0x61, 0xf2, 0xfe, 0x4e, 0x8e, 0x04 } }; static struct net_eth_addr hwaddr5 = { { 0x8a, 0x52, 0x01, 0x21, 0x11, 0x05 } }; -#ifdef CONFIG_MICROKERNEL -void mainloop(void) -#else -void main(void) -#endif +static bool run_tests(void) { struct net_eth_addr *addrs[] = { &hwaddr1, @@ -92,7 +91,7 @@ void main(void) if (CONFIG_NET_IPV6_MAX_NEIGHBORS != (ARRAY_SIZE(addrs) - 2)) { printk("There should be exactly %d valid entries " "in addrs array\n", CONFIG_NET_IPV6_MAX_NEIGHBORS + 1); - return; + return false; } /* First adding a neighbor and trying to add multiple hw addresses @@ -102,12 +101,12 @@ void main(void) if (!nbr) { printk("Cannot get neighbor from table %p\n", &net_test_neighbor.table); - return; + return false; } if (nbr->ref != 1) { printk("Invalid ref count %d\n", nbr->ref); - return; + return false; } lladdr.len = sizeof(struct net_eth_addr); @@ -124,7 +123,7 @@ void main(void) printk("Cannot add %s to nbr cache (%d)\n", net_sprint_ll_addr(lladdr.addr, lladdr.len), ret); - return; + return false; } else if (!ret) { printk("Adding %s\n", net_sprint_ll_addr(eth_addr->addr, @@ -136,7 +135,7 @@ void main(void) nbr = net_nbr_lookup(&net_test_neighbor.table, iface1, &lladdr); if (nbr->idx != 0) { printk("Wrong index %d should be %d\n", nbr->idx, 0); - return; + return false; } for (i = 0; i < 2; i++) { @@ -149,7 +148,7 @@ void main(void) printk("Cannot del %s from nbr cache (%d)\n", net_sprint_ll_addr(lladdr.addr, lladdr.len), ret); - return; + return false; } else if (!ret) { printk("Deleting %s\n", net_sprint_ll_addr(eth_addr->addr, @@ -160,7 +159,7 @@ void main(void) net_nbr_unref(nbr); if (nbr->ref != 0) { printk("nbr still referenced, ref %d\n", nbr->ref); - return; + return false; } /* Then adding multiple neighbors. @@ -176,12 +175,12 @@ void main(void) } printk("[%d] Cannot get neighbor from table %p\n", i, &net_test_neighbor.table); - return; + return false; } if (nbr->ref != 1) { printk("[%d] Invalid ref count %d\n", i, nbr->ref); - return; + return false; } nbrs[i] = nbr; @@ -194,7 +193,7 @@ void main(void) printk("Cannot add %s to nbr cache (%d)\n", net_sprint_ll_addr(lladdr.addr, lladdr.len), ret); - return; + return false; } else { printk("Adding %s\n", net_sprint_ll_addr(eth_addr->addr, @@ -207,7 +206,7 @@ void main(void) nbr = net_nbr_lookup(&net_test_neighbor.table, iface1, &lladdr); if (nbr->idx != i) { printk("Wrong index %d should be %d\n", nbr->idx, i); - return; + return false; } } @@ -225,7 +224,7 @@ void main(void) printk("Cannot del %s from nbr cache (%d)\n", net_sprint_ll_addr(lladdr.addr, lladdr.len), ret); - return; + return false; } else { printk("Deleting %s\n", net_sprint_ll_addr(eth_addr->addr, @@ -235,7 +234,7 @@ void main(void) net_nbr_unref(nbr); if (nbr->ref != 0) { printk("nbr still referenced, ref %d\n", nbr->ref); - return; + return false; } } @@ -254,12 +253,12 @@ void main(void) } printk("[%d] Cannot get neighbor from table %p\n", i, &net_test_neighbor.table); - return; + return false; } if (nbr->ref != 1) { printk("[%d] Invalid ref count %d\n", i, nbr->ref); - return; + return false; } nbrs[i] = nbr; @@ -276,7 +275,7 @@ void main(void) printk("Cannot add %s to nbr cache (%d)\n", net_sprint_ll_addr(lladdr.addr, lladdr.len), ret); - return; + return false; } else { printk("Adding %s iface %p\n", net_sprint_ll_addr(eth_addr->addr, @@ -297,7 +296,7 @@ void main(void) } if (nbr->idx != i) { printk("Wrong index %d should be %d\n", nbr->idx, i); - return; + return false; } lladdr_ptr = net_nbr_get_lladdr(i); @@ -306,7 +305,7 @@ void main(void) printk("Wrong lladdr %s in index %d\n", net_sprint_ll_addr(lladdr_ptr->addr, lladdr_ptr->len)); - return; + return false; } } @@ -328,7 +327,7 @@ void main(void) printk("Cannot del %s from nbr cache (%d)\n", net_sprint_ll_addr(lladdr.addr, lladdr.len), ret); - return; + return false; } else { printk("Deleting %s iface %p\n", net_sprint_ll_addr(eth_addr->addr, @@ -339,21 +338,21 @@ void main(void) net_nbr_unref(nbr); if (nbr->ref != 0) { printk("nbr still referenced, ref %d\n", nbr->ref); - return; + return false; } } if (add_count != remove_count) { printk("Remove count %d does not match add count %d\n", remove_count, add_count); - return; + return false; } net_nbr_clear_table(&net_test_neighbor.table); if (!clear_called) { printk("Table clear check failed\n"); - return; + return false; } /* The table should be empty now */ @@ -362,8 +361,34 @@ void main(void) &lladdr); if (nbr) { printk("Some entries still found in nbr cache\n"); - return; + return false; } printk("Neighbor cache checks passed\n"); + return true; +} + + +void main_fiber(void) +{ + if (run_tests()) { + TC_END_REPORT(TC_PASS); + } else { + TC_END_REPORT(TC_FAIL); + } +} + +#if defined(CONFIG_NANOKERNEL) +#define STACKSIZE 2000 +char __noinit __stack fiberStack[STACKSIZE]; +#endif + +void main(void) +{ +#if defined(CONFIG_MICROKERNEL) + main_fiber(); +#else + task_fiber_start(&fiberStack[0], STACKSIZE, + (nano_fiber_entry_t)main_fiber, 0, 0, 7, 0); +#endif } diff --git a/tests/net/neighbor/testcase.ini b/tests/net/neighbor/testcase.ini new file mode 100644 index 00000000000..87052ebd65d --- /dev/null +++ b/tests/net/neighbor/testcase.ini @@ -0,0 +1,4 @@ +[test] +tags = net-neighbor +arch_whitelist = x86 +platform_whitelist = qemu_x86 diff --git a/tests/net/trickle/testcase.ini b/tests/net/trickle/testcase.ini index 01bcacaa493..e5a8e9da307 100644 --- a/tests/net/trickle/testcase.ini +++ b/tests/net/trickle/testcase.ini @@ -1,6 +1,4 @@ [test] tags = net-trickle -build_only = true arch_whitelist = x86 -# Doesn't work for ia32_pci -filter = CONFIG_SOC : "ia32" +platform_whitelist = qemu_x86 diff --git a/tests/net/udp/src/Makefile b/tests/net/udp/src/Makefile index 828165cf78d..f284a4d5ca3 100644 --- a/tests/net/udp/src/Makefile +++ b/tests/net/udp/src/Makefile @@ -1,2 +1,3 @@ obj-y = main.o +ccflags-y += -I${ZEPHYR_BASE}/tests/include ccflags-y += -I${ZEPHYR_BASE}/net/yaip diff --git a/tests/net/udp/src/main.c b/tests/net/udp/src/main.c index 4421c520adf..925000a1335 100644 --- a/tests/net/udp/src/main.c +++ b/tests/net/udp/src/main.c @@ -33,6 +33,8 @@ #include #include +#include + #if defined(CONFIG_NETWORK_IP_STACK_DEBUG_UDP) #define DBG(fmt, ...) printk(fmt, ##__VA_ARGS__) #else @@ -359,7 +361,7 @@ static void set_port(sa_family_t family, struct sockaddr *raddr, } } -void main_fiber(void) +static bool run_tests(void) { void *handlers[CONFIG_NET_MAX_CONN]; struct net_if *iface = net_if_get_default();; @@ -412,14 +414,14 @@ void main_fiber(void) if (!ifaddr) { printk("Cannot add %s to interface %p\n", net_sprint_ipv6_addr(&in6addr_my)); - return; + return false; } ifaddr = net_if_ipv4_addr_add(iface, &in4addr_my, NET_ADDR_MANUAL, 0); if (!ifaddr) { printk("Cannot add %s to interface %p\n", net_sprint_ipv4_addr(&in4addr_my)); - return; + return false; } #define REGISTER(family, raddr, laddr, rport, lport) \ @@ -443,7 +445,7 @@ void main_fiber(void) if (ret) { \ printk("UDP register %s failed (%d)\n", \ user_data.test, ret); \ - return; \ + return false; \ } \ user_data.handle = handlers[i++]; \ &user_data; \ @@ -457,7 +459,7 @@ void main_fiber(void) if (!ret) { \ printk("UDP register invalid match %s failed\n", \ #raddr"-"#laddr"-"#rport"-"#lport); \ - return; \ + return false; \ } #define UNREGISTER(ud) \ @@ -465,7 +467,7 @@ void main_fiber(void) if (ret) { \ printk("UDP unregister %p failed (%d)\n", ud->handle, \ ret); \ - return; \ + return false; \ } #define TEST_IPV6_OK(ud, raddr, laddr, rport, lport) \ @@ -474,7 +476,7 @@ void main_fiber(void) if (!st) { \ printk("%d: UDP test \"%s\" fail\n", __LINE__, \ ud->test); \ - return; \ + return false; \ } #define TEST_IPV4_OK(ud, raddr, laddr, rport, lport) \ @@ -483,7 +485,7 @@ void main_fiber(void) if (!st) { \ printk("%d: UDP test \"%s\" fail\n", __LINE__, \ ud->test); \ - return; \ + return false; \ } #define TEST_IPV6_FAIL(ud, raddr, laddr, rport, lport) \ @@ -492,7 +494,7 @@ void main_fiber(void) if (st) { \ printk("%d: UDP neg test \"%s\" fail\n", __LINE__, \ ud->test); \ - return; \ + return false; \ } #define TEST_IPV4_FAIL(ud, raddr, laddr, rport, lport) \ @@ -501,7 +503,7 @@ void main_fiber(void) if (st) { \ printk("%d: UDP neg test \"%s\" fail\n", __LINE__, \ ud->test); \ - return; \ + return false; \ } ud = REGISTER(AF_INET6, &any_addr6, &any_addr6, 1234, 4242); @@ -566,7 +568,7 @@ void main_fiber(void) if (fail) { printk("Tests failed\n"); - return; + return false; } i--; @@ -574,7 +576,7 @@ void main_fiber(void) ret = net_udp_unregister(handlers[i]); if (ret < 0 && ret != -ENOENT) { printk("Cannot unregister udp %d\n", i); - return; + return false; } i--; @@ -582,10 +584,20 @@ void main_fiber(void) if (!(net_udp_unregister(NULL) < 0)) { printk("Unregister udp failed\n"); - return; + return false; } printk("Network UDP checks passed\n"); + return true; +} + +void main_fiber(void) +{ + if (run_tests()) { + TC_END_REPORT(TC_PASS); + } else { + TC_END_REPORT(TC_FAIL); + } } #if defined(CONFIG_NANOKERNEL) diff --git a/tests/net/udp/testcase.ini b/tests/net/udp/testcase.ini index 04148cf38aa..0101d378b56 100644 --- a/tests/net/udp/testcase.ini +++ b/tests/net/udp/testcase.ini @@ -1,6 +1,4 @@ [test] tags = net-udp -build_only = true arch_whitelist = x86 -# Doesn't work for ia32_pci -filter = CONFIG_SOC : "ia32" +platform_whitelist = qemu_x86 diff --git a/tests/net/utils/src/Makefile b/tests/net/utils/src/Makefile index 828165cf78d..f284a4d5ca3 100644 --- a/tests/net/utils/src/Makefile +++ b/tests/net/utils/src/Makefile @@ -1,2 +1,3 @@ obj-y = main.o +ccflags-y += -I${ZEPHYR_BASE}/tests/include ccflags-y += -I${ZEPHYR_BASE}/net/yaip diff --git a/tests/net/utils/src/main.c b/tests/net/utils/src/main.c index d0089ff3910..12ea230d239 100644 --- a/tests/net/utils/src/main.c +++ b/tests/net/utils/src/main.c @@ -28,6 +28,9 @@ #include #include #include +#include + +#include #define NET_DEBUG 1 #include "net_private.h" @@ -154,11 +157,7 @@ static const unsigned char pkt5[98] = { 0x36, 0x37 /* 67 */ }; -#ifdef CONFIG_MICROKERNEL -void mainloop(void) -#else -void main(void) -#endif +static bool run_tests(void) { struct net_buf *frag, *buf; uint16_t chksum, orig_chksum; @@ -173,7 +172,7 @@ void main(void) if (frag->len != sizeof(pkt1)) { printk("Fragment len %d invalid, should be %d\n", frag->len, sizeof(pkt1)); - return; + return false; } net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); @@ -190,7 +189,7 @@ void main(void) if (chksum != orig_chksum) { printk("Invalid chksum 0x%x in pkt1, should be 0x%x\n", chksum, orig_chksum); - return; + return false; } net_nbuf_unref(buf); @@ -218,7 +217,7 @@ void main(void) if (chksum != orig_chksum) { printk("Invalid chksum 0x%x in pkt2, should be 0x%x\n", chksum, orig_chksum); - return; + return false; } net_nbuf_unref(buf); @@ -249,7 +248,7 @@ void main(void) if (chksum != orig_chksum) { printk("Invalid chksum 0x%x in pkt3, should be 0x%x\n", chksum, orig_chksum); - return; + return false; } net_nbuf_unref(buf); @@ -306,14 +305,14 @@ void main(void) "pkt3 size %d frags size %d calc total %d\n", sizeof(pkt3), net_buf_frags_len(buf->frags), total + sizeof(struct net_ipv6_hdr)); - return; + return false; } chksum = ntohs(~net_calc_chksum(buf, IPPROTO_ICMPV6)); if (chksum != orig_chksum) { printk("Invalid chksum 0x%x in pkt3, should be 0x%x\n", chksum, orig_chksum); - return; + return false; } net_nbuf_unref(buf); @@ -341,7 +340,7 @@ void main(void) if (chksum != orig_chksum) { printk("Invalid chksum 0x%x in pkt4, should be 0x%x\n", chksum, orig_chksum); - return; + return false; } net_nbuf_unref(buf); @@ -369,9 +368,34 @@ void main(void) if (chksum != orig_chksum) { printk("Invalid chksum 0x%x in pkt5, should be 0x%x\n", chksum, orig_chksum); - return; + return false; } net_nbuf_unref(buf); printk("Network utils checks passed\n"); + return true; +} + +void main_fiber(void) +{ + if (run_tests()) { + TC_END_REPORT(TC_PASS); + } else { + TC_END_REPORT(TC_FAIL); + } +} + +#if defined(CONFIG_NANOKERNEL) +#define STACKSIZE 2000 +char __noinit __stack fiberStack[STACKSIZE]; +#endif + +void main(void) +{ +#if defined(CONFIG_MICROKERNEL) + main_fiber(); +#else + task_fiber_start(&fiberStack[0], STACKSIZE, + (nano_fiber_entry_t)main_fiber, 0, 0, 7, 0); +#endif } diff --git a/tests/net/utils/testcase.ini b/tests/net/utils/testcase.ini new file mode 100644 index 00000000000..4ba885d337f --- /dev/null +++ b/tests/net/utils/testcase.ini @@ -0,0 +1,4 @@ +[test] +tags = net-utils +arch_whitelist = x86 +platform_whitelist = qemu_x86