Commit 09a0f138 authored by Leif Walsh's avatar Leif Walsh Committed by Yoni Fogel

[t:4382] wrote script to run tests forever

git-svn-id: file:///svn/toku/tokudb@38957 c7de825b-a66e-492c-adef-691d508d4ae1
parent ccc5899c
#!/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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment