Skip to content

Commit

Permalink
refactor: Move some OS-specifics into tox_system.
Browse files Browse the repository at this point in the history
  • Loading branch information
iphydf committed Aug 30, 2023
1 parent ad368fe commit eabbcc8
Show file tree
Hide file tree
Showing 152 changed files with 2,521 additions and 950 deletions.
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
_build
_install
3 changes: 3 additions & 0 deletions .github/scripts/flags-clang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ add_flag -Weverything

# Disable specific warning flags for both C and C++.

# TODO(iphydf): Investigate these.
add_flag -Wno-unsafe-buffer-usage

# Very verbose, not very useful. This warns about things like int -> uint
# conversions that change sign without a cast and narrowing conversions.
add_flag -Wno-conversion
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/flags.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ add_flag -O3 -march=native
# Warn on non-ISO C.
add_c_flag -pedantic
add_c_flag -std=c99
add_cxx_flag -std=c++11
add_cxx_flag -std=c++17

add_flag -g3
add_flag -ftrapv
36 changes: 33 additions & 3 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,49 @@ project()
genrule(
name = "public_headers",
srcs = [
"toxav.h",
"tox.h",
"toxencryptsave.h",
"//c-toxcore/toxav:toxav.h",
"//c-toxcore/toxcore:tox.h",
"//c-toxcore/toxcore:tox_attributes.h",
"//c-toxcore/toxcore:tox_logger.h",
"//c-toxcore/toxcore:tox_memory.h",
"//c-toxcore/toxcore:tox_network.h",
"//c-toxcore/toxcore:tox_random.h",
"//c-toxcore/toxcore:tox_system.h",
"//c-toxcore/toxcore:tox_time.h",
"//c-toxcore/toxencryptsave:toxencryptsave.h",
],
outs = [
"tox/toxav.h",
"tox/tox.h",
"tox/toxencryptsave.h",
"tox/toxav/toxav.h",
"tox/toxcore/tox.h",
"tox/toxcore/tox_attributes.h",
"tox/toxcore/tox_logger.h",
"tox/toxcore/tox_memory.h",
"tox/toxcore/tox_network.h",
"tox/toxcore/tox_random.h",
"tox/toxcore/tox_system.h",
"tox/toxcore/tox_time.h",
"tox/toxencryptsave/toxencryptsave.h",
],
cmd = """
cp $(location //c-toxcore/toxav:toxav.h) $(GENDIR)/c-toxcore/tox/toxav.h
cp $(location //c-toxcore/toxcore:tox.h) $(GENDIR)/c-toxcore/tox/tox.h
cp $(location //c-toxcore/toxencryptsave:toxencryptsave.h) $(GENDIR)/c-toxcore/tox/toxencryptsave.h
cp $(location toxav.h) $(GENDIR)/c-toxcore/tox/toxav.h
cp $(location tox.h) $(GENDIR)/c-toxcore/tox/tox.h
cp $(location toxencryptsave.h) $(GENDIR)/c-toxcore/tox/toxencryptsave.h
cp $(location //c-toxcore/toxav:toxav.h) $(GENDIR)/c-toxcore/tox/toxav/toxav.h
cp $(location //c-toxcore/toxcore:tox.h) $(GENDIR)/c-toxcore/tox/toxcore/tox.h
cp $(location //c-toxcore/toxcore:tox_attributes.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_attributes.h
cp $(location //c-toxcore/toxcore:tox_logger.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_logger.h
cp $(location //c-toxcore/toxcore:tox_memory.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_memory.h
cp $(location //c-toxcore/toxcore:tox_network.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_network.h
cp $(location //c-toxcore/toxcore:tox_random.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_random.h
cp $(location //c-toxcore/toxcore:tox_system.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_system.h
cp $(location //c-toxcore/toxcore:tox_time.h) $(GENDIR)/c-toxcore/tox/toxcore/tox_time.h
cp $(location //c-toxcore/toxencryptsave:toxencryptsave.h) $(GENDIR)/c-toxcore/tox/toxencryptsave/toxencryptsave.h
""",
visibility = ["//visibility:public"],
)
Expand Down
39 changes: 37 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,17 @@ set(toxcore_SOURCES
toxcore/onion_client.c
toxcore/onion_client.h
toxcore/onion.h
toxcore/os_logger.c
toxcore/os_logger.h
toxcore/os_memory.c
toxcore/os_memory.h
toxcore/os_network.c
toxcore/os_network.h
toxcore/os_network_impl.h
toxcore/os_random.c
toxcore/os_random.h
toxcore/os_system.c
toxcore/os_system.h
toxcore/ping_array.c
toxcore/ping_array.h
toxcore/ping.c
Expand All @@ -302,11 +313,29 @@ set(toxcore_SOURCES
toxcore/timed_auth.h
toxcore/tox_api.c
toxcore/tox.c
toxcore/tox.h
toxcore/tox_dispatch.c
toxcore/tox_dispatch.h
toxcore/tox_events.c
toxcore/tox_events.h
toxcore/tox.h
toxcore/tox_logger.c
toxcore/tox_logger.h
toxcore/tox_logger_impl.h
toxcore/tox_memory.c
toxcore/tox_memory.h
toxcore/tox_memory_impl.h
toxcore/tox_network.c
toxcore/tox_network.h
toxcore/tox_network_impl.h
toxcore/tox_random.c
toxcore/tox_random.h
toxcore/tox_random_impl.h
toxcore/tox_system.c
toxcore/tox_system.h
toxcore/tox_system_impl.h
toxcore/tox_time.c
toxcore/tox_time.h
toxcore/tox_time_impl.h
toxcore/tox_private.c
toxcore/tox_private.h
toxcore/tox_unpack.c
Expand All @@ -317,8 +346,14 @@ set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${LIBSODIUM_LIBRARIES})
set(toxcore_PKGCONFIG_REQUIRES ${toxcore_PKGCONFIG_REQUIRES} libsodium)
set(toxcore_API_HEADERS
${toxcore_SOURCE_DIR}/toxcore/tox.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_dispatch.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_events.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_dispatch.h^tox)
${toxcore_SOURCE_DIR}/toxcore/tox_logger.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_memory.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_network.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_random.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_system.h^tox
${toxcore_SOURCE_DIR}/toxcore/tox_time.h^tox)

