#!/bin/bash

declare -i THREADS

TEST=oltp
THREADS=4

while [ "$1" ]; do
    param="$1"
    case "$1" in
	-t)
	if [ -z "$2" ];then
	    echo "Missing test for -t param"
	    exit 1
	else
	    TEST="$2"
	    echo "Performing $TEST test"
	    shift; shift
	fi
	;;
	-T)
	if [ -z "$2" ];then
	    echo "Missing value for amount of threads for param -T"
	    exit 1
	else
	    THREADS="$2"
	    echo "Using $THREADS threads"
	    shift;shift
	fi
	;;
	-h) echo "sysbench-example-test -t oltp|cpu|threads|fileio|memory|mutex -T nr_threads_to_use"
	    echo 
	    echo "oltp-test: needs a running mysqld"
	    echo "cpu-test:  generates prime numbers"
	    echo "fileio-test: copy 16MB files to disk - "
	    echo "    echomodify this script to pass some of many exta options"
	    echo "memory: cp big chunks of memery, there are also a lot of extra options"
	    echo "    you might want to add inside this script"
	    echo "mutex-test: see the sysbench code yourself"
	    echo "thread-test: stucks somehow, maybe I have not found the right params"
	    echo 
	    echo "The sysbench project is hosted on http://sourceforge.net"
	;;
	*)  echo "unknown parameter $1"
        exit 1
	;;
    esac
done

if [ "$THREADS" -lt 1 ] || [ "$THREADS" -gt 526 ]; then
    echo "$0 [nr of threads to use(default=4)]"
    exit 127
fi

# just an example...

case $TEST in
    oltp)
	sysbench --test=oltp --mysql-user=mysql --mysql-socket=/var/lib/mysql/mysql.sock \
	    --mysql-db=test --mysql-port=3306  cleanup >/dev/null 1>&2
	sysbench --test=oltp --mysql-user=mysql --mysql-socket=/var/lib/mysql/mysql.sock \
	    --mysql-db=test --mysql-port=3306 \
	    --oltp-dist-type=uniform --oltp-read-only --oltp-order-ranges=0 \
	    --oltp-table-size=1000000 --oltp-range-size=1000 prepare
	sysbench --test=oltp --mysql-user=mysql --mysql-socket=/var/lib/mysql/mysql.sock \
	    --mysql-db=test --mysql-port=3306 --mysql-table-type=myisam \
	    --oltp-dist-type=uniform --oltp-read-only --oltp-order-ranges=0 \
	    --oltp-table-size=1000000 --oltp-range-size=1000 --num-threads=$THREADS run
	;;
    threads)
	sysbench --test=threads --thread-yields=10 --thread-locks=2 --num-threads=$THREADS run
	;;
    mutex)
	sysbench --test=mutex --num-threads=$THREADS run
	;;
    fileio)
	sysbench --test=fileio --file-test-mode=seqrewr \
	    --file-fsync-freq=on --num-threads=$THREADS run
	;;
    cpu)
	sysbench --test=cpu --num-threads=$THREADS run
	;;
    memory)
	sysbench --test=memory --memory-total-size=10G --num-threads=$THREADS run
	;;
    *)
	echo "Test $TEST does not exit, see -h"
	exit 1
	;;
esac