# Paul: skip `spsc-queue` as it deadlocks.
+echo "** Test CDSChecker data structure benchmarks **"
for t in barrier chase-lev-deque dekker-fences linuxrwlocks mcs-lock mpmc-queue ms-queue; do
cd $t
echo -n "$t "
all: mb_insert_test mb_lookup_test mb_longest_prefix_test \
mb_remove_test mb_iterator_test mb_multi_proc_test \
- mb_rc_test mb_multi_thread_insert_test mb_memory_only_test
+ mb_rc_test mb_multi_thread_insert_test mb_multi_thread_insert_test_assert mb_memory_only_test
CFLAGS = -I. -I$(MABAIN_INSTALL_DIR)/include -Wall -Werror -g -O0 -c -std=c++11
LDFLAGS = -lpthread -lcrypto -L$(MABAIN_INSTALL_DIR) -lmabain
mb_multi_thread_insert_test: mb_multi_thread_insert_test.cpp
$(CPP) $(CFLAGS) mb_multi_thread_insert_test.cpp
$(CPP) mb_multi_thread_insert_test.o -o mb_multi_thread_insert_test $(LDFLAGS)
+mb_multi_thread_insert_test_assert: mb_multi_thread_insert_test.cpp
+ $(CPP) $(CFLAGS) -D ASSERT_TEST mb_multi_thread_insert_test.cpp
+ $(CPP) mb_multi_thread_insert_test.o -o mb_multi_thread_insert_test_assert $(LDFLAGS)
mb_memory_only_test: mb_memory_only_test.cpp
$(CPP) $(CFLAGS) mb_memory_only_test.cpp
$(CPP) mb_memory_only_test.o -o mb_memory_only_test $(LDFLAGS)
#include "test_key.h"
+//#define ASSERT_TEST
+
using namespace mabain;
static int max_key = 100000;
curr_key = write_index.fetch_add(1, std::memory_order_release);
kv = mkey.get_key(curr_key);
if(curr_key < max_key) {
- db_r->Add(kv, kv);
-// assert(db_r->Add(kv, kv) == MBError::SUCCESS);
+#ifdef ASSERT_TEST
+ assert(db_r->Add(kv, kv) == MBError::SUCCESS);
+#else
+ db_r->Add(kv, kv);
+#endif
} else {
stop_processing = true;
break;
for(int i = 0; i < max_key; i++) {
kv = mkey.get_key(i);
- db_r->Find(kv, mbd);
-// assert(db_r->Find(kv, mbd) == MBError::SUCCESS);
-// assert(kv == std::string((const char *)mbd.buff, mbd.data_len));
+#ifdef ASSERT_TEST
+ assert(db_r->Find(kv, mbd) == MBError::SUCCESS);
+ assert(kv == std::string((const char *)mbd.buff, mbd.data_len));
+#else
+ db_r->Find(kv, mbd);
+#endif
}
db_r->Close();
delete db_r;
AVG_ASSERT=$(echo "${COUNT_ASSERT} * 100 / ${TOTAL_RUN}" | bc -l | xargs printf "%.1f")
# -3 / log(1 - p) < n
-echo "Runs: $TOTAL_RUN | Assertions: $COUNT_ASSERT | Total time: ${COUNT_TIME}ms | Assert rate: ${AVG_ASSERT}%"
+echo "Runs: $TOTAL_RUN | Assertions: $COUNT_ASSERT | Total time: ${COUNT_TIME}ms | Assertion rate: ${AVG_ASSERT}%"
set -e
set -u
+echo "** Assertion test for broken data structures **"
for t in seqlock-test rwlock-test; do
echo -n "$t "
./test.sh ./$t