static void test_null_args (void) { LWES_BYTE buffer[500]; unsigned int i; struct lwes_net_connection connection; /* initialize to nothing */ for (i = 0; i < 500; i++) buffer[i]=(LWES_BYTE)0; /* now set 45 bytes */ for (i = 0; i < 45; i++) { buffer[i]=(LWES_BYTE)i; } /* test NULL connection to all calls */ assert (lwes_net_open (NULL, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port) == -1); assert (lwes_net_close (NULL) == -1); assert (lwes_net_get_ttl (NULL) == -1); assert (lwes_net_set_ttl (NULL, 5) == -1); assert (lwes_net_get_sock_fd (NULL) == -1); assert (lwes_net_send_bytes (NULL, buffer, 45) == -1); assert (lwes_net_send_bytes (&connection, NULL, 45) == -1); assert (lwes_net_sendto_bytes (NULL, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port, buffer, 45) == -1); assert (lwes_net_sendto_bytes (&connection, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port, NULL, 45) == -1); assert (lwes_net_recv_bind (NULL) == -1); assert (lwes_net_recv_bytes (NULL, buffer, 500) == -1); assert (lwes_net_recv_bytes (&connection, NULL, 500) == -1); assert (lwes_net_recv_bytes_by (NULL, buffer, 500, 10000) == -1); assert (lwes_net_recv_bytes_by (&connection, NULL, 500, 10000) == -1); }
static void receiver (const char *ip, const int port, const char *iface) { LWES_BYTE buffer[500]; struct lwes_net_connection connection; unsigned int i; for (i = 0; i < 500; i++) buffer[i]=(LWES_BYTE)0; assert ( lwes_net_open (&connection, (char*)ip, (char*)iface, (int)port) == 0 ); for ( i = 0 ; i < num_to_send ; i++ ) { int j; int n; assert ((n = lwes_net_recv_bytes (&connection,buffer,500)) > 0 ); assert ( n == 45 ); for ( j = 0 ; j < 45 ; j++ ) { assert ( buffer[j] == j ); } } lwes_net_close (&connection); }
int my_lwes_net_recv_bytes (struct lwes_net_connection *conn, LWES_BYTE_P bytes, size_t len) { if (lwes_net_recv_bytes_error == 0) { return lwes_net_recv_bytes (conn, bytes, len); } return -1; }
static void test_socket_function_failures (void) { struct lwes_net_connection connection; LWES_BYTE buffer[500]; /* socket system call failure */ socket_error = 1; assert (lwes_net_open (&connection, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port) == -2); socket_error = 0; /* setsockopt of IP_MULTICAST_IF failure */ setsockopt_error_when = IP_MULTICAST_IF; assert (lwes_net_open (&connection, (char*)mcast_ip, (char*)mcast_iface2, (int)mcast_port) == -3); setsockopt_error_when = SETSOCKOPT_NO_ERROR; /* setsockopt of SO_SNDBUF failure */ setsockopt_error_when = SO_SNDBUF; assert (lwes_net_open (&connection, (char*)mcast_ip, (char*)mcast_iface2, (int)mcast_port) == -4); setsockopt_error_when = SETSOCKOPT_NO_ERROR; /* test failures in recv_bind */ /* need a successful open */ assert (lwes_net_open (&connection, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port) == 0); /* First setsockopt SO_REUSEADDR failure */ setsockopt_error_when = SO_REUSEADDR; assert (lwes_net_recv_bind (&connection) == -2); setsockopt_error_when = SETSOCKOPT_NO_ERROR; /* Second setsockopt SO_RCVBUF failure */ setsockopt_error_when = SO_RCVBUF; assert (lwes_net_recv_bind (&connection) == -3); setsockopt_error_when = SETSOCKOPT_NO_ERROR; /* Third bind () failure */ bind_error = 1; assert (lwes_net_recv_bind (&connection) == -4); bind_error = 0; /* Fourth IP_ADD_MEMBERSHIP failure */ setsockopt_error_when = IP_ADD_MEMBERSHIP; assert (lwes_net_recv_bind (&connection) == -5); setsockopt_error_when = SETSOCKOPT_NO_ERROR; assert (lwes_net_close (&connection) == 0); /* successful so we can test close failure */ assert (lwes_net_open (&connection, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port) == 0); assert (lwes_net_recv_bind (&connection) == 0); setsockopt_error_when = IP_DROP_MEMBERSHIP; assert (lwes_net_close (&connection) == -2); setsockopt_error_when = SETSOCKOPT_NO_ERROR; assert (lwes_net_close (&connection) == 0); /* Also want to test bind failures in recv functions */ assert (lwes_net_open (&connection, (char*)mcast_ip, (char*)mcast_iface, (int)mcast_port) == 0); bind_error = 1; assert (lwes_net_recv_bytes (&connection, buffer, 500) == -4); assert (lwes_net_recv_bytes_by (&connection, buffer, 500, 10000) == -4); bind_error = 0; assert (lwes_net_close (&connection) == 0); }