From 822337c7e40abe1df813d44fad0f8c62ba0b9606 Mon Sep 17 00:00:00 2001 From: armatusmiles <akurotych@gmail.com> Date: Tue, 28 Aug 2018 20:45:02 +0300 Subject: [PATCH] [+] test module, dap_traffic_track_test --- .gitmodules | 3 +++ CMakeLists.txt | 5 +++++ dap_traffic_track.c | 10 +++++++--- libdap | 2 +- test/CMakeLists.txt | 18 ++++++++++++++++++ test/dap_traffic_track_test.c | 36 +++++++++++++++++++++++++++++++++++ test/dap_traffic_track_test.h | 6 ++++++ test/libdap-test | 1 + test/main.c | 8 ++++++++ 9 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 test/CMakeLists.txt create mode 100644 test/dap_traffic_track_test.c create mode 100644 test/dap_traffic_track_test.h create mode 160000 test/libdap-test create mode 100644 test/main.c diff --git a/.gitmodules b/.gitmodules index eb0b9c6..8b04d9f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "libdap"] path = libdap url = https://github.com/kelvinblockchain/libdap +[submodule "test/libdap-test"] + path = test/libdap-test + url = https://github.com/kelvinblockchain/libdap-test diff --git a/CMakeLists.txt b/CMakeLists.txt index b3defb0..a6dc514 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,11 @@ project (dap_core_server C) add_subdirectory(libdap) +if(BUILD_DAP_CORE_SERVER_TESTS) + enable_testing() + add_subdirectory(test) +endif() + file(GLOB SOURCES *.c) file(GLOB HEADERS *.h) diff --git a/dap_traffic_track.c b/dap_traffic_track.c index 007888a..f5eacb9 100644 --- a/dap_traffic_track.c +++ b/dap_traffic_track.c @@ -3,14 +3,18 @@ #define LOG_TAG "dap_traffic_track" -static dap_traffic_callback_t callback; +static dap_traffic_callback_t callback = NULL; static dap_server_client_t * server_clients; static ev_timer timeout_watcher; static struct ev_loop *loop; static void timeout_cb() { - log_it(L_DEBUG, "timeout_cb CB"); + if(callback != NULL) { + callback(NULL, NULL); + return; + } + log_it(L_WARNING, "Callback is NULL!"); } void dap_traffic_track_init(dap_server_client_t * clients, @@ -26,7 +30,7 @@ void dap_traffic_track_init(dap_server_client_t * clients, void dap_traffic_track_deinit() { - ev_timer_stop (loop, &timeout_watcher); + ev_timer_stop(loop, &timeout_watcher); log_it(L_NOTICE, "Deinitialized traffic track module"); } diff --git a/libdap b/libdap index 811a068..11bb25f 160000 --- a/libdap +++ b/libdap @@ -1 +1 @@ -Subproject commit 811a0685b4150a2576810bf424e07b625994126a +Subproject commit 11bb25f6c77e6018f4c47060da0e3a6ce6fa44cf diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..e1e3b65 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,18 @@ +if(TARGET core_server_test) + return() # The project has already been built. +endif() +project(core_server_test) + +add_subdirectory(libdap-test) + +file(GLOB SOURCES *.c) +file(GLOB HEADERS *.h) + +add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS}) + +target_link_libraries(${PROJECT_NAME} dap_test dap_core_server ev) + +add_test( + NAME core_server_test + COMMAND core_server_test +) diff --git a/test/dap_traffic_track_test.c b/test/dap_traffic_track_test.c new file mode 100644 index 0000000..b879104 --- /dev/null +++ b/test/dap_traffic_track_test.c @@ -0,0 +1,36 @@ +#include "dap_traffic_track_test.h" +#include <ev.h> + +static struct ev_loop *loop; +#define LOG_TAG "DTTT" + +static void success_callback() { + // this causes the innermost ev_run to stop iterating + dap_pass_msg("Call callback function"); + ev_break (EV_A_ EVBREAK_ONE); +} + +static void error_callback() { + log_it(L_ERROR, "ERROR CB"); + dap_fail("Error callback call, success_callback has no been called"); +} + +static void test_callback() { + time_t timeout_sucess = 1; + loop = EV_DEFAULT; + dap_traffic_track_init(NULL, 1/* timeout sucess_callback*/); + dap_traffic_set_callback(success_callback); + + /* Add error watcher*/ + static ev_timer timeout_error_watcher; + ev_init(&timeout_error_watcher, error_callback); + ev_timer_init (&timeout_error_watcher, error_callback, timeout_sucess * 2, 0.); + ev_timer_start (loop, &timeout_error_watcher); + ev_run (loop, 0); +} + + +void dap_traffic_track_tests_run(void) { + dap_print_module_name("traffic_track"); + test_callback(); +} diff --git a/test/dap_traffic_track_test.h b/test/dap_traffic_track_test.h new file mode 100644 index 0000000..3c7901c --- /dev/null +++ b/test/dap_traffic_track_test.h @@ -0,0 +1,6 @@ +#pragma once +#include "dap_test.h" +#include "dap_traffic_track.h" +#include "dap_common.h" + +extern void dap_traffic_track_tests_run(void); diff --git a/test/libdap-test b/test/libdap-test new file mode 160000 index 0000000..c6580b9 --- /dev/null +++ b/test/libdap-test @@ -0,0 +1 @@ +Subproject commit c6580b9c49f79e0cd6f8dff3465a91d7aefa0428 diff --git a/test/main.c b/test/main.c new file mode 100644 index 0000000..502b770 --- /dev/null +++ b/test/main.c @@ -0,0 +1,8 @@ +#include "dap_common.h" +#include "dap_traffic_track_test.h" + +int main(void) { + // switch off debug info from library + set_log_level(L_CRITICAL); + dap_traffic_track_tests_run(); +} -- GitLab