mariadb/scripts/run.db-benchmark-test.bash
Leif Walsh 3719bf2c2f [t:4901] merging brt->ft rename to main
git-svn-id: file:///svn/toku/tokudb@43686 c7de825b-a66e-492c-adef-691d508d4ae1
2013-04-17 00:00:35 -04:00

201 lines
5.5 KiB
Bash
Executable file

#!/usr/bin/env bash
function usage() {
echo "run db-benchmark-test"
echo "[--tokudb=$tokudb"
echo "[--revision=$revision]"
echo "[--branch=$branch]"
echo "[--suffix=$suffix]"
echo "[--commit=$commit]"
echo "[--cc=$cc]"
echo "[--n=$n]"
}
function retry() {
local cmd
local retries
local exitcode
cmd=$*
let retries=0
while [ $retries -le 10 ] ; do
echo `date` $cmd
bash -c "$cmd"
exitcode=$?
echo `date` $cmd $exitcode $retries
let retries=retries+1
if [ $exitcode -eq 0 ] ; then break; fi
sleep 10
done
test $exitcode = 0
}
n=100
cc=gcc44
ft_loader=cilk
branch=toku
revision=0
tokudb=tokudb
suffix=.
commit=0
svnserver=https://svn.tokutek.com/tokudb
basedir=$HOME/svn.build
builddir=$basedir/tokudb.build
system=`uname -s | tr [:upper:] [:lower:]`
arch=`uname -m | tr [:upper:] [:lower:]`
hostname=`hostname`
instancetype=""
# parse the command line
while [ $# -gt 0 ] ; do
arg=$1; shift
if [[ $arg =~ --(.*)=(.*) ]] ; then
eval ${BASH_REMATCH[1]}=${BASH_REMATCH[2]}
else
usage; exit 1
fi
done
if [ $cc = icc ] ; then
d=/opt/intel/bin
if [ -d $d ] ; then
export PATH=$d:$PATH
. $d/compilervars.sh intel64
fi
d=/opt/intel/cilkutil/bin
if [ -d $d ] ; then
export PATH=$d:$PATH
fi
fi
# require a revision
if [ $revision -eq 0 ] ; then exit 1; fi
if [ $branch = "." ] ; then branch="toku"; fi
function append() {
local s=""; local x
for x in $*; do
if [ "$s" != "" ] ; then s=$s-$x; else s=$x; fi
done
echo $s
}
# setup the branchrevision string
branchrevision=""
if [ $branch != "toku" ] ; then branchrevision=$(append $branchrevision $(basename $branch)); fi
if [ $tokudb != "tokudb" ] ; then branchrevision=$(append $branchrevision $tokudb); fi
branchrevision=$(append $branchrevision $revision)
if [ $suffix != "." ] ; then branchrevision=$(append $branchrevision $suffix); fi
# goto the base directory
if [ ! -d $basedir ] ; then mkdir $basedir; fi
pushd $basedir
# update the build directory
if [ ! -d $builddir ] ; then mkdir $builddir; fi
date=`date +%Y%m%d`
pushd $builddir
while [ ! -d $date ] ; do
svn mkdir $svnserver/mysql.build/$date -m ""
svn co -q $svnserver/mysql.build/$date
if [ $? -ne 0 ] ; then rm -rf $date; fi
done
popd
testresultsdir=$builddir/$date
gccversion=`$cc --version|head -1|cut -f3 -d" "`
runfile=$testresultsdir/db-benchmark-test-$branchrevision-$cc-$gccversion-$system-$arch-$hostname
if [ "$instancetype" != "" ] ; then runfile=$runfile-$instancetype; fi
rm -rf $runfile
testresult="PASS"
testdir=db-benchmark-test-$branchrevision
rm -rf $testdir
# checkout the tokudb branch
if [ $testresult = "PASS" ] ; then
retry svn export -q https://svn.tokutek.com/tokudb/$branch/$tokudb $testdir
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
fi
# build it
if [ $testresult = "PASS" ] ; then
pushd $testdir
make release -s CC=$cc GCCVERSION=$gccversion FTLOADER=$ft_loader >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
popd
pushd $testdir/db-benchmark-test
make build.tdb CC=$cc GCCVERSION=$gccversion -s >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
popd
fi
# run tests
if [ $testresult = "PASS" ] ; then
let i=$n
pushd $testdir/db-benchmark-test
echo ./db-benchmark-test-tokudb -x $i >>$runfile 2>&1
./db-benchmark-test-tokudb -x $i >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
echo ./scanscan-tokudb --prelock --prelockflag >>$runfile 2>&1
./scanscan-tokudb --prelock --prelockflag >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
echo ./scanscan-tokudb --lwc --prelock --prelockflag >>$runfile 2>&1
./scanscan-tokudb --lwc --prelock --prelockflag >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
popd
fi
if [ $testresult = "PASS" ] ; then
let i=2*$n
pushd $testdir/db-benchmark-test
echo ./db-benchmark-test-tokudb -x --norandom $i >>$runfile 2>&1
./db-benchmark-test-tokudb -x --norandom $i >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
echo ./scanscan-tokudb --prelock --prelockflag >>$runfile 2>&1
./scanscan-tokudb --prelock --prelockflag >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
echo ./scanscan-tokudb --lwc --prelock --prelockflag >>$runfile 2>&1
./scanscan-tokudb --lwc --prelock --prelockflag >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
popd
fi
if [ $testresult = "PASS" ] ; then
let i=2*$n
pushd $testdir/db-benchmark-test
echo ./db-benchmark-test-tokudb -x --noserial $i >>$runfile 2>&1
./db-benchmark-test-tokudb -x --noserial $i >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
echo ./scanscan-tokudb --prelock --prelockflag >>$runfile 2>&1
./scanscan-tokudb --prelock --prelockflag >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
echo ./scanscan-tokudb --lwc --prelock --prelockflag >>$runfile 2>&1
./scanscan-tokudb --lwc --prelock --prelockflag >>$runfile 2>&1
exitcode=$?
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
popd
fi
# commit results
if [ $commit != 0 ] ; then
svn add $runfile
retry svn commit -m \"$testresult db-benchmark-test $branchrevision $system $arch\" $runfile
fi
popd
exit 0