mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-30 22:47:16 +08:00
mdbx-test: adapt long-stochastic
script for old bash version (Mac OS).
This commit is contained in:
parent
d7aad3a7cf
commit
660c302525
2
.github/actions/spelling/expect.txt
vendored
2
.github/actions/spelling/expect.txt
vendored
@ -476,6 +476,7 @@ exactkey
|
|||||||
exactp
|
exactp
|
||||||
excpt
|
excpt
|
||||||
exe
|
exe
|
||||||
|
executables
|
||||||
exename
|
exename
|
||||||
exherbo
|
exherbo
|
||||||
exitcode
|
exitcode
|
||||||
@ -1116,6 +1117,7 @@ NOWAIT
|
|||||||
npages
|
npages
|
||||||
npos
|
npos
|
||||||
npr
|
npr
|
||||||
|
nproc
|
||||||
nptl
|
nptl
|
||||||
nreaders
|
nreaders
|
||||||
nrepeat
|
nrepeat
|
||||||
|
@ -85,13 +85,8 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# 1. clean data from prev runs and examine available RAM
|
|
||||||
|
|
||||||
if [ -z "$MONITOR" ]; then
|
if [ -z "$MONITOR" ]; then
|
||||||
if which time 2>/dev/null; then
|
if which time >/dev/null 2>/dev/null; then
|
||||||
MONITOR=$(which time)
|
MONITOR=$(which time)
|
||||||
if $MONITOR -o /dev/stdout true >/dev/null 2>/dev/null; then
|
if $MONITOR -o /dev/stdout true >/dev/null 2>/dev/null; then
|
||||||
MONITOR="$MONITOR -o /dev/stdout"
|
MONITOR="$MONITOR -o /dev/stdout"
|
||||||
@ -100,12 +95,15 @@ if [ -z "$MONITOR" ]; then
|
|||||||
export MALLOC_CHECK_=7 MALLOC_PERTURB_=42
|
export MALLOC_CHECK_=7 MALLOC_PERTURB_=42
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# 1. clean data from prev runs and examine available RAM
|
||||||
|
|
||||||
WANNA_MOUNT=0
|
WANNA_MOUNT=0
|
||||||
case ${UNAME} in
|
case ${UNAME} in
|
||||||
Linux)
|
Linux)
|
||||||
MAKE=make
|
MAKE=make
|
||||||
if [[ ! -v TESTDB_DIR || -z "$TESTDB_DIR" ]]; then
|
if [ -z "${TESTDB_DIR:-}" ]; then
|
||||||
for old_test_dir in $(ls -d /dev/shm/mdbx-test.[0-9]*); do
|
for old_test_dir in $(ls -d /dev/shm/mdbx-test.[0-9]* 2>/dev/null); do
|
||||||
rm -rf $old_test_dir
|
rm -rf $old_test_dir
|
||||||
done
|
done
|
||||||
TESTDB_DIR="/dev/shm/mdbx-test.$$"
|
TESTDB_DIR="/dev/shm/mdbx-test.$$"
|
||||||
@ -121,8 +119,8 @@ case ${UNAME} in
|
|||||||
|
|
||||||
FreeBSD)
|
FreeBSD)
|
||||||
MAKE=gmake
|
MAKE=gmake
|
||||||
if [[ ! -v TESTDB_DIR || -z "$TESTDB_DIR" ]]; then
|
if [ -z "${TESTDB_DIR:-}" ]; then
|
||||||
for old_test_dir in $(ls -d /tmp/mdbx-test.[0-9]*); do
|
for old_test_dir in $(ls -d /tmp/mdbx-test.[0-9]* 2>/dev/null); do
|
||||||
umount $old_test_dir && rm -r $old_test_dir
|
umount $old_test_dir && rm -r $old_test_dir
|
||||||
done
|
done
|
||||||
TESTDB_DIR="/tmp/mdbx-test.$$"
|
TESTDB_DIR="/tmp/mdbx-test.$$"
|
||||||
@ -136,8 +134,8 @@ case ${UNAME} in
|
|||||||
|
|
||||||
Darwin)
|
Darwin)
|
||||||
MAKE=make
|
MAKE=make
|
||||||
if [[ ! -v TESTDB_DIR || -z "$TESTDB_DIR" ]]; then
|
if [ -z "${TESTDB_DIR:-}" ]; then
|
||||||
for vol in $(ls -d /Volumes/mdx[0-9]*[0-9]tst); do
|
for vol in $(ls -d /Volumes/mdx[0-9]*[0-9]tst 2>/dev/null); do
|
||||||
disk=$(mount | grep $vol | cut -d ' ' -f 1)
|
disk=$(mount | grep $vol | cut -d ' ' -f 1)
|
||||||
echo "umount: volume $vol disk $disk"
|
echo "umount: volume $vol disk $disk"
|
||||||
hdiutil unmount $vol -force
|
hdiutil unmount $vol -force
|
||||||
@ -160,6 +158,8 @@ case ${UNAME} in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
rm -f ${TESTDB_DIR}/*
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# 2. estimate reasonable RAM space for test-db
|
# 2. estimate reasonable RAM space for test-db
|
||||||
|
|
||||||
@ -231,21 +231,33 @@ fi
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# 5. run stochastic iterations
|
# 5. run stochastic iterations
|
||||||
|
|
||||||
function join { local IFS="$1"; shift; echo "$*"; }
|
if which lz4 >/dev/null; then
|
||||||
function bit2option { local -n arr=$1; (( ($2&(1<<$3)) != 0 )) && echo -n '+' || echo -n '-'; echo "${arr[$3]}"; }
|
function logger {
|
||||||
|
lz4 > ${TESTDB_DIR}/long.log.lz4
|
||||||
|
}
|
||||||
|
elif which gzip >/dev/null; then
|
||||||
|
function logger {
|
||||||
|
gzip > ${TESTDB_DIR}/long.log.gz
|
||||||
|
}
|
||||||
|
else
|
||||||
|
function logger {
|
||||||
|
cat > ${TESTDB_DIR}/long.log
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
syncmodes=("" ,+nosync-safe ,+nosync-utterly)
|
syncmodes=("" ,+nosync-safe ,+nosync-utterly)
|
||||||
|
|
||||||
options=(writemap coalesce lifo notls perturb)
|
options=(writemap coalesce lifo notls perturb)
|
||||||
|
|
||||||
function bits2list {
|
function join { local IFS="$1"; shift; echo "$*"; }
|
||||||
local -n arr=$1
|
|
||||||
|
function bits2options {
|
||||||
|
local bits=$1
|
||||||
local i
|
local i
|
||||||
local list=()
|
local list=()
|
||||||
for ((i=0; i<${#arr[@]}; ++i)) do
|
for ((i = 0; i < ${#options[@]}; ++i)); do
|
||||||
list[$i]=$(bit2option $1 $2 $i)
|
list[$i]=$( (( (bits & (1 << i)) != 0 )) && echo -n '+' || echo -n '-'; echo ${options[$i]})
|
||||||
done
|
done
|
||||||
join , "${list[@]}"
|
join , ${list[@]}
|
||||||
}
|
}
|
||||||
|
|
||||||
function failed {
|
function failed {
|
||||||
@ -297,65 +309,65 @@ for nops in 10 33 100 333 1000 3333 10000 33333 100000 333333 1000000 3333333 10
|
|||||||
split=30
|
split=30
|
||||||
caption="Probe #$((++count)) int-key,with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
|
|
||||||
split=24
|
split=24
|
||||||
caption="Probe #$((++count)) int-key,with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
|
|
||||||
split=16
|
split=16
|
||||||
caption="Probe #$((++count)) int-key,w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) int-key,with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
--pagesize=min --size-upper=${db_size_mb}M --table=-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) with-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
|
|
||||||
split=4
|
split=4
|
||||||
caption="Probe #$((++count)) int-key,w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) int-key,int-data, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
--pagesize=min --size-upper=${db_size_mb}M --table=+key.integer,+data.integer --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=max \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
caption="Probe #$((++count)) w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
caption="Probe #$((++count)) w/o-dups, split=${split}, case $((++subcase)) of ${cases}" probe \
|
||||||
--pagesize=min --size-upper=${db_size_mb}M --table=-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
--pagesize=min --size-upper=${db_size_mb}M --table=-data.dups --keygen.split=${split} --keylen.min=min --keylen.max=max --datalen.min=min --datalen.max=1111 \
|
||||||
--nops=$nops --batch.write=$wbatch --mode=$(bits2list options $bits)${syncmodes[count%3]} \
|
--nops=$nops --batch.write=$wbatch --mode=$(bits2options $bits)${syncmodes[count%3]} \
|
||||||
--keygen.seed=${seed}
|
--keygen.seed=${seed}
|
||||||
done # options
|
done # options
|
||||||
loop=$((loop + 1))
|
loop=$((loop + 1))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user