summaryrefslogtreecommitdiff
path: root/libs/libmdbx/src/test/copy.cc
blob: ff53153e1a98a1d5f86aa647c70fdc61c48515a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "test.h"

void testcase_copy::copy_db(const bool with_compaction) {
  int err = osal_removefile(copy_pathname);
  if (err != MDBX_SUCCESS && err != MDBX_ENOFILE)
    failure_perror("mdbx_removefile()", err);

  err = mdbx_env_copy(db_guard.get(), copy_pathname.c_str(),
                      with_compaction ? MDBX_CP_COMPACT : 0);
  if (unlikely(err != MDBX_SUCCESS))
    failure_perror(with_compaction ? "mdbx_env_copy(MDBX_CP_COMPACT)"
                                   : "mdbx_env_copy(MDBX_CP_ASIS)",
                   err);
}

bool testcase_copy::run() {
  jitter_delay();
  db_open();
  assert(!txn_guard);
  const bool order = flipcoin();
  jitter_delay();
  copy_db(order);
  jitter_delay();
  copy_db(!order);
  return true;
}