mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-04 17:14:12 +08:00
mdbx-test: add setloglevel().
Change-Id: If1262d0a0a76e00e4453e40b62022a5418655391
This commit is contained in:
parent
b2ddd49b77
commit
82ff482a0a
38
test/log.cc
38
test/log.cc
@ -37,6 +37,31 @@ void __noreturn failure_perror(const char *what, int errnum) {
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static void mdbx_logger(int type, const char *function, int line,
|
||||||
|
const char *msg, va_list args) {
|
||||||
|
logging::loglevel level = logging::info;
|
||||||
|
if (type & MDBX_DBG_EXTRA)
|
||||||
|
level = logging::extra;
|
||||||
|
if (type & MDBX_DBG_TRACE)
|
||||||
|
level = logging::trace;
|
||||||
|
if (type & MDBX_DBG_PRINT)
|
||||||
|
level = logging::verbose;
|
||||||
|
|
||||||
|
if (!function)
|
||||||
|
function = "unknown";
|
||||||
|
if (type & MDBX_DBG_ASSERT) {
|
||||||
|
log_error("mdbx: assertion failure: %s, %d", function, line);
|
||||||
|
level = logging::failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (logging::output(
|
||||||
|
level,
|
||||||
|
strncmp(function, "mdbx_", 5) == 0 ? "%s: " : "mdbx: %s: ", function))
|
||||||
|
logging::feed(msg, args);
|
||||||
|
if (type & MDBX_DBG_ASSERT)
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
namespace logging {
|
namespace logging {
|
||||||
|
|
||||||
static std::string prefix;
|
static std::string prefix;
|
||||||
@ -44,8 +69,19 @@ static std::string suffix;
|
|||||||
static loglevel level;
|
static loglevel level;
|
||||||
static FILE *last;
|
static FILE *last;
|
||||||
|
|
||||||
void setup(loglevel _level, const std::string &_prefix) {
|
void setlevel(loglevel _level) {
|
||||||
level = (_level > error) ? failure : _level;
|
level = (_level > error) ? failure : _level;
|
||||||
|
int mdbx_dbg_opts = MDBX_DBG_ASSERT | MDBX_DBG_JITTER | MDBX_DBG_DUMP;
|
||||||
|
if (level <= trace)
|
||||||
|
mdbx_dbg_opts |= MDBX_DBG_TRACE;
|
||||||
|
if (level <= verbose)
|
||||||
|
mdbx_dbg_opts |= MDBX_DBG_PRINT;
|
||||||
|
int rc = mdbx_setup_debug(mdbx_dbg_opts, mdbx_logger);
|
||||||
|
log_trace("set mdbx debug-opts: 0x%02x", rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup(loglevel _level, const std::string &_prefix) {
|
||||||
|
setlevel(_level);
|
||||||
prefix = _prefix;
|
prefix = _prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ enum loglevel {
|
|||||||
const char *level2str(const loglevel level);
|
const char *level2str(const loglevel level);
|
||||||
void setup(loglevel level, const std::string &prefix);
|
void setup(loglevel level, const std::string &prefix);
|
||||||
void setup(const std::string &prefix);
|
void setup(const std::string &prefix);
|
||||||
|
void setlevel(loglevel level);
|
||||||
|
|
||||||
bool output(const loglevel priority, const char *format, va_list ap);
|
bool output(const loglevel priority, const char *format, va_list ap);
|
||||||
bool __printf_args(2, 3)
|
bool __printf_args(2, 3)
|
||||||
|
35
test/test.cc
35
test/test.cc
@ -68,31 +68,6 @@ const char *keygencase2str(const keygen_case keycase) {
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
static void mdbx_logger(int type, const char *function, int line,
|
|
||||||
const char *msg, va_list args) {
|
|
||||||
logging::loglevel level = logging::info;
|
|
||||||
if (type & MDBX_DBG_EXTRA)
|
|
||||||
level = logging::extra;
|
|
||||||
if (type & MDBX_DBG_TRACE)
|
|
||||||
level = logging::trace;
|
|
||||||
if (type & MDBX_DBG_PRINT)
|
|
||||||
level = logging::verbose;
|
|
||||||
|
|
||||||
if (!function)
|
|
||||||
function = "unknown";
|
|
||||||
if (type & MDBX_DBG_ASSERT) {
|
|
||||||
log_error("mdbx: assertion failure: %s, %d", function, line);
|
|
||||||
level = logging::failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (logging::output(
|
|
||||||
level,
|
|
||||||
strncmp(function, "mdbx_", 5) == 0 ? "%s: " : "mdbx: %s: ", function))
|
|
||||||
logging::feed(msg, args);
|
|
||||||
if (type & MDBX_DBG_ASSERT)
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
int testcase::oom_callback(MDBX_env *env, int pid, mdbx_tid_t tid, uint64_t txn,
|
int testcase::oom_callback(MDBX_env *env, int pid, mdbx_tid_t tid, uint64_t txn,
|
||||||
unsigned gap, int retry) {
|
unsigned gap, int retry) {
|
||||||
|
|
||||||
@ -117,16 +92,8 @@ void testcase::db_prepare() {
|
|||||||
log_trace(">> db_prepare");
|
log_trace(">> db_prepare");
|
||||||
assert(!db_guard);
|
assert(!db_guard);
|
||||||
|
|
||||||
int mdbx_dbg_opts = MDBX_DBG_ASSERT | MDBX_DBG_JITTER | MDBX_DBG_DUMP;
|
|
||||||
if (config.params.loglevel <= logging::trace)
|
|
||||||
mdbx_dbg_opts |= MDBX_DBG_TRACE;
|
|
||||||
if (config.params.loglevel <= logging::verbose)
|
|
||||||
mdbx_dbg_opts |= MDBX_DBG_PRINT;
|
|
||||||
int rc = mdbx_setup_debug(mdbx_dbg_opts, mdbx_logger);
|
|
||||||
log_trace("set mdbx debug-opts: 0x%02x", rc);
|
|
||||||
|
|
||||||
MDBX_env *env = nullptr;
|
MDBX_env *env = nullptr;
|
||||||
rc = mdbx_env_create(&env);
|
int rc = mdbx_env_create(&env);
|
||||||
if (unlikely(rc != MDBX_SUCCESS))
|
if (unlikely(rc != MDBX_SUCCESS))
|
||||||
failure_perror("mdbx_env_create()", rc);
|
failure_perror("mdbx_env_create()", rc);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user