tried to fix sockets unit tests; fix configuration to run with any NO_SYS setting and with/without IPv6 (IPv4 is required)

This commit is contained in:
goldsimon 2017-03-17 09:05:36 +01:00
parent a42d1678eb
commit b0444a63b0
4 changed files with 41 additions and 17 deletions

View File

@ -7,15 +7,10 @@
/* Setups/teardown functions */ /* Setups/teardown functions */
static int tcpip_init_called;
static void static void
sockets_setup(void) sockets_setup(void)
{ {
if (!tcpip_init_called) {
tcpip_init_called = 1;
tcpip_init(NULL, NULL);
}
} }
static void static void
@ -27,6 +22,7 @@ sockets_teardown(void)
#define NUM_SOCKETS MEMP_NUM_NETCONN #define NUM_SOCKETS MEMP_NUM_NETCONN
#endif #endif
#if LWIP_SOCKET
static int static int
test_sockets_alloc_socket_nonblocking(int domain, int type) test_sockets_alloc_socket_nonblocking(int domain, int type)
{ {
@ -95,10 +91,14 @@ static void test_sockets_allfunctions_basic_domain(int domain)
if (domain == AF_INET) { if (domain == AF_INET) {
#if LWIP_IPV4 #if LWIP_IPV4
struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr; struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr;
addr4->sin_addr.s_addr = inet_addr("127.0.0.1"); addr4->sin_addr.s_addr = PP_HTONL(INADDR_LOOPBACK);
#endif #endif
} else { } else {
#if LWIP_IPV6 #if LWIP_IPV6
struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&addr;
struct in6_addr lo6 = IN6ADDR_LOOPBACK_INIT;
addr6->sin6_addr = lo6;
//addr6->sin6_family = AF_INET6; /* TODO: fixme! */
#endif #endif
} }
ret = lwip_connect(s2, (struct sockaddr*)&addr, addrlen); ret = lwip_connect(s2, (struct sockaddr*)&addr, addrlen);
@ -208,6 +208,9 @@ static void test_sockets_sendmsg_udp(int domain)
} }
break; break;
#endif /* LWIP_IPV4 */ #endif /* LWIP_IPV4 */
default:
fail();
break;
} }
s = test_sockets_alloc_socket_nonblocking(domain, SOCK_DGRAM); s = test_sockets_alloc_socket_nonblocking(domain, SOCK_DGRAM);
@ -230,6 +233,9 @@ static void test_sockets_sendmsg_udp(int domain)
fail_unless(addr_size == sizeof(struct sockaddr_in)); fail_unless(addr_size == sizeof(struct sockaddr_in));
break; break;
#endif /* LWIP_IPV6 */ #endif /* LWIP_IPV6 */
default:
fail();
break;
} }
msg.msg_iov = iovs; msg.msg_iov = iovs;
@ -280,3 +286,12 @@ sockets_suite(void)
}; };
return create_suite("SOCKETS", tests, sizeof(tests)/sizeof(testfunc), sockets_setup, sockets_teardown); return create_suite("SOCKETS", tests, sizeof(tests)/sizeof(testfunc), sockets_setup, sockets_teardown);
} }
#else /* LWIP_SOCKET */
Suite *
sockets_suite(void)
{
return create_suite("SOCKETS", NULL, 0, NULL, NULL);
}
#endif /* LWIP_SOCKET */

View File

@ -33,20 +33,12 @@
#include <lwip/opt.h> #include <lwip/opt.h>
#include <lwip/arch.h> #include <lwip/arch.h>
#include "sys_arch.h"
#include <lwip/stats.h> #include <lwip/stats.h>
#include <lwip/debug.h> #include <lwip/debug.h>
#include <lwip/sys.h> #include <lwip/sys.h>
#include <string.h> #include <string.h>
test_sys_arch_waiting_fn the_waiting_fn;
void test_sys_arch_wait_callback(test_sys_arch_waiting_fn waiting_fn)
{
the_waiting_fn = waiting_fn;
}
u32_t sys_jiffies(void) u32_t sys_jiffies(void)
{ {
return (u32_t)0; /* todo */ return (u32_t)0; /* todo */
@ -62,6 +54,14 @@ void sys_init(void)
} }
#if !NO_SYS #if !NO_SYS
#include "sys_arch.h"
test_sys_arch_waiting_fn the_waiting_fn;
void test_sys_arch_wait_callback(test_sys_arch_waiting_fn waiting_fn)
{
the_waiting_fn = waiting_fn;
}
err_t sys_sem_new(sys_sem_t *sem, u8_t count) err_t sys_sem_new(sys_sem_t *sem, u8_t count)
{ {

View File

@ -11,6 +11,9 @@
#include "api/test_sockets.h" #include "api/test_sockets.h"
#include "lwip/init.h" #include "lwip/init.h"
#if !NO_SYS
#include "lwip/tcpip.h"
#endif
Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown) Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
{ {
@ -51,7 +54,11 @@ int main(void)
size_t num = sizeof(suites)/sizeof(void*); size_t num = sizeof(suites)/sizeof(void*);
LWIP_ASSERT("No suites defined", num > 0); LWIP_ASSERT("No suites defined", num > 0);
#if NO_SYS
lwip_init(); lwip_init();
#else
tcpip_init(NULL, NULL);
#endif
sr = srunner_create((suites[0])()); sr = srunner_create((suites[0])());
for(i = 1; i < num; i++) { for(i = 1; i < num; i++) {

View File

@ -32,12 +32,14 @@
#ifndef LWIP_HDR_LWIPOPTS_H #ifndef LWIP_HDR_LWIPOPTS_H
#define LWIP_HDR_LWIPOPTS_H #define LWIP_HDR_LWIPOPTS_H
#define LWIP_IPV6 1
/* We link to special sys_arch.c (for basic non-waiting API layers unit tests) */ /* We link to special sys_arch.c (for basic non-waiting API layers unit tests) */
#define NO_SYS 0 #define NO_SYS 0
#define SYS_LIGHTWEIGHT_PROT 0 #define SYS_LIGHTWEIGHT_PROT 0
#define LWIP_NETCONN 1 #define LWIP_NETCONN !NO_SYS
#define LWIP_SOCKET 1 #define LWIP_SOCKET !NO_SYS
#define LWIP_NETCONN_FULLDUPLEX 1 #define LWIP_NETCONN_FULLDUPLEX LWIP_SOCKET
#define LWIP_HAVE_LOOPIF 1 #define LWIP_HAVE_LOOPIF 1
#define TCPIP_THREAD_TEST #define TCPIP_THREAD_TEST