#!/bin/sh

dbtype=mysql
#dbtype=pgsql

tablesize="100000"

case $dbtype in
    mysql)
        connect="--mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sbtest --mysql-user=mikeg"
        common="--test=oltp --db-driver=mysql --oltp-table-size=${tablesize}"
        ;;
    pgsql)
	sudo sh -c 'echo 134217728 > /proc/sys/kernel/shmmax'
	pg_ctl -D /home/mikeg/postgres -l logfile start
	sleep 5
#	dropdb sbtest
#	createdb sbtest
#	sysbench --test=oltp --pgsql-user=mikeg --db-driver=pgsql --oltp-table-size=100000 prepare

#        connect="--pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-db=sbtest --pgsql-user=mikeg"
        connect="--pgsql-host="" --pgsql-port=5432 --pgsql-db=sbtest --pgsql-user=mikeg"
        common="--test=oltp --db-driver=pgsql --oltp-table-size=${tablesize}"
        ;;
    *)
        echo "Unknown dbtype";
        exit 1;
        ;;
esac

# system setup
steps="8 1 2 4 8 16 32 64 128 256"
# steps="256"
requests="10000"
flavor=`uname -r`

# test type, ro/rw
testtype="ro"
resultdir="sysbench_results/${RUNID}"
mkdir -p ${resultdir}
args="${common} ${connect} --max-time=60 --max-requests=0 --oltp-test-mode=complex --oltp-dist-iter=16"

case ${testtype} in
    ro)
        args="${args} --oltp-read-only=on --oltp-skip-trx=off"
        ;;
    rw)
        args="${args} --oltp-read-only=off"
        test ${dbtype} = "mysql" && args="${args} --oltp-skip-trx=on"
        test ${dbtype} = "mysql" || args="${args} --oltp-skip-trx=off"
        ;;
esac

resultfile() {
    local threads=$1
    echo ${resultdir}/${flavor}.${dbtype}.${testtype}.${threads}
}
plotdata=`echo ${resultdir}/${flavor}.${dbtype}.${testtype}.plot | tr '.-' _`

rm -f ${plotdata}
rm -f ${resultdir}/${flavor}.${testtype}.*

echo -n > ${plotdata}

for threads in ${steps}
do
    cmd="sysbench --num-threads=${threads} ${args} run"
    out=`resultfile ${threads}`
    echo ${cmd} > ${out}
    echo "Testing with ${threads}"
    success=0
    while test ${success} -eq 0;
    do
        date
        date >> ${out}
        $cmd >> ${out} && success=1
        test ${success} -eq 0 && (echo "Test failed, restarting")
    done
    cat ${out}
    awk '/read.write requests/ {sub("^.", "", $4); print $4}' ${out} >> ${plotdata}
done

# Shutdown
case $dbtype in
    mysql)
        ;;
    pgsql)
	pg_ctl -D /home/mikeg/postgres -l logfile stop
        ;;
esac
