diff options
author | irungentoo <irungentoo@gmail.com> | 2014-04-06 20:51:03 -0400 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2014-04-06 20:51:03 -0400 |
commit | bd0d24fc9cad83d77cdf4bfd335ee5e25954c8ce (patch) | |
tree | 9776a8dea2573c866610a66d195f319652c84b27 /auto_tests | |
parent | ef744ebbc29a3dc1ebc6c626b83c90ead15bb391 (diff) |
Added TCP_client.
Some work done on the TCP part.
Diffstat (limited to 'auto_tests')
-rw-r--r-- | auto_tests/TCP_test.c | 71 |
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 | ||
24 | uint16_t ports[NUM_PORTS] = {12345, 33445, 25643}; | 26 | uint16_t ports[NUM_PORTS] = {1234, 33445, 25643}; |
25 | 27 | ||
26 | START_TEST(test_basic) | 28 | START_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 | } |
288 | END_TEST | 292 | END_TEST |
289 | 293 | ||
294 | START_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 | } | ||
324 | END_TEST | ||
325 | |||
326 | START_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 | } | ||
355 | END_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 | ||