mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-01 22:34:13 +08:00
mdbx-test: adds more jitter while DB opening.
Change-Id: Ic0f03f4fbe064ea00f719baa11b28cc24aafcb5b
This commit is contained in:
parent
1f89c494ff
commit
06f16464aa
@ -1212,7 +1212,7 @@ static __inline pgno_t pgno_sub(pgno_t base, pgno_t subtrahend) {
|
||||
}
|
||||
|
||||
static __inline void mdbx_jitter4testing(bool tiny) {
|
||||
#ifndef NDEBUG
|
||||
#if MDBX_DEBUG
|
||||
if (MDBX_DBG_JITTER & mdbx_runtime_flags)
|
||||
mdbx_osal_jitter(tiny);
|
||||
#else
|
||||
|
@ -11639,6 +11639,7 @@ static int __cold mdbx_env_copy_asis(MDBX_env *env, MDBX_txn *read_txn,
|
||||
return rc;
|
||||
}
|
||||
|
||||
mdbx_jitter4testing(false);
|
||||
const size_t meta_bytes = pgno2bytes(env, NUM_METAS);
|
||||
/* Make a snapshot of meta-pages,
|
||||
* but writing ones after the data was flushed */
|
||||
@ -11654,6 +11655,7 @@ static int __cold mdbx_env_copy_asis(MDBX_env *env, MDBX_txn *read_txn,
|
||||
|
||||
/* Copy the data */
|
||||
const size_t data_bytes = pgno2bytes(env, read_txn->mt_next_pgno);
|
||||
mdbx_jitter4testing(false);
|
||||
#if __GLIBC_PREREQ(2, 27)
|
||||
for (off_t in_offset = meta_bytes; in_offset < (off_t)data_bytes;) {
|
||||
off_t out_offset = in_offset;
|
||||
|
19
test/test.cc
19
test/test.cc
@ -139,6 +139,8 @@ void testcase::db_open() {
|
||||
|
||||
if (!db_guard)
|
||||
db_prepare();
|
||||
|
||||
jitter_delay(true);
|
||||
int rc = mdbx_env_open(db_guard.get(), config.params.pathname_db.c_str(),
|
||||
(unsigned)config.params.mode_flags, 0640);
|
||||
if (unlikely(rc != MDBX_SUCCESS))
|
||||
@ -569,22 +571,27 @@ bool test_execute(const actor_config &config_const) {
|
||||
if (!test->setup()) {
|
||||
log_notice("test setup failed");
|
||||
return false;
|
||||
} else if (!test->run()) {
|
||||
}
|
||||
if (!test->run()) {
|
||||
log_notice("test failed");
|
||||
return false;
|
||||
} else if (!test->teardown()) {
|
||||
}
|
||||
if (!test->teardown()) {
|
||||
log_notice("test teardown failed");
|
||||
return false;
|
||||
} else {
|
||||
if (config.params.nrepeat == 1)
|
||||
log_info("test successed");
|
||||
else if (config.params.nrepeat)
|
||||
}
|
||||
|
||||
if (config.params.nrepeat == 1)
|
||||
log_info("test successed");
|
||||
else {
|
||||
if (config.params.nrepeat)
|
||||
log_info("test successed (iteration %zi of %zi)", iter,
|
||||
size_t(config.params.nrepeat));
|
||||
else
|
||||
log_info("test successed (iteration %zi)", iter);
|
||||
config.params.keygen.seed += INT32_C(0xA4F4D37B);
|
||||
}
|
||||
|
||||
} while (config.params.nrepeat == 0 || iter < config.params.nrepeat);
|
||||
return true;
|
||||
} catch (const std::exception &pipets) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user