mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
172 lines
4.9 KiB
Bash
Executable file
172 lines
4.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
function usage() {
|
|
echo "run iibench"
|
|
echo "--mysqlbuild=$mysqlbuild"
|
|
echo "[--max_row=$max_rows] [--rows_per_report=$rows_per_report] [--insert_only=$insert_only] [ --check=$check]"
|
|
echo "[--commit=$commit]"
|
|
}
|
|
|
|
function retry() {
|
|
local cmd=$*
|
|
local retries
|
|
local exitcode
|
|
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
|
|
}
|
|
|
|
mysqlbuild=
|
|
commit=0
|
|
check=1
|
|
mysqlserver=`hostname`
|
|
mysqluser=`whoami`
|
|
mysqlsocket=/tmp/mysql.sock
|
|
svn_server=https://svn.tokutek.com/tokudb
|
|
svn_branch=.
|
|
svn_revision=HEAD
|
|
basedir=$HOME/svn.build
|
|
builddir=$basedir/mysql.build
|
|
system=`uname -s | tr [:upper:] [:lower:]`
|
|
instancetype=
|
|
testinstance=
|
|
arch=`uname -m | tr [:upper:] [:lower:]`
|
|
tracefile=/tmp/run.iibench.trace
|
|
cmd=iibench
|
|
dbname=$cmd
|
|
engine=tokudb
|
|
tblname=testit
|
|
max_rows=50000000
|
|
rows_per_report=1000000
|
|
insert_only=1
|
|
|
|
# parse the command line
|
|
while [ $# -gt 0 ] ; do
|
|
arg=$1; shift
|
|
if [ $arg = "--replace_into" ] ; then
|
|
cmd=replace_into
|
|
elif [ $arg = "--insert_ignore" ] ; then
|
|
cmd=insert_ignore
|
|
elif [[ $arg =~ --(.*)=(.*) ]] ; then
|
|
eval ${BASH_REMATCH[1]}=${BASH_REMATCH[2]}
|
|
else
|
|
usage; exit 1
|
|
fi
|
|
done
|
|
|
|
if [[ $mysqlbuild =~ (.*)-(tokudb-.*)-(linux)-(x86_64) ]] ; then
|
|
mysql=${BASH_REMATCH[1]}
|
|
tokudb=${BASH_REMATCH[2]}
|
|
system=${BASH_REMATCH[3]}
|
|
arch=${BASH_REMATCH[4]}
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
# setup the dbname
|
|
if [ $dbname = "iibench" ] ; then dbname=${cmd}_${engine}; fi
|
|
if [ "$testinstance" != "" ] ; then dbname=${dbname}_${testinstance}; fi
|
|
|
|
if [ -d /usr/local/mysql ] ; then
|
|
export PATH=/usr/local/mysql/bin:$PATH
|
|
fi
|
|
|
|
if [ -d /usr/local/mysql/lib/mysql ] ; then
|
|
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$PATH
|
|
fi
|
|
|
|
# goto the base directory
|
|
if [ ! -d $basedir ] ; then mkdir $basedir; fi
|
|
pushd $basedir
|
|
|
|
# update the build directory
|
|
if [ $commit != 0 ] ; then
|
|
if [ ! -d $builddir ] ; then mkdir $builddir; fi
|
|
|
|
date=`date +%Y%m%d`
|
|
testresultsdir=$builddir/$date
|
|
pushd $builddir
|
|
while [ ! -d $date ] ; do
|
|
svn mkdir $svn_server/mysql.build/$date -m ""
|
|
svn checkout -q $svn_server/mysql.build/$date
|
|
if [ $? -ne 0 ] ; then rm -rf $date; fi
|
|
done
|
|
popd
|
|
else
|
|
testresultsdir=$PWD
|
|
fi
|
|
|
|
# checkout the code
|
|
testdir=iibench-$mysqlbuild-$mysqlserver
|
|
if [ "$testinstance" != "" ] ; then testdir=$testdir-$testinstance; fi
|
|
rm -rf $testdir
|
|
retry svn export -q -r $svn_revision $svn_server/$svn_branch/iibench $testdir
|
|
exitcode=$?
|
|
if [ $exitcode != 0 ] ; then
|
|
retry svn export -q -r $svn_revision $svn_server/iibench $testdir
|
|
exitcode=$?
|
|
fi
|
|
if [ $exitcode != 0 ] ; then exit 1; fi
|
|
|
|
# create the iibench database
|
|
mysql -S $mysqlsocket -u root -e "grant all on *.* to '$mysqluser'@'$mysqlserver'"
|
|
exitcode=$?
|
|
if [ $exitcode != 0 ] ; then exit 1; fi
|
|
|
|
mysql -S $mysqlsocket -u $mysqluser -e "drop database if exists $dbname"
|
|
exitcode=$?
|
|
if [ $exitcode != 0 ] ; then exit 1; fi
|
|
|
|
mysql -S $mysqlsocket -u $mysqluser -e "create database $dbname"
|
|
exitcode=$?
|
|
if [ $exitcode != 0 ] ; then exit 1; fi
|
|
|
|
# run
|
|
if [ $cmd = "iibench" -a $insert_only != 0 ] ; then
|
|
runfile=$testresultsdir/$dbname-insert_only-$max_rows-$mysqlbuild-$mysqlserver
|
|
else
|
|
runfile=$testresultsdir/$dbname-$max_rows-$mysqlbuild-$mysqlserver
|
|
fi
|
|
if [ "$instancetype" != "" ] ; then runfile=$runfile-$instancetype; fi
|
|
testresult="PASS"
|
|
|
|
pushd $testdir/py
|
|
echo `date` $cmd start $mysql $svn_branch $svn_revision $max_rows $rows_per_report >>$runfile
|
|
runcmd=$cmd.py
|
|
args="--db_user=$mysqluser --db_name=$dbname --db_socket=$mysqlsocket --engine=$engine --setup --max_rows=$max_rows --rows_per_report=$rows_per_report --table_name=$tblname"
|
|
if [ $cmd = "iibench" -a $insert_only != 0 ] ; then runcmd="$runcmd --insert_only"; fi
|
|
if [ $cmd = "replace_into" ] ; then runcmd="replace_into.py --use_replace_into"; fi
|
|
if [ $cmd = "insert_ignore" ] ; then runcmd="replace_into.py"; fi
|
|
./$runcmd $args >>$runfile 2>&1
|
|
exitcode=$?
|
|
echo `date` $cmd complete $exitcode >>$runfile
|
|
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
|
|
popd
|
|
|
|
if [ $check != 0 -a $testresult = "PASS" ] ; then
|
|
echo `date` check table $tblname >>$runfile
|
|
mysql -S $mysqlsocket -u $mysqluser -D $dbname -e "check table $tblname" >>$runfile 2>&1
|
|
exitcode=$?
|
|
echo `date` check table $tblname $exitcode >>$runfile
|
|
if [ $exitcode != 0 ] ; then testresult="FAIL"; fi
|
|
fi
|
|
|
|
# commit results
|
|
if [ $commit != 0 ] ; then
|
|
if [ $cmd = "iibench" -a $insert_only != 0 ] ; then cmd="$cmd insert_only"; fi
|
|
svn add $runfile
|
|
retry svn commit -m \"$testresult $cmd $max_rows $dbname $mysqlbuild $mysqlserver `hostname`\" $runfile
|
|
fi
|
|
|
|
popd
|
|
|
|
if [ $testresult = "PASS" ] ; then exitcode=0; else exitcode=1; fi
|
|
exit $exitcode
|