From d9939eb8513e26c75f56cd05ccdc0c449e5d9a07 Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Sat, 4 Jun 2011 11:31:05 +0300 Subject: [PATCH] Add sendTo tests --- src/raw/test/test_sw_sendto.c | 82 +++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/src/raw/test/test_sw_sendto.c b/src/raw/test/test_sw_sendto.c index 8cfa01c..fe6487d 100644 --- a/src/raw/test/test_sw_sendto.c +++ b/src/raw/test/test_sw_sendto.c @@ -26,13 +26,95 @@ static void sendto_descriptor_is_not_socket(void); static void sendto_socket_is_not_bound(void); static void sendto_ok(void); +// Additional function +static void fill_sockaddr_sw(struct sockaddr_sw *local_addr, struct sockaddr_sw *remote_addr, char * local_address, char * hash, char * dest_address); + void sendto_test_suite(void) { start_suite(); sendto_dummy(); + + sendto_invalid_descriptor(); + sendto_descriptor_is_not_socket(); + sendto_socket_is_not_bound(); + sendto_ok(); } static void sendto_dummy(void) { test(1 == 1); } + +static void sendto_invalid_descriptor() +{ + struct sockaddr_sw local_addr; + struct sockaddr_sw remote_addr; + ssize_t bytes_sent; + char buffer[BUFSIZ]; + + fill_sockaddr_sw(&local_addr, &remote_addr, "127.0.0.1", "myHash", "127.0.0.1"); + bytes_sent = sw_sendto(-1, buffer, BUFSIZ, 0, (struct sockaddr *) &remote_addr, sizeof(remote_addr)); + + test(bytes_sent < 0 && errno == EBADF); +} + +static void sendto_descriptor_is_not_socket(void) +{ + struct sockaddr_sw local_addr; + struct sockaddr_sw remote_addr; + ssize_t bytes_sent; + char buffer[BUFSIZ]; + + fill_sockaddr_sw(&local_addr, &remote_addr, "127.0.0.1", "myHash", "127.0.0.1"); + bytes_sent = sw_sendto(1, buffer, BUFSIZ, 0, (struct sockaddr *) &remote_addr, sizeof(remote_addr)); + + test(bytes_sent < 0 && errno == ENOTSOCK); +} + +static void sendto_socket_is_not_bound(void) +{ + int sockfd; + struct sockaddr_sw local_addr; + struct sockaddr_sw remote_addr; + ssize_t bytes_sent; + char buffer[BUFSIZ]; + + sockfd = sw_socket(PF_INET, SOCK_DGRAM, IPPROTO_SWIFT); + DIE(sockfd < 0, "sw_socket"); + + fill_sockaddr_sw(&local_addr, &remote_addr, "127.0.0.1", "myHash", "127.0.0.1"); + bytes_sent = sw_sendto(sockfd, buffer, BUFSIZ, 0, (struct sockaddr *) &remote_addr, sizeof(remote_addr)); + + test( bytes_sent < 0 && errno == EAFNOSUPPORT ); +} + +static void sendto_ok(void) +{ + int sockfd; + struct sockaddr_sw local_addr; + struct sockaddr_sw remote_addr; + ssize_t bytes_sent; + char buffer[BUFSIZ]; + int rc; + + fill_sockaddr_sw(&local_addr, &remote_addr, "127.0.0.1", "myHash", "127.0.0.1"); + + + sockfd = sw_socket(PF_INET, SOCK_DGRAM, IPPROTO_SWIFT); + DIE(sockfd < 0, "sw_socket"); + + rc = sw_bind(sockfd, (struct sockaddr *) &local_addr, sizeof(local_addr)); + DIE(rc < 0, "sw_bind"); + + + test( 1 == 0 ); +} + +static void fill_sockaddr_sw(struct sockaddr_sw *local_addr, struct sockaddr_sw *remote_addr, char * local_address, char * hash, char * dest_address) +{ + local_addr->sin_addr.s_addr = htonl((int)local_address); + memcpy(&local_addr->sw_hash, hash, sizeof(struct sw_hash)); + + remote_addr->sin_addr.s_addr = htonl((int)dest_address); + memcpy(&remote_addr->sw_hash, hash, sizeof(struct sw_hash)); +} -- 2.20.1