3
0
mirror of https://github.com/isar/libmdbx.git synced 2025-04-01 14:52:57 +08:00

mdbx-tests: перехват и логирование исключений в extra-C++ тестах (backport).

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2025-03-20 01:56:55 +03:00
parent 59343d9106
commit e11d419d20
11 changed files with 119 additions and 52 deletions

@ -349,12 +349,7 @@ bool simple(mdbx::env env) {
return true; return true;
} }
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_NOTICE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
mdbx::path db_filename = "test-crunched-del"; mdbx::path db_filename = "test-crunched-del";
mdbx::env::remove(db_filename); mdbx::env::remove(db_filename);
@ -392,3 +387,15 @@ int main(int argc, const char *argv[]) {
std::cout << "OK\n"; std::cout << "OK\n";
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_NOTICE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -316,12 +316,7 @@ bool case1(mdbx::env env) {
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_NOTICE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
mdbx::path db_filename = "test-cursor-closing"; mdbx::path db_filename = "test-cursor-closing";
mdbx::env::remove(db_filename); mdbx::env::remove(db_filename);
@ -339,3 +334,15 @@ int main(int argc, const char *argv[]) {
return EXIT_FAILURE; return EXIT_FAILURE;
} }
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_NOTICE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -11,12 +11,7 @@ static void logger_nofmt(MDBX_log_level_t loglevel, const char *function, int li
fprintf(stdout, "%s:%u %s", function, line, msg); fprintf(stdout, "%s:%u %s", function, line, msg);
} }
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_NOTICE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
mdbx::path db_filename = "test-dbi"; mdbx::path db_filename = "test-dbi";
mdbx::env::remove(db_filename); mdbx::env::remove(db_filename);
@ -71,3 +66,15 @@ int main(int argc, const char *argv[]) {
std::cout << "OK\n"; std::cout << "OK\n";
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_NOTICE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -211,10 +211,7 @@ static bool test(mdbx::txn txn, mdbx::map_handle dbi) {
return ok; return ok;
} }
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx::path db_filename = "test-posi"; mdbx::path db_filename = "test-posi";
mdbx::env_managed::remove(db_filename); mdbx::env_managed::remove(db_filename);
mdbx::env_managed env(db_filename, mdbx::env_managed::create_parameters(), mdbx::env::operate_parameters(3)); mdbx::env_managed env(db_filename, mdbx::env_managed::create_parameters(), mdbx::env::operate_parameters(3));
@ -243,3 +240,14 @@ int main(int argc, const char *argv[]) {
std::cout << "OK\n"; std::cout << "OK\n";
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -25,7 +25,7 @@ int main() {
MDBX_val key, data; MDBX_val key, data;
MDBX_txn *txn = NULL; MDBX_txn *txn = NULL;
const char *db_filename = "./example-db"; const char *db_filename = "./test-dupfix-addodd";
mdbx_env_delete(db_filename, MDBX_ENV_JUST_DELETE); mdbx_env_delete(db_filename, MDBX_ENV_JUST_DELETE);
rc = mdbx_env_create(&env); rc = mdbx_env_create(&env);

@ -9,7 +9,7 @@ using buffer = mdbx::default_buffer;
bool case1_ordering(mdbx::env env) { bool case1_ordering(mdbx::env env) {
auto txn = env.start_write(); auto txn = env.start_write();
auto map = txn.create_map(nullptr, mdbx::key_mode::ordinal, mdbx::value_mode::multi_ordinal); auto map = txn.create_map("case1", mdbx::key_mode::ordinal, mdbx::value_mode::multi_ordinal);
txn.insert(map, buffer::key_from_u64(21), buffer::key_from_u64(18)); txn.insert(map, buffer::key_from_u64(21), buffer::key_from_u64(18));
txn.insert(map, buffer::key_from_u64(7), buffer::key_from_u64(19)); txn.insert(map, buffer::key_from_u64(7), buffer::key_from_u64(19));
@ -175,7 +175,7 @@ bool case1_ordering(mdbx::env env) {
bool case2_batch_read(mdbx::env env) { bool case2_batch_read(mdbx::env env) {
auto txn = env.start_write(); auto txn = env.start_write();
auto map = txn.create_map(nullptr, mdbx::key_mode::usual, mdbx::value_mode::multi_samelength); auto map = txn.create_map("case2", mdbx::key_mode::usual, mdbx::value_mode::multi_samelength);
txn.upsert(map, mdbx::slice("key1"), mdbx::slice("val1")); txn.upsert(map, mdbx::slice("key1"), mdbx::slice("val1"));
txn.upsert(map, mdbx::pair("key1", "val2")); txn.upsert(map, mdbx::pair("key1", "val2"));
txn.upsert(map, mdbx::pair("key1", "val3")); txn.upsert(map, mdbx::pair("key1", "val3"));
@ -270,7 +270,7 @@ bool case3_put_a_lot(mdbx::env env) {
int doit() { int doit() {
mdbx::path db_filename = "test-dupfix-multiple"; mdbx::path db_filename = "test-dupfix-multiple";
mdbx::env_managed::remove(db_filename); mdbx::env_managed::remove(db_filename);
mdbx::env_managed env(db_filename, mdbx::env_managed::create_parameters(), mdbx::env::operate_parameters(1)); mdbx::env_managed env(db_filename, mdbx::env_managed::create_parameters(), mdbx::env::operate_parameters(3));
bool ok = case1_ordering(env); bool ok = case1_ordering(env);
ok = case2_batch_read(env) && ok; ok = case2_batch_read(env) && ok;
@ -288,7 +288,6 @@ int doit() {
int main(int argc, const char *argv[]) { int main(int argc, const char *argv[]) {
(void)argc; (void)argc;
(void)argv; (void)argv;
try { try {
return doit(); return doit();
} catch (const std::exception &ex) { } catch (const std::exception &ex) {

@ -1,13 +1,11 @@
#include "mdbx.h++" #include "mdbx.h++"
#include <cstring> #include <cstring>
#include <iostream>
static const char *const testkey = "testkey"; static const char *const testkey = "testkey";
static uint64_t testval = 11; static uint64_t testval = 11;
int main(int argc, char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx::path db_filename = "test-early_close_dbi"; mdbx::path db_filename = "test-early_close_dbi";
mdbx::env_managed::remove(db_filename); mdbx::env_managed::remove(db_filename);
@ -126,3 +124,14 @@ int main(int argc, char *argv[]) {
return 0; return 0;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -75,10 +75,7 @@ static bool basic() {
return ok; return ok;
} }
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
auto ok = basic(); auto ok = basic();
for (size_t n = 0; n < 1000; ++n) { for (size_t n = 0; n < 1000; ++n) {
for (size_t length = 0; ok && length < 111; ++length) { for (size_t length = 0; ok && length < 111; ++length) {
@ -108,3 +105,14 @@ int main(int argc, const char *argv[]) {
std::cout << "OK\n"; std::cout << "OK\n";
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -4,11 +4,8 @@
#include "mdbx.h++" #include "mdbx.h++"
#include <iostream> #include <iostream>
int main(int argc, const char *argv[]) { static int doit() {
(void)argc; mdbx::path db_filename = "test-maindb-ordinal";
(void)argv;
mdbx::path db_filename = "test-dupfix-multiple";
mdbx::env_managed::remove(db_filename); mdbx::env_managed::remove(db_filename);
mdbx::env_managed env(db_filename, mdbx::env_managed::create_parameters(), mdbx::env::operate_parameters()); mdbx::env_managed env(db_filename, mdbx::env_managed::create_parameters(), mdbx::env::operate_parameters());
@ -51,3 +48,14 @@ int main(int argc, const char *argv[]) {
return EXIT_SUCCESS; return EXIT_SUCCESS;
#endif /* __cpp_lib_string_view >= 201606L */ #endif /* __cpp_lib_string_view >= 201606L */
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}

@ -25,12 +25,7 @@ static void logger_nofmt(MDBX_log_level_t loglevel, const char *function, int li
fprintf(stdout, "%s:%u %s", function, line, msg); fprintf(stdout, "%s:%u %s", function, line, msg);
} }
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_VERBOSE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
mdbx::path path = "test-open"; mdbx::path path = "test-open";
mdbx::env::remove(path); mdbx::env::remove(path);
@ -86,4 +81,16 @@ int main(int argc, const char *argv[]) {
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_VERBOSE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}
#endif /* __cpp_lib_latch */ #endif /* __cpp_lib_latch */

@ -308,12 +308,7 @@ bool case2(const mdbx::path &path, bool no_sticky_threads) {
return true; return true;
} }
int main(int argc, const char *argv[]) { int doit() {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_VERBOSE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
mdbx::path path = "test-txn"; mdbx::path path = "test-txn";
mdbx::env::remove(path); mdbx::env::remove(path);
@ -326,4 +321,16 @@ int main(int argc, const char *argv[]) {
return ok ? EXIT_SUCCESS : EXIT_FAILURE; return ok ? EXIT_SUCCESS : EXIT_FAILURE;
} }
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
mdbx_setup_debug_nofmt(MDBX_LOG_VERBOSE, MDBX_DBG_ASSERT, logger_nofmt, log_buffer, sizeof(log_buffer));
try {
return doit();
} catch (const std::exception &ex) {
std::cerr << "Exception: " << ex.what() << "\n";
return EXIT_FAILURE;
}
}
#endif /* __cpp_lib_latch */ #endif /* __cpp_lib_latch */