diff options
-rw-r--r-- | auto_tests/TCP_test.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/auto_tests/TCP_test.c b/auto_tests/TCP_test.c index 8b61c4b1..61a187d1 100644 --- a/auto_tests/TCP_test.c +++ b/auto_tests/TCP_test.c | |||
@@ -49,20 +49,31 @@ static uint16_t ports[NUM_PORTS] = {1234, 33445, 25643}; | |||
49 | 49 | ||
50 | START_TEST(test_basic) | 50 | START_TEST(test_basic) |
51 | { | 51 | { |
52 | // Attempt to create a new TCP_Server instance. | ||
52 | uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE]; | 53 | uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE]; |
53 | uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE]; | 54 | uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE]; |
54 | crypto_new_keypair(self_public_key, self_secret_key); | 55 | crypto_new_keypair(self_public_key, self_secret_key); |
55 | TCP_Server *tcp_s = new_TCP_server(USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr); | 56 | TCP_Server *tcp_s = new_TCP_server(USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr); |
56 | ck_assert_msg(tcp_s != nullptr, "Failed to create TCP relay server"); | 57 | ck_assert_msg(tcp_s != nullptr, "Failed to create a TCP relay server"); |
57 | ck_assert_msg(tcp_server_listen_count(tcp_s) == NUM_PORTS, "Failed to bind to all ports"); | 58 | ck_assert_msg(tcp_server_listen_count(tcp_s) == NUM_PORTS, |
59 | "Failed to bind a TCP relay server to all %d attempted ports", NUM_PORTS); | ||
58 | 60 | ||
59 | Socket sock = net_socket(net_family_ipv6, TOX_SOCK_STREAM, TOX_PROTO_TCP); | 61 | Socket sock; |
60 | IP_Port ip_port_loopback; | ||
61 | ip_port_loopback.ip = get_loopback(); | ||
62 | ip_port_loopback.port = net_htons(ports[random_u32() % NUM_PORTS]); | ||
63 | 62 | ||
64 | int ret = net_connect(sock, ip_port_loopback); | 63 | // Check all opened ports for connectivity. |
65 | ck_assert_msg(ret == 0, "Failed to connect to TCP relay server"); | 64 | for (uint8_t i = 0; i < NUM_PORTS; i++) { |
65 | sock = net_socket(net_family_ipv6, TOX_SOCK_STREAM, TOX_PROTO_TCP); | ||
66 | IP_Port ip_port_loopback; | ||
67 | ip_port_loopback.ip = get_loopback(); | ||
68 | ip_port_loopback.port = net_htons(ports[i]); | ||
69 | int ret = net_connect(sock, ip_port_loopback); | ||
70 | ck_assert_msg(ret == 0, "Failed to connect to created TCP relay server on port %d", ports[i]); | ||
71 | |||
72 | // Leave open one connection for the next test. | ||
73 | if (i + 1 < NUM_PORTS) { | ||
74 | kill_sock(sock); | ||
75 | } | ||
76 | } | ||
66 | 77 | ||
67 | uint8_t f_public_key[CRYPTO_PUBLIC_KEY_SIZE]; | 78 | uint8_t f_public_key[CRYPTO_PUBLIC_KEY_SIZE]; |
68 | uint8_t f_secret_key[CRYPTO_SECRET_KEY_SIZE]; | 79 | uint8_t f_secret_key[CRYPTO_SECRET_KEY_SIZE]; |
@@ -78,8 +89,8 @@ START_TEST(test_basic) | |||
78 | memcpy(handshake, f_public_key, CRYPTO_PUBLIC_KEY_SIZE); | 89 | memcpy(handshake, f_public_key, CRYPTO_PUBLIC_KEY_SIZE); |
79 | random_nonce(handshake + CRYPTO_PUBLIC_KEY_SIZE); | 90 | random_nonce(handshake + CRYPTO_PUBLIC_KEY_SIZE); |
80 | 91 | ||
81 | ret = encrypt_data(self_public_key, f_secret_key, handshake + CRYPTO_PUBLIC_KEY_SIZE, handshake_plain, | 92 | int ret = encrypt_data(self_public_key, f_secret_key, handshake + CRYPTO_PUBLIC_KEY_SIZE, handshake_plain, |
82 | TCP_HANDSHAKE_PLAIN_SIZE, handshake + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE); | 93 | TCP_HANDSHAKE_PLAIN_SIZE, handshake + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE); |
83 | ck_assert_msg(ret == TCP_CLIENT_HANDSHAKE_SIZE - (CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE), | 94 | ck_assert_msg(ret == TCP_CLIENT_HANDSHAKE_SIZE - (CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE), |
84 | "Encrypt failed."); | 95 | "Encrypt failed."); |
85 | ck_assert_msg(net_send(sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1) == TCP_CLIENT_HANDSHAKE_SIZE - 1, | 96 | ck_assert_msg(net_send(sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1) == TCP_CLIENT_HANDSHAKE_SIZE - 1, |