################################################################################
#
Expand Down
5 changes: 5 additions & 0 deletions auto_tests/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ cc_library(
"//c-toxcore/toxcore:Messenger",
"//c-toxcore/toxcore:mono_time",
"//c-toxcore/toxcore:tox",
"//c-toxcore/toxcore:tox_time",
],
)

Expand Down Expand Up @@ -61,9 +62,13 @@ flaky_tests = {
"//c-toxcore/toxcore:onion",
"//c-toxcore/toxcore:onion_announce",
"//c-toxcore/toxcore:onion_client",
"//c-toxcore/toxcore:os_memory",
"//c-toxcore/toxcore:os_network",
"//c-toxcore/toxcore:os_random",
"//c-toxcore/toxcore:tox",
"//c-toxcore/toxcore:tox_dispatch",
"//c-toxcore/toxcore:tox_events",
"//c-toxcore/toxcore:tox_time",
"//c-toxcore/toxcore:util",
"//c-toxcore/toxencryptsave",
"@libsodium",
Expand Down
51 changes: 27 additions & 24 deletions auto_tests/TCP_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
#include "../toxcore/TCP_server.h"
#include "../toxcore/crypto_core.h"
#include "../toxcore/mono_time.h"
#include "../toxcore/os_random.h"
#include "../toxcore/os_network.h"
#include "../toxcore/os_memory.h"
#include "../toxcore/util.h"
#include "auto_test_support.h"

Expand Down Expand Up @@ -45,14 +48,14 @@ static uint16_t ports[NUM_PORTS] = {13215, 33445, 25643};

static void test_basic(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);
Logger *logger = logger_new();
logger_callback_log(logger, print_debug_logger, nullptr, nullptr);

Expand Down Expand Up @@ -303,14 +306,14 @@ static int read_packet_sec_TCP(const Logger *logger, struct sec_TCP_con *con, ui

static void test_some(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);
Logger *logger = logger_new();

uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
Expand Down Expand Up @@ -498,15 +501,15 @@ static int oob_data_callback(void *object, const uint8_t *public_key, const uint

static void test_client(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Logger *logger = logger_new();
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);

uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
Expand Down Expand Up @@ -632,14 +635,14 @@ static void test_client(void)
// Test how the client handles servers that don't respond.
static void test_client_invalid(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);
Logger *logger = logger_new();

uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
Expand Down Expand Up @@ -711,14 +714,14 @@ static int tcp_data_callback(void *object, int id, const uint8_t *data, uint16_t

static void test_tcp_connection(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);
Logger *logger = logger_new();

tcp_data_callback_called = 0;
Expand Down Expand Up @@ -824,14 +827,14 @@ static int tcp_oobdata_callback(void *object, const uint8_t *public_key, unsigne

static void test_tcp_connection2(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);
Logger *logger = logger_new();

tcp_oobdata_callback_called = 0;
Expand Down
13 changes: 8 additions & 5 deletions auto_tests/announce_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@
#include "../toxcore/mono_time.h"
#include "../toxcore/forwarding.h"
#include "../toxcore/net_crypto.h"
#include "../toxcore/os_memory.h"
#include "../toxcore/os_network.h"
#include "../toxcore/os_random.h"
#include "../toxcore/util.h"
#include "auto_test_support.h"
#include "check_compat.h"

static void test_bucketnum(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
uint8_t key1[CRYPTO_PUBLIC_KEY_SIZE], key2[CRYPTO_PUBLIC_KEY_SIZE];
random_bytes(rng, key1, sizeof(key1));
Expand Down Expand Up @@ -50,17 +53,17 @@ static void test_announce_data(void *object, const uint8_t *data, uint16_t lengt

static void test_store_data(void)
{
const Random *rng = system_random();
const Random *rng = os_random();
ck_assert(rng != nullptr);
const Network *ns = system_network();
const Network *ns = os_network();
ck_assert(ns != nullptr);
const Memory *mem = system_memory();
const Memory *mem = os_memory();
ck_assert(mem != nullptr);

Logger *log = logger_new();
ck_assert(log != nullptr);
logger_callback_log(log, print_debug_logger, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
Mono_Time *mono_time = mono_time_new(mem, nullptr);
Networking_Core *net = new_networking_no_udp(log, mem, ns);
DHT *dht = new_dht(log, mem, rng, ns, mono_time, net, true, true);
Forwarding *forwarding = new_forwarding(log, rng, mono_time, dht);
Expand Down
18 changes: 15 additions & 3 deletions auto_tests/auto_test_support.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
#include "../toxcore/Messenger.h"
#include "../toxcore/mono_time.h"
#include "../toxcore/tox_struct.h"
#include "../toxcore/tox_time_impl.h"

#include "auto_test_support.h"

#ifndef ABORT_ON_LOG_ERROR
#define ABORT_ON_LOG_ERROR true
#endif

Run_Auto_Options default_run_auto_options()
Run_Auto_Options default_run_auto_options(void)
{
return (Run_Auto_Options) {
.graph = GRAPH_COMPLETE,
Expand Down Expand Up @@ -159,15 +160,23 @@ static uint64_t get_state_clock_callback(void *user_data)
return *clock;
}

static const Tox_Time_Funcs autotox_time_funcs = {
get_state_clock_callback,
};

void set_mono_time_callback(AutoTox *autotox)
{
ck_assert(autotox != nullptr);

if (autotox->tm == nullptr) {
autotox->tm = tox_time_new(&autotox_time_funcs, &autotox->clock, autotox->tox->sys.mem);
}

Mono_Time *mono_time = autotox->tox->mono_time;

autotox->clock = current_time_monotonic(mono_time);
mono_time_set_current_time_callback(mono_time, nullptr, nullptr); // set to default first
mono_time_set_current_time_callback(mono_time, get_state_clock_callback, &autotox->clock);
mono_time_set_current_time_callback(mono_time, nullptr); // set to default first
mono_time_set_current_time_callback(mono_time, autotox->tm);
}

void save_autotox(AutoTox *autotox)
Expand All @@ -193,6 +202,8 @@ void kill_autotox(AutoTox *autotox)
fprintf(stderr, "Killing #%u\n", autotox->index);
autotox->alive = false;
tox_kill(autotox->tox);
tox_time_free(autotox->tm);
autotox->tm = nullptr;
}

void reload(AutoTox *autotox)
Expand Down Expand Up @@ -380,6 +391,7 @@ void run_auto_test(struct Tox_Options *options, uint32_t tox_count, void test(Au

for (uint32_t i = 0; i < tox_count; ++i) {
tox_kill(autotoxes[i].tox);
tox_time_free(autotoxes[i].tm);
free(autotoxes[i].state);
free(autotoxes[i].save_state);
}
Expand Down
1 change: 1 addition & 0 deletions auto_tests/auto_test_support.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

typedef struct AutoTox {
Tox *tox;
Tox_Time *tm;

uint32_t index;
uint64_t clock;
Expand Down
Loading

0 comments on commit eabbcc8

Please sign in to comment.