mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
8eef83801e
git-svn-id: file:///svn/toku/tokudb@38961 c7de825b-a66e-492c-adef-691d508d4ae1
97 lines
2.9 KiB
Bash
Executable file
97 lines
2.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# $Id: run.stress-tests.bash 38773 2012-01-13 20:35:00Z leifwalsh $
|
|
|
|
set -e
|
|
|
|
scriptname=$(basename "$0")
|
|
toku_toplevel=$(dirname $(dirname $(readlink -f "$PWD/$0")))
|
|
|
|
src_tests="${toku_toplevel}/src/tests"
|
|
testnames=(test_stress1.tdb \
|
|
test_stress5.tdb \
|
|
test_stress6.tdb)
|
|
|
|
declare -a pids=(0)
|
|
i=0
|
|
|
|
savepid() {
|
|
pids[$i]=$1
|
|
(( i = i + 1 ))
|
|
}
|
|
|
|
killchildren() {
|
|
kill ${pids[@]} || true
|
|
for exec in ${testnames[@]}
|
|
do
|
|
pkill -f $exec || true
|
|
done
|
|
}
|
|
|
|
trap killchildren INT TERM EXIT
|
|
|
|
run_test() {
|
|
exec="$1"; shift
|
|
table_size="$1"; shift
|
|
cachetable_size="$1"; shift
|
|
num_ptquery="$1"; shift
|
|
num_update="$1"; shift
|
|
|
|
rundir=$(mktemp -d ./rundir.XXXXXXXX)
|
|
tmplog=$(mktemp)
|
|
|
|
ulimit -c unlimited
|
|
t0="$(date)"
|
|
t1=""
|
|
envdir="../${exec}-${table_size}-${cachetable_size}-${num_ptquery}-${num_update}-forever-$$.dir"
|
|
cd $rundir
|
|
if LD_LIBRARY_PATH=../../../lib:$LD_LIBRARY_PATH \
|
|
../$exec -v --only_create --envdir "$envdir" \
|
|
--num_elements $table_size \
|
|
--cachetable_size $cachetable_size &> $tmplog
|
|
then
|
|
rm -f $tmplog
|
|
t1="$(date)"
|
|
echo "Running $exec -v --only_stress --num_seconds 0 --envdir \"$envdir\" --num_elements $table_size --cachetable_size $cachetable_size --num_ptquery_threads $num_ptquery --no-crash_on_update_failure --num_update_threads $num_update &> $tmplog in $rundir."
|
|
(LD_LIBRARY_PATH=../../../lib:$LD_LIBRARY_PATH \
|
|
../$exec -v --only_stress --num_seconds 0 --envdir "$envdir" \
|
|
--num_elements $table_size \
|
|
--cachetable_size $cachetable_size \
|
|
--num_ptquery_threads $num_ptquery \
|
|
--no-crash_on_update_failure \
|
|
--num_update_threads $num_update &> $tmplog) & mypid=$!
|
|
savepid $mypid
|
|
while true
|
|
do
|
|
sleep 10s
|
|
cpu=$(ps -o pcpu -p $mypid h)
|
|
if [[ -z $cpu ]]
|
|
then
|
|
echo "Process $mypid must have crashed: $exec,$table_size,$cachetable_size,$num_ptquery,$num_update,$t0,$t1,FAIL" 1>&2
|
|
echo "Check rundir $rundir, envdir $envdir, corefile core.$mypid." 1>&2
|
|
return
|
|
fi
|
|
if expr $cpu == 0.0 &>/dev/null
|
|
then
|
|
echo "Deadlock detected in process $mypid: $exec,$table_size,$cachetable_size,$num_ptquery,$num_update,$t0,$t1,FAIL" 1>&2
|
|
echo "Check rundir $rundir, envdir $envdir, corefile core.$mypid." 1>&2
|
|
return
|
|
fi
|
|
done
|
|
else
|
|
echo "Create phase failed: $exec,$table_size,$cachetable_size,$num_ptquery,$num_update,$t0,$t1,FAIL" 1>&2
|
|
fi
|
|
cd ..
|
|
rm -rf $rundir "$envdir"
|
|
}
|
|
|
|
cd $src_tests
|
|
for exec in ${testnames[@]}
|
|
do
|
|
for table_size in 2000 200000 50000000
|
|
do
|
|
(( small_cachetable = table_size * 50 ))
|
|
run_test $exec $table_size $small_cachetable 4 4 & savepid $!
|
|
done
|
|
done
|
|
|
|
wait ${pids[@]} || true
|