#include <error.h>
#include "../proto_inet.c"
+#include <wvtest.h>
const char *msg = "Hello world!";
const char *msg2 = "Blablabla!";
void timeout(int signal)
{
- error(1, 0, timeout_msg);
+ //error(1, 0, timeout_msg);
}
-int main()
+WVTEST_MAIN("AF_INET inter-orb protocol")
{
int len;
struct inet_addr addr[NUM_PORTS];
signal(SIGALRM, timeout);
+ memset(port, 0, sizeof(port));
+
for (i=0; i<NUM_PORTS; i++) {
addr[i].addr.s_addr = htonl(0x7f000001+i);
- if (forb_inet_port_init(&port[i].desc, addr[i].addr) != 0)
+ if (!WVPASSEQ(forb_inet_port_init(&port[i].desc, addr[i].addr, 0), 0))
error(1, errno, "forb_inet_port_init(%d)", i);
}
/* Send from zeroth node to all others (starting from 1) */
for (i=1; i<NUM_PORTS; i++) {
- forb_peer_t peer;
char buf[100];
char tmsg[100];
-
- memset(&peer, 0, sizeof(peer));
- peer.addr = port[i].desc.addr;
- peer.port = &port[0];
+ forb_peer_t *peer;
+
+ WVPASS(peer = forb_peer_new());
+ peer->addr = port[i].desc.addr;
+ peer->port = &port[0];
len = strlen(msg)+1;
- ret = inet_send(&peer, msg, len);
+ WVPASSEQ(ret = inet_send(peer, msg, len), len);
+
+ peer->addr = NULL;
+ forb_peer_put(peer);
if (ret != len)
error(1, errno, "send(to %d) = %d", i, ret);
sprintf(tmsg, "Timeout when sending from 0 to %d\n", i);
timeout_msg = tmsg;
alarm(1); /* timeout 1s */
- ret = inet_recv(&port[i], buf, sizeof(buf));
+ WVPASSEQ(ret = inet_recv(&port[i], buf, sizeof(buf)), len);
alarm(0);
if (ret != len)
error(1, errno, "recv(port[%d]) = %d", i, ret);
- if (strcmp(msg, buf) != 0)
+ if (!WVPASS(strcmp(msg, buf) == 0))
error(1, errno, "port %d: received wrong data", i);
-
}
+#ifndef CONFIG_FORB_PROTO_INET_DEFAULT
len = strlen(msg2)+1;
- ret = inet_broadcast(&port[0], msg2, len);
+ WVPASSEQ(ret = inet_broadcast(&port[0], msg2, len), len);
if (ret != len)
error(1, errno, "broadcast(port[0]) = %d should be %d", ret, len);
sprintf(tmsg, "Timeout when receiving broadcast for port %d\n", i);
timeout_msg = tmsg;
alarm(1);
- ret = inet_recv(&port[i], buf, sizeof(buf));
+ WVPASSEQ(ret = inet_recv(&port[i], buf, sizeof(buf)), len);
alarm(0);
if (ret != len)
error(1, errno, "broadcast recv(port[%d]) = %d should be %d (errno=%d)", i, ret, len, errno);
//printf("broadcast received: %s\n", buf);
- if (strcmp(msg2, buf) != 0)
+ if (!WVPASS(strcmp(msg2, buf) == 0))
error(1, errno, "port %d: broadcast received wrong data", i);
}
+#endif
for (i=0; i<NUM_PORTS; i++) {
inet_port_destroy(&port[i]);
+ if (port[i].new_peer)
+ forb_peer_put(port[i].new_peer);
}
-
- printf("OK\n");
- return 0;
}