diff --git a/dist/share/configs/network/kelvin-testnet.cfg.tpl b/dist/share/configs/network/kelvin-testnet.cfg.tpl index e8b24b01e87d4864bfa06f199e607e7ae0cb03ef..eec07ab4b8da05980819d1d101ebf9069d14c9e2 100755 --- a/dist/share/configs/network/kelvin-testnet.cfg.tpl +++ b/dist/share/configs/network/kelvin-testnet.cfg.tpl @@ -10,7 +10,7 @@ node-alias=addr-%node_addr% gdb_groups_prefix=kelvin.testnet seed_nodes_ipv4=[159.89.228.115,165.227.17.239,104.248.89.205,157.230.240.104,167.99.87.197,46.101.149.240,159.89.122.48] seed_nodes_aliases=[kelvin.testnet.root.0,kelvin.testnet.root.1,kelvin.testnet.root.2,kelvin.testnet.root.3,kelvin.testnet.root.4,kelvin.testnet.root.5,kelvin.testnet.root.6] -seed_nodes_addr=[ffff::0000::0000::0001,ffff::0000::0000::0002,ffff::0000::0000::0003,ffff::0000::0000::0004,ffff::0000::0000::0005,ffff::0000::0000::0006,ffff::0000::0000::0007] +seed_nodes_addrs=[ffff::0000::0000::0001,ffff::0000::0000::0002,ffff::0000::0000::0003,ffff::0000::0000::0004,ffff::0000::0000::0005,ffff::0000::0000::0006,ffff::0000::0000::0007] #[dag-poa] #events-sign-cert=mycert diff --git a/libdap b/libdap index d40599923167e43addcc61696b8ea75b2e2abcd7..5b72cc303107680535c4591313033611b01c4a0b 160000 --- a/libdap +++ b/libdap @@ -1 +1 @@ -Subproject commit d40599923167e43addcc61696b8ea75b2e2abcd7 +Subproject commit 5b72cc303107680535c4591313033611b01c4a0b diff --git a/libdap-chain-gdb b/libdap-chain-gdb index 28b6050053ea76b24a5dbb5b41fdaac60610dd28..d5d15ff217801c17bbdb57aca9f6614a8b868113 160000 --- a/libdap-chain-gdb +++ b/libdap-chain-gdb @@ -1 +1 @@ -Subproject commit 28b6050053ea76b24a5dbb5b41fdaac60610dd28 +Subproject commit d5d15ff217801c17bbdb57aca9f6614a8b868113 diff --git a/libdap-chain-global-db b/libdap-chain-global-db index a3eff15ef836881074bc4b5122d4d46b14f44678..739a61ab34c856df96b58f1917f9bd93e0a33b95 160000 --- a/libdap-chain-global-db +++ b/libdap-chain-global-db @@ -1 +1 @@ -Subproject commit a3eff15ef836881074bc4b5122d4d46b14f44678 +Subproject commit 739a61ab34c856df96b58f1917f9bd93e0a33b95 diff --git a/libdap-crypto b/libdap-crypto index 15c4ba05ada6cc0b8d4a56c58978ae1e2b095702..ff63d762657f9687173db825705b8bf4b958abee 160000 --- a/libdap-crypto +++ b/libdap-crypto @@ -1 +1 @@ -Subproject commit 15c4ba05ada6cc0b8d4a56c58978ae1e2b095702 +Subproject commit ff63d762657f9687173db825705b8bf4b958abee diff --git a/libdap-stream-ch-chain b/libdap-stream-ch-chain index d07e3f3df873e93d64d9bb90737c059eea6c31ad..688472966c733da5b555e28f2b23311b3cf60cf2 160000 --- a/libdap-stream-ch-chain +++ b/libdap-stream-ch-chain @@ -1 +1 @@ -Subproject commit d07e3f3df873e93d64d9bb90737c059eea6c31ad +Subproject commit 688472966c733da5b555e28f2b23311b3cf60cf2 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 945ebdb98ac298dc7dbde427b4357ef069c4cae2..5c72658ff53b5f031a70630689da7c064b15c16e 100755 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -10,7 +10,7 @@ file(GLOB HEADERS *.h) add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS}) -target_link_libraries(${PROJECT_NAME} dap_core) +target_link_libraries(${PROJECT_NAME} dap_core dap_test dap_chain_global_db) add_test( NAME kelvin_node_test diff --git a/test/dap_global_db_test.c b/test/dap_global_db_test.c new file mode 100644 index 0000000000000000000000000000000000000000..c3da75b9ccc461d57d533c7da3a1310fa94199a5 --- /dev/null +++ b/test/dap_global_db_test.c @@ -0,0 +1,135 @@ +#include <time.h> +#include <unistd.h> + +#include "dap_common.h" +#include "dap_strfuncs.h" +//#include "dap_list.h" +#include "dap_chain_global_db.h" +#include "dap_chain_global_db_driver.h" +#include "dap_global_db_test.h" + +#define DB_FILE "./base.sqlite" + +static void test_create_db(void) +{ + unlink(DB_FILE); + int res = dap_db_driver_init("sqlite", DB_FILE); + dap_assert(!res, "Test init global_db"); +} +static void test_write_read_one(void) +{ + dap_store_obj_t *l_store_obj = DAP_NEW_Z(dap_store_obj_t); + size_t l_store_count = 1; + l_store_obj->type = 'a'; + l_store_obj->key = dap_strdup("key"); + l_store_obj->group = dap_strdup("section.1"); + l_store_obj->timestamp = time(NULL); + l_store_obj->value_len = rand() % 100; + l_store_obj->value = DAP_NEW_SIZE(uint8_t, l_store_obj->value_len); + for(size_t i = 0; i < l_store_obj->value_len; i++) { + l_store_obj->value[i] = rand(); + } + int ret = dap_chain_global_db_driver_add(l_store_obj, l_store_count); + + dap_store_obj_t *l_store_obj2 = dap_chain_global_db_driver_read(l_store_obj->group, l_store_obj->key, NULL); + + dap_assert_PIF(l_store_obj2, "Read global_db entry"); + + // compare l_store_obj and l_store_obj + if(l_store_obj->timestamp == l_store_obj2->timestamp && + l_store_obj->value_len == l_store_obj2->value_len && + l_store_obj->value && l_store_obj2->value && + !memcmp(l_store_obj->value, l_store_obj2->value, l_store_obj->value_len)) { + dap_assert_PIF(1, "Check read entry"); + } + else { + dap_assert_PIF(0, "Check read entry"); + } + + dap_store_obj_free(l_store_obj, 1); + dap_store_obj_free(l_store_obj2, 1); + + + dap_assert(1, "Test dap_global_db one record"); + +} + +static void test_close_db(void) +{ + dap_db_driver_deinit();//dap_chain_global_db_deinit(); + dap_assert(1, "Test close global_db"); +} + +static void test_write_db_count(void) +{ + int a_count = 20000; + dap_store_obj_t *l_store_obj = DAP_NEW_Z_SIZE(dap_store_obj_t, sizeof(dap_store_obj_t) * a_count); + size_t l_store_count = 1; + for(size_t n = 0; n < a_count; n++) { + dap_store_obj_t *l_store_obj_cur = l_store_obj + n; + l_store_obj_cur->type = 'a'; + l_store_obj_cur->key = dap_strdup_printf("key_%d", rand()); + l_store_obj_cur->group = dap_strdup("section.1"); + l_store_obj_cur->timestamp = time(NULL); + l_store_obj_cur->value_len = 10 + rand() % 100; + l_store_obj_cur->value = DAP_NEW_SIZE(uint8_t, l_store_obj_cur->value_len); + for(size_t i = 0; i < l_store_obj_cur->value_len; i++) { + l_store_obj_cur->value[i] = rand(); + } + } + //dap_test_msg("Start test write dap_global_db %d record", a_count); + int ret = dap_chain_global_db_driver_add(l_store_obj, a_count); + + //dap_test_msg("Read first record"); + dap_store_obj_t *l_store_obj2 = dap_chain_global_db_driver_read(l_store_obj->group, l_store_obj->key, NULL); + dap_store_obj_free(l_store_obj2, 1); + //dap_test_msg("Start test read dap_global_db %d record", a_count); + for(size_t n = 1; n < a_count; n++) { + dap_store_obj_t *l_store_obj2 = dap_chain_global_db_driver_read(l_store_obj->group, l_store_obj->key, NULL); + dap_assert_PIF(l_store_obj2, "Read data"); + // compare l_store_obj and l_store_obj + if(l_store_obj->timestamp == l_store_obj2->timestamp && + l_store_obj->value_len == l_store_obj2->value_len && + l_store_obj->value && l_store_obj2->value && + !memcmp(l_store_obj->value, l_store_obj2->value, l_store_obj->value_len)) { + ; + } + else { + dap_assert_PIF(0, "Check read entry"); + } + dap_store_obj_free(l_store_obj2, 1); + } + //dap_assert_PIF(1, "Read global_db entry"); + + dap_store_obj_free(l_store_obj, a_count); + + //dap_usleep(5 * DAP_USEC_PER_SEC); + //dap_assert(1, "Test dap_global_db"); + +} + +void dap_global_db_tests_run(void) +{ + dap_print_module_name("dap_global_db"); + + unlink(DB_FILE); + test_create_db(); + test_write_read_one(); +// test_write_db_count(1000000); + + benchmark_mgs_time("Read and Write in global_db 20000 records", + benchmark_test_time(test_write_db_count, 1)); + //dap_assert(1, "Test dap_global_db: write and read 20000 records"); + +/* + benchmark_mgs_time("Read and Write in global_db 100 times", + benchmark_test_time(test_write_db_count, 1)); + dap_assert(1, "Test dap_global_db 100 records"); +*/ + +// benchmark_mgs_rate("Read and Write in global_db", +// benchmark_test_rate(test_write_db_count, 2000)); + + //dap_usleep(2 * DAP_USEC_PER_SEC); + test_close_db(); +} diff --git a/test/dap_global_db_test.h b/test/dap_global_db_test.h new file mode 100644 index 0000000000000000000000000000000000000000..00bae493c7fcdb9e0c3102f624674a3ec4422bb5 --- /dev/null +++ b/test/dap_global_db_test.h @@ -0,0 +1,4 @@ +#pragma once +#include "libdap-test/dap_test.h" + +extern void dap_global_db_tests_run(void); diff --git a/test/main.c b/test/main.c index d015aec2588f35b803c5923f045beeb994a85583..65d0a5bac53333edfb0da55adc1aad3828e0329d 100755 --- a/test/main.c +++ b/test/main.c @@ -1,7 +1,10 @@ +#include "dap_global_db_test.h" #include "dap_common.h" + int main(void) { // switch off debug info from library - set_log_level(L_CRITICAL); + dap_log_level_set(L_CRITICAL); + dap_global_db_tests_run(); return 0; }