summaryrefslogtreecommitdiff
path: root/auto_tests/TCP_test.c
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2014-04-06 20:51:03 -0400
committerirungentoo <irungentoo@gmail.com>2014-04-06 20:51:03 -0400
commitbd0d24fc9cad83d77cdf4bfd335ee5e25954c8ce (patch)
tree9776a8dea2573c866610a66d195f319652c84b27 /auto_tests/TCP_test.c
parentef744ebbc29a3dc1ebc6c626b83c90ead15bb391 (diff)
Added TCP_client.
Some work done on the TCP part.
Diffstat (limited to 'auto_tests/TCP_test.c')
-rw-r--r--auto_tests/TCP_test.c71
1 files changed, 70 insertions, 1 deletions
diff --git a/auto_tests/TCP_test.c b/auto_tests/TCP_test.c
index 20bf6592..de37bb97 100644
--- a/auto_tests/TCP_test.c
+++ b/auto_tests/TCP_test.c
@@ -10,6 +10,8 @@
10#include <time.h> 10#include <time.h>
11 11
12#include "../toxcore/TCP_server.h" 12#include "../toxcore/TCP_server.h"
13#include "../toxcore/TCP_client.h"
14
13#include "../toxcore/util.h" 15#include "../toxcore/util.h"
14 16
15#if defined(_WIN32) || defined(__WIN32__) || defined (WIN32) 17#if defined(_WIN32) || defined(__WIN32__) || defined (WIN32)
@@ -21,7 +23,7 @@
21 23
22#define NUM_PORTS 3 24#define NUM_PORTS 3
23 25
24uint16_t ports[NUM_PORTS] = {12345, 33445, 25643}; 26uint16_t ports[NUM_PORTS] = {1234, 33445, 25643};
25 27
26START_TEST(test_basic) 28START_TEST(test_basic)
27{ 29{
@@ -30,6 +32,7 @@ START_TEST(test_basic)
30 crypto_box_keypair(self_public_key, self_secret_key); 32 crypto_box_keypair(self_public_key, self_secret_key);
31 TCP_Server *tcp_s = new_TCP_server(1, NUM_PORTS, ports, self_public_key, self_secret_key, NULL); 33 TCP_Server *tcp_s = new_TCP_server(1, NUM_PORTS, ports, self_public_key, self_secret_key, NULL);
32 ck_assert_msg(tcp_s != NULL, "Failed to create TCP relay server"); 34 ck_assert_msg(tcp_s != NULL, "Failed to create TCP relay server");
35 ck_assert_msg(tcp_s->num_listening_socks == NUM_PORTS, "Failed to bind to all ports");
33 36
34 sock_t sock = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP); 37 sock_t sock = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
35 struct sockaddr_in6 addr6_loopback = {0}; 38 struct sockaddr_in6 addr6_loopback = {0};
@@ -204,6 +207,7 @@ START_TEST(test_some)
204 crypto_box_keypair(self_public_key, self_secret_key); 207 crypto_box_keypair(self_public_key, self_secret_key);
205 TCP_Server *tcp_s = new_TCP_server(1, NUM_PORTS, ports, self_public_key, self_secret_key, NULL); 208 TCP_Server *tcp_s = new_TCP_server(1, NUM_PORTS, ports, self_public_key, self_secret_key, NULL);
206 ck_assert_msg(tcp_s != NULL, "Failed to create TCP relay server"); 209 ck_assert_msg(tcp_s != NULL, "Failed to create TCP relay server");
210 ck_assert_msg(tcp_s->num_listening_socks == NUM_PORTS, "Failed to bind to all ports");
207 211
208 struct sec_TCP_con *con1 = new_TCP_con(tcp_s); 212 struct sec_TCP_con *con1 = new_TCP_con(tcp_s);
209 struct sec_TCP_con *con2 = new_TCP_con(tcp_s); 213 struct sec_TCP_con *con2 = new_TCP_con(tcp_s);
@@ -287,6 +291,69 @@ START_TEST(test_some)
287} 291}
288END_TEST 292END_TEST
289 293
294START_TEST(test_client)
295{
296 unix_time_update();
297 uint8_t self_public_key[crypto_box_PUBLICKEYBYTES];
298 uint8_t self_secret_key[crypto_box_SECRETKEYBYTES];
299 crypto_box_keypair(self_public_key, self_secret_key);
300 TCP_Server *tcp_s = new_TCP_server(1, NUM_PORTS, ports, self_public_key, self_secret_key, NULL);
301 ck_assert_msg(tcp_s != NULL, "Failed to create TCP relay server");
302 ck_assert_msg(tcp_s->num_listening_socks == NUM_PORTS, "Failed to bind to all ports");
303
304 uint8_t f_public_key[crypto_box_PUBLICKEYBYTES];
305 uint8_t f_secret_key[crypto_box_SECRETKEYBYTES];
306 crypto_box_keypair(f_public_key, f_secret_key);
307 IP_Port ip_port_tcp_s;
308
309 ip_port_tcp_s.port = htons(ports[rand() % NUM_PORTS]);
310 ip_port_tcp_s.ip.family = AF_INET6;
311 ip_port_tcp_s.ip.ip6.in6_addr = in6addr_loopback;
312 TCP_Client_Connection *conn = new_TCP_connection(ip_port_tcp_s, self_public_key, f_public_key, f_secret_key);
313 c_sleep(50);
314 do_TCP_connection(conn);
315 ck_assert_msg(conn->status == TCP_CLIENT_UNCONFIRMED, "Wrong status. Expected: %u, is: %u", TCP_CLIENT_UNCONFIRMED,
316 conn->status);
317 c_sleep(50);
318 do_TCP_server(tcp_s);
319 c_sleep(50);
320 do_TCP_connection(conn);
321 ck_assert_msg(conn->status == TCP_CLIENT_CONFIRMED, "Wrong status. Expected: %u, is: %u", TCP_CLIENT_CONFIRMED,
322 conn->status);
323}
324END_TEST
325
326START_TEST(test_client_invalid)
327{
328 unix_time_update();
329 uint8_t self_public_key[crypto_box_PUBLICKEYBYTES];
330 uint8_t self_secret_key[crypto_box_SECRETKEYBYTES];
331 crypto_box_keypair(self_public_key, self_secret_key);
332
333 uint8_t f_public_key[crypto_box_PUBLICKEYBYTES];
334 uint8_t f_secret_key[crypto_box_SECRETKEYBYTES];
335 crypto_box_keypair(f_public_key, f_secret_key);
336 IP_Port ip_port_tcp_s;
337
338 ip_port_tcp_s.port = htons(ports[rand() % NUM_PORTS]);
339 ip_port_tcp_s.ip.family = AF_INET6;
340 ip_port_tcp_s.ip.ip6.in6_addr = in6addr_loopback;
341 TCP_Client_Connection *conn = new_TCP_connection(ip_port_tcp_s, self_public_key, f_public_key, f_secret_key);
342 c_sleep(50);
343 do_TCP_connection(conn);
344 ck_assert_msg(conn->status == TCP_CLIENT_CONNECTING, "Wrong status. Expected: %u, is: %u", TCP_CLIENT_CONNECTING,
345 conn->status);
346 c_sleep(5000);
347 do_TCP_connection(conn);
348 ck_assert_msg(conn->status == TCP_CLIENT_CONNECTING, "Wrong status. Expected: %u, is: %u", TCP_CLIENT_CONNECTING,
349 conn->status);
350 c_sleep(6000);
351 do_TCP_connection(conn);
352 ck_assert_msg(conn->status == TCP_CLIENT_DISCONNECTED, "Wrong status. Expected: %u, is: %u", TCP_CLIENT_DISCONNECTED,
353 conn->status);
354}
355END_TEST
356
290#define DEFTESTCASE(NAME) \ 357#define DEFTESTCASE(NAME) \
291 TCase *tc_##NAME = tcase_create(#NAME); \ 358 TCase *tc_##NAME = tcase_create(#NAME); \
292 tcase_add_test(tc_##NAME, test_##NAME); \ 359 tcase_add_test(tc_##NAME, test_##NAME); \
@@ -301,6 +368,8 @@ Suite *TCP_suite(void)
301 368
302 DEFTESTCASE_SLOW(basic, 5); 369 DEFTESTCASE_SLOW(basic, 5);
303 DEFTESTCASE_SLOW(some, 10); 370 DEFTESTCASE_SLOW(some, 10);
371 DEFTESTCASE_SLOW(client, 10);
372 DEFTESTCASE_SLOW(client_invalid, 15);
304 return s; 373 return s;
305} 374}
306 375