From e0757204ccef0ecb6daf536fb6686a39e1801972 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 30 Aug 2017 13:58:17 -0500 Subject: [PATCH] More tests, check both true and false values for options. --- src/libCom/test/osiSockTest.c | 55 ++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/libCom/test/osiSockTest.c b/src/libCom/test/osiSockTest.c index d9bbd29f7..16a184afd 100644 --- a/src/libCom/test/osiSockTest.c +++ b/src/libCom/test/osiSockTest.c @@ -12,33 +12,48 @@ #include "epicsUnitTest.h" #include "testMain.h" +/* This could easily be generalized to test more options */ +void udpBroadcast(SOCKET s, int put) +{ + int status; + int flag = put; + osiSocklen_t len = sizeof(flag); + + status = setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&flag, len); + testOk(status >= 0, "setsockopt BROADCAST := %d", put); + + status = getsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&flag, &len); + testOk(status >= 0 && len == sizeof(flag) && flag == put, + "getsockopt BROADCAST => %d", flag); +} + +void multiCastLoop(SOCKET s, int put) +{ + int status; + osiSockOptMcastLoop_t flag = put; + osiSocklen_t len = sizeof(flag); + + status = setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, + (char *)&flag, len); + testOk(status >= 0, "setsockopt MULTICAST_LOOP := %d", put); + + status = getsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, (char *)&flag, &len); + testOk(status >= 0 && len == sizeof(flag) && flag == put, + "getsockopt MULTICAST_LOOP => %d", (int) flag); +} + void udpSockTest(void) { SOCKET s; - int status, one = 1, get = 0; - osiSocklen_t len; - osiSockOptMcastLoop_t flag = 1; s = epicsSocketCreate(AF_INET, SOCK_DGRAM, 0); testOk(s != INVALID_SOCKET, "epicsSocketCreate INET, DGRAM, 0"); - status = setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&one, sizeof(one)); - testOk(status >= 0, "setsockopt BROADCAST, 1"); + udpBroadcast(s, 1); + udpBroadcast(s, 0); - len = sizeof(get); - status = getsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&get, &len); - testOk(status >= 0 && len == sizeof(get) && get == 1, - "getsockopt BROADCAST == 1"); - - status = setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, - (char *)&flag, sizeof(flag)); - testOk(status >= 0, "setsockopt MULTICAST_LOOP, 1"); - - flag = 0; - len = sizeof(flag); - status = getsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, (char *)&flag, &len); - testOk(status >= 0 && len == sizeof(flag) && flag == 1, - "getsockopt MULTICAST_LOOP == 1"); + multiCastLoop(s, 1); + multiCastLoop(s, 0); epicsSocketDestroy(s); } @@ -47,7 +62,7 @@ void udpSockTest(void) MAIN(osiSockTest) { int status; - testPlan(6); + testPlan(10); status = osiSockAttach(); testOk(status, "osiSockAttach");