update toxcore Merge commit '3b6bb15e867a5f3895773554b1cfa928fcfd3e8f'
This commit is contained in:
@ -71,6 +71,7 @@ auto_test(invalid_udp_proxy)
|
||||
auto_test(lan_discovery)
|
||||
auto_test(lossless_packet)
|
||||
auto_test(lossy_packet)
|
||||
auto_test(netprof)
|
||||
auto_test(network)
|
||||
auto_test(onion)
|
||||
auto_test(overflow_recvq)
|
||||
|
54
external/toxcore/c-toxcore/auto_tests/TCP_test.c
vendored
54
external/toxcore/c-toxcore/auto_tests/TCP_test.c
vendored
@ -8,7 +8,7 @@
|
||||
#include "../toxcore/TCP_server.h"
|
||||
#include "../toxcore/crypto_core.h"
|
||||
#include "../toxcore/mono_time.h"
|
||||
#include "../toxcore/util.h"
|
||||
#include "../toxcore/network.h"
|
||||
#include "auto_test_support.h"
|
||||
|
||||
#define NUM_PORTS 3
|
||||
@ -74,8 +74,9 @@ static void test_basic(void)
|
||||
for (uint8_t i = 0; i < NUM_PORTS; i++) {
|
||||
sock = net_socket(ns, net_family_ipv6(), TOX_SOCK_STREAM, TOX_PROTO_TCP);
|
||||
localhost.port = net_htons(ports[i]);
|
||||
bool ret = net_connect(ns, mem, logger, sock, &localhost);
|
||||
ck_assert_msg(ret, "Failed to connect to created TCP relay server on port %d (%d).", ports[i], errno);
|
||||
Net_Err_Connect err;
|
||||
bool ret = net_connect(ns, mem, logger, sock, &localhost, &err);
|
||||
ck_assert_msg(ret, "Failed to connect to created TCP relay server on port %d (%d, %s).", ports[i], errno, net_err_connect_to_string(err));
|
||||
|
||||
// Leave open one connection for the next test.
|
||||
if (i + 1 < NUM_PORTS) {
|
||||
@ -111,12 +112,12 @@ static void test_basic(void)
|
||||
|
||||
// Sending the handshake
|
||||
ck_assert_msg(net_send(ns, logger, sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1,
|
||||
&localhost) == TCP_CLIENT_HANDSHAKE_SIZE - 1,
|
||||
&localhost, nullptr) == TCP_CLIENT_HANDSHAKE_SIZE - 1,
|
||||
"An attempt to send the initial handshake minus last byte failed.");
|
||||
|
||||
do_tcp_server_delay(tcp_s, mono_time, 50);
|
||||
|
||||
ck_assert_msg(net_send(ns, logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost) == 1,
|
||||
ck_assert_msg(net_send(ns, logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost, nullptr) == 1,
|
||||
"The attempt to send the last byte of handshake failed.");
|
||||
|
||||
free(handshake);
|
||||
@ -155,7 +156,7 @@ static void test_basic(void)
|
||||
msg_length = sizeof(r_req) - i;
|
||||
}
|
||||
|
||||
ck_assert_msg(net_send(ns, logger, sock, r_req + i, msg_length, &localhost) == msg_length,
|
||||
ck_assert_msg(net_send(ns, logger, sock, r_req + i, msg_length, &localhost, nullptr) == msg_length,
|
||||
"Failed to send request after completing the handshake.");
|
||||
i += msg_length;
|
||||
|
||||
@ -165,7 +166,9 @@ static void test_basic(void)
|
||||
}
|
||||
|
||||
// Receiving the second response and verifying its validity
|
||||
uint8_t packet_resp[4096];
|
||||
const size_t max_packet_size = 4096;
|
||||
uint8_t *packet_resp = (uint8_t *)malloc(max_packet_size);
|
||||
ck_assert(packet_resp != nullptr);
|
||||
int recv_data_len = net_recv(ns, logger, sock, packet_resp, 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE, &localhost);
|
||||
ck_assert_msg(recv_data_len == 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE,
|
||||
"Failed to receive server response to request. %d", recv_data_len);
|
||||
@ -173,7 +176,8 @@ static void test_basic(void)
|
||||
ck_assert_msg(net_ntohs(size) == 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE,
|
||||
"Wrong packet size for request response.");
|
||||
|
||||
uint8_t packet_resp_plain[4096];
|
||||
uint8_t *packet_resp_plain = (uint8_t *)malloc(max_packet_size);
|
||||
ck_assert(packet_resp_plain != nullptr);
|
||||
ret = decrypt_data_symmetric(mem, f_shared_key, f_nonce_r, packet_resp + 2, recv_data_len - 2, packet_resp_plain);
|
||||
ck_assert_msg(ret != -1, "Failed to decrypt the TCP server's response.");
|
||||
increment_nonce(f_nonce_r);
|
||||
@ -183,6 +187,9 @@ static void test_basic(void)
|
||||
ck_assert_msg(packet_resp_plain[1] == 0, "Server did not refuse the connection.");
|
||||
ck_assert_msg(pk_equal(packet_resp_plain + 2, f_public_key), "Server sent the wrong public key.");
|
||||
|
||||
free(packet_resp_plain);
|
||||
free(packet_resp);
|
||||
|
||||
// Closing connections.
|
||||
kill_sock(ns, sock);
|
||||
kill_tcp_server(tcp_s);
|
||||
@ -213,8 +220,9 @@ static struct sec_TCP_con *new_tcp_con(const Logger *logger, const Memory *mem,
|
||||
localhost.ip = get_loopback();
|
||||
localhost.port = net_htons(ports[random_u32(rng) % NUM_PORTS]);
|
||||
|
||||
bool ok = net_connect(ns, mem, logger, sock, &localhost);
|
||||
ck_assert_msg(ok, "Failed to connect to the test TCP relay server.");
|
||||
Net_Err_Connect err;
|
||||
bool ok = net_connect(ns, mem, logger, sock, &localhost, &err);
|
||||
ck_assert_msg(ok, "Failed to connect to the test TCP relay server: %s.", net_err_connect_to_string(err));
|
||||
|
||||
uint8_t f_secret_key[CRYPTO_SECRET_KEY_SIZE];
|
||||
crypto_new_keypair(rng, sec_c->public_key, f_secret_key);
|
||||
@ -234,12 +242,12 @@ static struct sec_TCP_con *new_tcp_con(const Logger *logger, const Memory *mem,
|
||||
"Failed to encrypt the outgoing handshake.");
|
||||
|
||||
ck_assert_msg(net_send(ns, logger, sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1,
|
||||
&localhost) == TCP_CLIENT_HANDSHAKE_SIZE - 1,
|
||||
&localhost, nullptr) == TCP_CLIENT_HANDSHAKE_SIZE - 1,
|
||||
"Failed to send the first portion of the handshake to the TCP relay server.");
|
||||
|
||||
do_tcp_server_delay(tcp_s, mono_time, 50);
|
||||
|
||||
ck_assert_msg(net_send(ns, logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost) == 1,
|
||||
ck_assert_msg(net_send(ns, logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost, nullptr) == 1,
|
||||
"Failed to send last byte of handshake.");
|
||||
|
||||
do_tcp_server_delay(tcp_s, mono_time, 50);
|
||||
@ -283,7 +291,7 @@ static int write_packet_tcp_test_connection(const Logger *logger, struct sec_TCP
|
||||
localhost.ip = get_loopback();
|
||||
localhost.port = 0;
|
||||
|
||||
ck_assert_msg(net_send(con->ns, logger, con->sock, packet, packet_size, &localhost) == packet_size,
|
||||
ck_assert_msg(net_send(con->ns, logger, con->sock, packet, packet_size, &localhost, nullptr) == packet_size,
|
||||
"Failed to send a packet.");
|
||||
return 0;
|
||||
}
|
||||
@ -337,7 +345,8 @@ static void test_some(void)
|
||||
do_tcp_server_delay(tcp_s, mono_time, 50);
|
||||
|
||||
// Testing response from connection 1
|
||||
uint8_t data[2048];
|
||||
const size_t max_packet_size = 4096;
|
||||
uint8_t *data = (uint8_t *)malloc(max_packet_size);
|
||||
int len = read_packet_sec_tcp(logger, con1, data, 2 + 1 + 1 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE);
|
||||
ck_assert_msg(len == 1 + 1 + CRYPTO_PUBLIC_KEY_SIZE, "Wrong response packet length of %d.", len);
|
||||
ck_assert_msg(data[0] == TCP_PACKET_ROUTING_RESPONSE, "Wrong response packet id of %d.", data[0]);
|
||||
@ -351,7 +360,7 @@ static void test_some(void)
|
||||
ck_assert_msg(data[1] == 16, "Server didn't refuse connection using wrong public key.");
|
||||
ck_assert_msg(pk_equal(data + 2, con1->public_key), "Key in response packet wrong.");
|
||||
|
||||
uint8_t test_packet[512] = {16, 17, 16, 86, 99, 127, 255, 189, 78}; // What is this packet????
|
||||
const uint8_t test_packet[512] = {16, 17, 16, 86, 99, 127, 255, 189, 78}; // What is this packet????
|
||||
|
||||
write_packet_tcp_test_connection(logger, con3, test_packet, sizeof(test_packet));
|
||||
write_packet_tcp_test_connection(logger, con3, test_packet, sizeof(test_packet));
|
||||
@ -406,6 +415,8 @@ static void test_some(void)
|
||||
ck_assert_msg(data[0] == TCP_PACKET_PONG, "wrong packet id %u", data[0]);
|
||||
ck_assert_msg(memcmp(ping_packet + 1, data + 1, sizeof(uint64_t)) == 0, "wrong packet data");
|
||||
|
||||
free(data);
|
||||
|
||||
// Kill off the connections
|
||||
kill_tcp_server(tcp_s);
|
||||
kill_tcp_con(con1);
|
||||
@ -524,7 +535,8 @@ static void test_client(void)
|
||||
ip_port_tcp_s.port = net_htons(ports[random_u32(rng) % NUM_PORTS]);
|
||||
ip_port_tcp_s.ip = get_loopback();
|
||||
|
||||
TCP_Client_Connection *conn = new_tcp_connection(logger, mem, mono_time, rng, ns, &ip_port_tcp_s, self_public_key, f_public_key, f_secret_key, nullptr);
|
||||
TCP_Client_Connection *conn = new_tcp_connection(logger, mem, mono_time, rng, ns, &ip_port_tcp_s, self_public_key, f_public_key, f_secret_key, nullptr, nullptr);
|
||||
ck_assert_msg(conn != nullptr, "Failed to create a TCP client connection.");
|
||||
// TCP sockets might need a moment before they can be written to.
|
||||
c_sleep(50);
|
||||
do_tcp_connection(logger, mono_time, conn, nullptr);
|
||||
@ -560,7 +572,8 @@ static void test_client(void)
|
||||
crypto_new_keypair(rng, f2_public_key, f2_secret_key);
|
||||
ip_port_tcp_s.port = net_htons(ports[random_u32(rng) % NUM_PORTS]);
|
||||
TCP_Client_Connection *conn2 = new_tcp_connection(logger, mem, mono_time, rng, ns, &ip_port_tcp_s, self_public_key, f2_public_key,
|
||||
f2_secret_key, nullptr);
|
||||
f2_secret_key, nullptr, nullptr);
|
||||
ck_assert_msg(conn2 != nullptr, "Failed to create a second TCP client connection.");
|
||||
c_sleep(50);
|
||||
|
||||
// The client should call this function (defined earlier) during the routing process.
|
||||
@ -657,7 +670,8 @@ static void test_client_invalid(void)
|
||||
ip_port_tcp_s.port = net_htons(ports[random_u32(rng) % NUM_PORTS]);
|
||||
ip_port_tcp_s.ip = get_loopback();
|
||||
TCP_Client_Connection *conn = new_tcp_connection(logger, mem, mono_time, rng, ns, &ip_port_tcp_s,
|
||||
self_public_key, f_public_key, f_secret_key, nullptr);
|
||||
self_public_key, f_public_key, f_secret_key, nullptr, nullptr);
|
||||
ck_assert_msg(conn != nullptr, "Failed to create a TCP client connection.");
|
||||
|
||||
// Run the client's main loop but not the server.
|
||||
mono_time_update(mono_time);
|
||||
@ -734,10 +748,12 @@ static void test_tcp_connection(void)
|
||||
proxy_info.proxy_type = TCP_PROXY_NONE;
|
||||
crypto_new_keypair(rng, self_public_key, self_secret_key);
|
||||
TCP_Connections *tc_1 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info);
|
||||
ck_assert_msg(tc_1 != nullptr, "Failed to create TCP connections");
|
||||
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_1), self_public_key), "Wrong public key");
|
||||
|
||||
crypto_new_keypair(rng, self_public_key, self_secret_key);
|
||||
TCP_Connections *tc_2 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info);
|
||||
ck_assert_msg(tc_2 != nullptr, "Failed to create TCP connections");
|
||||
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_2), self_public_key), "Wrong public key");
|
||||
|
||||
IP_Port ip_port_tcp_s;
|
||||
@ -849,10 +865,12 @@ static void test_tcp_connection2(void)
|
||||
proxy_info.proxy_type = TCP_PROXY_NONE;
|
||||
crypto_new_keypair(rng, self_public_key, self_secret_key);
|
||||
TCP_Connections *tc_1 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info);
|
||||
ck_assert_msg(tc_1 != nullptr, "Failed to create TCP connections");
|
||||
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_1), self_public_key), "Wrong public key");
|
||||
|
||||
crypto_new_keypair(rng, self_public_key, self_secret_key);
|
||||
TCP_Connections *tc_2 = new_tcp_connections(logger, mem, rng, ns, mono_time, self_secret_key, &proxy_info);
|
||||
ck_assert_msg(tc_2 != nullptr, "Failed to create TCP connections");
|
||||
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_2), self_public_key), "Wrong public key");
|
||||
|
||||
IP_Port ip_port_tcp_s;
|
||||
|
@ -66,7 +66,7 @@ static void test_store_data(void)
|
||||
ck_assert(net != nullptr);
|
||||
DHT *dht = new_dht(log, mem, rng, ns, mono_time, net, true, true);
|
||||
ck_assert(dht != nullptr);
|
||||
Forwarding *forwarding = new_forwarding(log, rng, mono_time, dht);
|
||||
Forwarding *forwarding = new_forwarding(log, mem, rng, mono_time, dht);
|
||||
ck_assert(forwarding != nullptr);
|
||||
Announcements *announce = new_announcements(log, mem, rng, mono_time, forwarding);
|
||||
ck_assert(announce != nullptr);
|
||||
|
@ -444,9 +444,9 @@ void print_debug_log(Tox *m, Tox_Log_Level level, const char *file, uint32_t lin
|
||||
}
|
||||
}
|
||||
|
||||
void print_debug_logger(void *context, Logger_Level level, const char *file, int line, const char *func, const char *message, void *userdata)
|
||||
void print_debug_logger(void *context, Logger_Level level, const char *file, uint32_t line, const char *func, const char *message, void *userdata)
|
||||
{
|
||||
print_debug_log(nullptr, (Tox_Log_Level) level, file, (uint32_t) line, func, message, userdata);
|
||||
print_debug_log(nullptr, (Tox_Log_Level) level, file, line, func, message, userdata);
|
||||
}
|
||||
|
||||
Tox *tox_new_log_lan(struct Tox_Options *options, Tox_Err_New *err, void *log_user_data, bool lan_discovery)
|
||||
|
@ -60,7 +60,7 @@ void print_debug_log(Tox *m, Tox_Log_Level level, const char *file, uint32_t lin
|
||||
const char *message, void *user_data);
|
||||
|
||||
// Use this function when setting the log callback on a Logger object
|
||||
void print_debug_logger(void *context, Logger_Level level, const char *file, int line,
|
||||
void print_debug_logger(void *context, Logger_Level level, const char *file, uint32_t line,
|
||||
const char *func, const char *message, void *userdata);
|
||||
|
||||
Tox *tox_new_log(struct Tox_Options *options, Tox_Err_New *err, void *log_user_data);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* Copyright © 2016-2018 The TokTok team.
|
||||
* Copyright © 2016-2025 The TokTok team.
|
||||
* Copyright © 2016 Tox project.
|
||||
*/
|
||||
|
||||
|
@ -129,7 +129,7 @@ static Forwarding_Subtox *new_forwarding_subtox(const Memory *mem, bool no_udp,
|
||||
const TCP_Proxy_Info inf = {{{{0}}}};
|
||||
subtox->c = new_net_crypto(subtox->log, mem, rng, ns, subtox->mono_time, subtox->dht, &inf);
|
||||
|
||||
subtox->forwarding = new_forwarding(subtox->log, rng, subtox->mono_time, subtox->dht);
|
||||
subtox->forwarding = new_forwarding(subtox->log, mem, rng, subtox->mono_time, subtox->dht);
|
||||
ck_assert(subtox->forwarding != nullptr);
|
||||
|
||||
subtox->announce = new_announcements(subtox->log, mem, rng, subtox->mono_time, subtox->forwarding);
|
||||
|
@ -392,9 +392,9 @@ static void group_announce_test(AutoTox *autotoxes)
|
||||
ck_assert(s_err == TOX_ERR_GROUP_SELF_STATUS_SET_OK);
|
||||
|
||||
fprintf(stderr, "Peer 0 reconnecting...\n");
|
||||
Tox_Err_Group_Reconnect r_err;
|
||||
tox_group_reconnect(tox0, groupnumber, &r_err);
|
||||
ck_assert(r_err == TOX_ERR_GROUP_RECONNECT_OK);
|
||||
Tox_Err_Group_Join err_rejoin;
|
||||
tox_group_join(tox0, chat_id, (const uint8_t *)PEER0_NICK, PEER0_NICK_LEN, nullptr, 0, &err_rejoin);
|
||||
ck_assert(err_rejoin == TOX_ERR_GROUP_JOIN_OK);
|
||||
|
||||
while (state1->peer_joined_count != 2 && state0->self_joined_count == 2) {
|
||||
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
||||
|
134
external/toxcore/c-toxcore/auto_tests/netprof_test.c
vendored
Normal file
134
external/toxcore/c-toxcore/auto_tests/netprof_test.c
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
/** Auto Tests: basic network profile functionality test (UDP only)
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../toxcore/tox_private.h"
|
||||
#include "../toxcore/util.h"
|
||||
|
||||
#include "auto_test_support.h"
|
||||
#include "check_compat.h"
|
||||
|
||||
#define NUM_TOXES 2
|
||||
|
||||
static void test_netprof(AutoTox *autotoxes)
|
||||
{
|
||||
// Send some messages to create fake traffic
|
||||
for (size_t i = 0; i < 256; ++i) {
|
||||
for (uint32_t j = 0; j < NUM_TOXES; ++j) {
|
||||
tox_friend_send_message(autotoxes[j].tox, 0, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)"test", 4, nullptr);
|
||||
}
|
||||
|
||||
iterate_all_wait(autotoxes, NUM_TOXES, ITERATION_INTERVAL);
|
||||
}
|
||||
|
||||
// idle traffic for a while
|
||||
for (size_t i = 0; i < 100; ++i) {
|
||||
iterate_all_wait(autotoxes, NUM_TOXES, ITERATION_INTERVAL);
|
||||
}
|
||||
|
||||
const Tox *tox1 = autotoxes[0].tox;
|
||||
|
||||
const uint64_t UDP_count_sent1 = tox_netprof_get_packet_total_count(tox1, TOX_NETPROF_PACKET_TYPE_UDP,
|
||||
TOX_NETPROF_DIRECTION_SENT);
|
||||
const uint64_t UDP_count_recv1 = tox_netprof_get_packet_total_count(tox1, TOX_NETPROF_PACKET_TYPE_UDP,
|
||||
TOX_NETPROF_DIRECTION_RECV);
|
||||
const uint64_t TCP_count_sent1 = tox_netprof_get_packet_total_count(tox1, TOX_NETPROF_PACKET_TYPE_TCP,
|
||||
TOX_NETPROF_DIRECTION_SENT);
|
||||
const uint64_t TCP_count_recv1 = tox_netprof_get_packet_total_count(tox1, TOX_NETPROF_PACKET_TYPE_TCP,
|
||||
TOX_NETPROF_DIRECTION_RECV);
|
||||
|
||||
const uint64_t UDP_bytes_sent1 = tox_netprof_get_packet_total_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP,
|
||||
TOX_NETPROF_DIRECTION_SENT);
|
||||
const uint64_t UDP_bytes_recv1 = tox_netprof_get_packet_total_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP,
|
||||
TOX_NETPROF_DIRECTION_RECV);
|
||||
const uint64_t TCP_bytes_sent1 = tox_netprof_get_packet_total_bytes(tox1, TOX_NETPROF_PACKET_TYPE_TCP,
|
||||
TOX_NETPROF_DIRECTION_SENT);
|
||||
const uint64_t TCP_bytes_recv1 = tox_netprof_get_packet_total_bytes(tox1, TOX_NETPROF_PACKET_TYPE_TCP,
|
||||
TOX_NETPROF_DIRECTION_RECV);
|
||||
|
||||
ck_assert(UDP_count_recv1 > 0 && UDP_count_sent1 > 0);
|
||||
ck_assert(UDP_bytes_recv1 > 0 && UDP_bytes_sent1 > 0);
|
||||
|
||||
(void)TCP_count_sent1;
|
||||
(void)TCP_bytes_sent1;
|
||||
(void)TCP_bytes_recv1;
|
||||
(void)TCP_count_recv1;
|
||||
|
||||
uint64_t total_sent_count = 0;
|
||||
uint64_t total_recv_count = 0;
|
||||
uint64_t total_sent_bytes = 0;
|
||||
uint64_t total_recv_bytes = 0;
|
||||
|
||||
// tox1 makes sure the sum value of all packet ID's is equal to the totals
|
||||
for (size_t i = 0; i < 256; ++i) {
|
||||
// this id isn't valid for UDP packets but we still want to call the
|
||||
// functions and make sure they return some non-zero value
|
||||
if (i == TOX_NETPROF_PACKET_ID_TCP_DATA) {
|
||||
ck_assert(tox_netprof_get_packet_id_count(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_SENT) > 0);
|
||||
ck_assert(tox_netprof_get_packet_id_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_SENT) > 0);
|
||||
ck_assert(tox_netprof_get_packet_id_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_SENT) > 0);
|
||||
ck_assert(tox_netprof_get_packet_id_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_RECV) > 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
total_sent_count += tox_netprof_get_packet_id_count(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_SENT);
|
||||
total_recv_count += tox_netprof_get_packet_id_count(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_RECV);
|
||||
|
||||
total_sent_bytes += tox_netprof_get_packet_id_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_SENT);
|
||||
total_recv_bytes += tox_netprof_get_packet_id_bytes(tox1, TOX_NETPROF_PACKET_TYPE_UDP, i,
|
||||
TOX_NETPROF_DIRECTION_RECV);
|
||||
}
|
||||
|
||||
const uint64_t total_packets = total_sent_count + total_recv_count;
|
||||
ck_assert_msg(total_packets == UDP_count_sent1 + UDP_count_recv1,
|
||||
"%" PRIu64 "does not match %" PRIu64 "\n", total_packets, UDP_count_sent1 + UDP_count_recv1);
|
||||
|
||||
ck_assert_msg(total_sent_count == UDP_count_sent1, "%" PRIu64 " does not match %" PRIu64 "\n", total_sent_count, UDP_count_sent1);
|
||||
ck_assert_msg(total_recv_count == UDP_count_recv1, "%" PRIu64 " does not match %" PRIu64"\n", total_recv_count, UDP_count_recv1);
|
||||
|
||||
|
||||
const uint64_t total_bytes = total_sent_bytes + total_recv_bytes;
|
||||
ck_assert_msg(total_bytes == UDP_bytes_sent1 + UDP_bytes_recv1,
|
||||
"%" PRIu64 "does not match %" PRIu64 "\n", total_bytes, UDP_bytes_sent1 + UDP_bytes_recv1);
|
||||
|
||||
ck_assert_msg(total_sent_bytes == UDP_bytes_sent1, "%" PRIu64 " does not match %" PRIu64 "\n", total_sent_bytes, UDP_bytes_sent1);
|
||||
ck_assert_msg(total_recv_bytes == UDP_bytes_recv1, "%" PRIu64 " does not match %" PRIu64 "\n", total_recv_bytes, UDP_bytes_recv1);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
setvbuf(stdout, nullptr, _IONBF, 0);
|
||||
|
||||
Tox_Err_Options_New options_err;
|
||||
struct Tox_Options *tox_opts = tox_options_new(&options_err);
|
||||
|
||||
ck_assert_msg(options_err == TOX_ERR_OPTIONS_NEW_OK, "Failed to initialize tox options: %d\n", options_err);
|
||||
|
||||
tox_options_default(tox_opts);
|
||||
tox_options_set_udp_enabled(tox_opts, true);
|
||||
|
||||
Run_Auto_Options autotox_opts = default_run_auto_options();
|
||||
autotox_opts.graph = GRAPH_COMPLETE;
|
||||
|
||||
run_auto_test(tox_opts, NUM_TOXES, test_netprof, 0, &autotox_opts);
|
||||
|
||||
// TODO(Jfreegman): uncomment this when TCP autotests are fixed
|
||||
// tox_options_set_udp_enabled(tox_opts, false);
|
||||
// run_auto_test(tox_opts, NUM_TOXES, test_netprof, 0, &autotox_opts);
|
||||
|
||||
tox_options_free(tox_opts);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#undef NUM_TOXES
|
@ -1,9 +1,9 @@
|
||||
/* Tests that we can send messages to friends.
|
||||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "auto_test_support.h"
|
||||
|
||||
|
@ -71,22 +71,22 @@ static uint8_t *read_save(const char *save_path, size_t *length)
|
||||
|
||||
static void test_save_compatibility(const char *save_path)
|
||||
{
|
||||
struct Tox_Options options = {0};
|
||||
tox_options_default(&options);
|
||||
Tox_Options *options = tox_options_new(nullptr);
|
||||
ck_assert(options != nullptr);
|
||||
|
||||
size_t size = 0;
|
||||
uint8_t *save_data = read_save(save_path, &size);
|
||||
ck_assert_msg(save_data != nullptr, "error while reading save file '%s'", save_path);
|
||||
|
||||
options.savedata_data = save_data;
|
||||
options.savedata_length = size;
|
||||
options.savedata_type = TOX_SAVEDATA_TYPE_TOX_SAVE;
|
||||
tox_options_set_savedata_type(options, TOX_SAVEDATA_TYPE_TOX_SAVE);
|
||||
tox_options_set_savedata_data(options, save_data, size);
|
||||
|
||||
size_t index = 0;
|
||||
Tox_Err_New err;
|
||||
Tox *tox = tox_new_log(&options, &err, &index);
|
||||
Tox *tox = tox_new_log(options, &err, &index);
|
||||
ck_assert_msg(tox, "failed to create tox, error number: %d", err);
|
||||
|
||||
tox_options_free(options);
|
||||
free(save_data);
|
||||
|
||||
const size_t name_size = tox_self_get_name_size(tox);
|
||||
@ -145,7 +145,10 @@ static bool is_little_endian(void)
|
||||
// cppcheck-suppress constParameter
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
char base_path[4096] = {0};
|
||||
const size_t base_path_size = 4096;
|
||||
char *base_path = (char *)malloc(base_path_size);
|
||||
ck_assert(base_path != nullptr);
|
||||
memset(base_path, 0, 4096);
|
||||
|
||||
if (argc <= 1) {
|
||||
const char *srcdir = getenv("srcdir");
|
||||
@ -154,21 +157,29 @@ int main(int argc, char *argv[])
|
||||
srcdir = ".";
|
||||
}
|
||||
|
||||
snprintf(base_path, sizeof(base_path), "%s", srcdir);
|
||||
snprintf(base_path, base_path_size, "%s", srcdir);
|
||||
} else {
|
||||
snprintf(base_path, sizeof(base_path), "%s", argv[1]);
|
||||
snprintf(base_path, base_path_size, "%s", argv[1]);
|
||||
base_path[strrchr(base_path, '/') - base_path] = '\0';
|
||||
}
|
||||
|
||||
if (is_little_endian()) {
|
||||
char save_path[4096 + sizeof(LOADED_SAVE_FILE_LITTLE)];
|
||||
snprintf(save_path, sizeof(save_path), "%s/%s", base_path, LOADED_SAVE_FILE_LITTLE);
|
||||
const size_t save_path_size = 4096 + sizeof(LOADED_SAVE_FILE_LITTLE);
|
||||
char *save_path = (char *)malloc(save_path_size);
|
||||
ck_assert(save_path != nullptr);
|
||||
snprintf(save_path, save_path_size, "%s/%s", base_path, LOADED_SAVE_FILE_LITTLE);
|
||||
test_save_compatibility(save_path);
|
||||
free(save_path);
|
||||
} else {
|
||||
char save_path[4096 + sizeof(LOADED_SAVE_FILE_BIG)];
|
||||
snprintf(save_path, sizeof(save_path), "%s/%s", base_path, LOADED_SAVE_FILE_BIG);
|
||||
const size_t save_path_size = 4096 + sizeof(LOADED_SAVE_FILE_BIG);
|
||||
char *save_path = (char *)malloc(save_path_size);
|
||||
ck_assert(save_path != nullptr);
|
||||
snprintf(save_path, save_path_size, "%s/%s", base_path, LOADED_SAVE_FILE_BIG);
|
||||
test_save_compatibility(save_path);
|
||||
free(save_path);
|
||||
}
|
||||
|
||||
free(base_path);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -5,12 +5,19 @@
|
||||
|
||||
#include "auto_test_support.h"
|
||||
|
||||
#ifndef USE_IPV6
|
||||
#define USE_IPV6 1
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
setvbuf(stdout, nullptr, _IONBF, 0);
|
||||
|
||||
struct Tox_Options *opts = tox_options_new(nullptr);
|
||||
tox_options_set_udp_enabled(opts, false);
|
||||
#if !USE_IPV6
|
||||
tox_options_set_ipv6_enabled(opts, false);
|
||||
#endif
|
||||
Tox *tox_tcp = tox_new_log(opts, nullptr, nullptr);
|
||||
tox_options_free(opts);
|
||||
|
||||
|
Reference in New Issue
Block a user