More tests, check both true and false values for options.
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user