summaryrefslogtreecommitdiff
path: root/libs/libmdbx/src/test/jitter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libmdbx/src/test/jitter.cc')
-rw-r--r--libs/libmdbx/src/test/jitter.cc69
1 files changed, 69 insertions, 0 deletions
diff --git a/libs/libmdbx/src/test/jitter.cc b/libs/libmdbx/src/test/jitter.cc
new file mode 100644
index 0000000000..e7faf2a3f9
--- /dev/null
+++ b/libs/libmdbx/src/test/jitter.cc
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2017-2018 Leonid Yuriev <leo@yuriev.ru>
+ * and other libmdbx authors: please see AUTHORS file.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+
+#include "test.h"
+
+bool testcase_jitter::setup() {
+ log_trace(">> setup");
+ if (!inherited::setup())
+ return false;
+
+ log_trace("<< setup");
+ return true;
+}
+
+bool testcase_jitter::run() {
+ while (should_continue()) {
+ jitter_delay();
+ db_open();
+
+ if (flipcoin()) {
+ jitter_delay();
+ txn_begin(true);
+ fetch_canary();
+ jitter_delay();
+ txn_end(flipcoin());
+ }
+
+ jitter_delay();
+ txn_begin(mode_readonly());
+ jitter_delay();
+ if (!mode_readonly()) {
+ fetch_canary();
+ update_canary(1);
+ /* TODO:
+ * - db_setsize()
+ * ...
+ */
+ }
+ txn_end(flipcoin());
+
+ if (flipcoin()) {
+ jitter_delay();
+ txn_begin(true);
+ jitter_delay();
+ txn_end(flipcoin());
+ }
+
+ jitter_delay();
+ db_close();
+ report(1);
+ }
+ return true;
+}
+
+bool testcase_jitter::teardown() {
+ log_trace(">> teardown");
+ return inherited::teardown();
+}