More bind error tests
This commit is contained in:
parent
2047413488
commit
a6430f4121
1
oio.h
1
oio.h
@ -69,6 +69,7 @@ typedef enum {
|
||||
OIO_ECONNREFUSED,
|
||||
OIO_ECONNRESET,
|
||||
OIO_EDESTADDRREQ,
|
||||
OIO_EFAULT,
|
||||
OIO_EHOSTUNREACH,
|
||||
OIO_EINTR,
|
||||
OIO_EINVAL,
|
||||
|
||||
@ -36,6 +36,32 @@ static void close_cb(oio_handle* handle, int status) {
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_access) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("255.255.255.255", TEST_PORT);
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init();
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &addr);
|
||||
ASSERT(r == 0);
|
||||
r = oio_listen(&server, 128, NULL);
|
||||
ASSERT(r == -1);
|
||||
|
||||
ASSERT(oio_last_error().code == OIO_EACCESS);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_addrinuse) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("0.0.0.0", TEST_PORT);
|
||||
oio_handle server1, server2;
|
||||
@ -69,3 +95,103 @@ TEST_IMPL(bind_error_addrinuse) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_addrnotavail) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("4.4.4.4", TEST_PORT);
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init();
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &addr);
|
||||
ASSERT(r == 0);
|
||||
r = oio_listen(&server, 128, NULL);
|
||||
ASSERT(r == -1);
|
||||
|
||||
ASSERT(oio_last_error().code == OIO_EADDRNOTAVAIL);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_fault_1) {
|
||||
char garbage[] = "blah blah blah blah blah blah blah blah blah blah blah blah";
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init();
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &garbage);
|
||||
ASSERT(r == -1);
|
||||
|
||||
ASSERT(oio_last_error().code == OIO_EFAULT);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_fault_2) {
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init();
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) NULL);
|
||||
ASSERT(r == -1);
|
||||
|
||||
ASSERT(oio_last_error().code == OIO_EFAULT);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_inval) {
|
||||
struct sockaddr_in addr1 = oio_ip4_addr("0.0.0.0", TEST_PORT);
|
||||
struct sockaddr_in addr2 = oio_ip4_addr("0.0.0.0", TEST_PORT_2);
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init();
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &addr1);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &addr2);
|
||||
ASSERT(r == -1);
|
||||
|
||||
ASSERT(oio_last_error().code == OIO_EINVAL);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -22,7 +22,12 @@
|
||||
TEST_DECLARE (ping_pong)
|
||||
TEST_DECLARE (delayed_accept)
|
||||
TEST_DECLARE (tcp_writealot)
|
||||
TEST_DECLARE (bind_error_access)
|
||||
TEST_DECLARE (bind_error_addrinuse)
|
||||
TEST_DECLARE (bind_error_addrnotavail)
|
||||
TEST_DECLARE (bind_error_fault_1)
|
||||
TEST_DECLARE (bind_error_fault_2)
|
||||
TEST_DECLARE (bind_error_inval)
|
||||
TEST_DECLARE (connection_fail)
|
||||
TEST_DECLARE (close_cb_stack)
|
||||
TEST_DECLARE (timeout)
|
||||
@ -41,8 +46,18 @@ TASK_LIST_START
|
||||
TEST_HELPER (tcp_writealot, echo_server)
|
||||
*/
|
||||
|
||||
TEST_ENTRY (bind_error_access)
|
||||
|
||||
TEST_ENTRY (bind_error_addrinuse)
|
||||
|
||||
TEST_ENTRY (bind_error_addrnotavail)
|
||||
|
||||
TEST_ENTRY (bind_error_fault_1)
|
||||
|
||||
TEST_ENTRY (bind_error_fault_2)
|
||||
|
||||
TEST_ENTRY (bind_error_inval)
|
||||
|
||||
TEST_ENTRY (connection_fail)
|
||||
|
||||
TEST_ENTRY (close_cb_stack)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user