#!/bin/bash
# This script installs memslap and leaves it ready for benchmarking

P=memslap-bench
VERSION=1.0.6
. $SHELLPACK_INCLUDE/common.sh

# Basic args parser
while [ "$1" != "" ]; do
	case "$1" in
		-v)
			export VERSION=$2
			shift 2
			;;
		--threads)
			MEMSLAP_CONCURRENCY=$2
			shift 2
			;;
		--duration)
			MEMSLAP_DURATION=$2
			shift 2
			;;
		--memcached-mempool)
			MEMCACHED_MEMPOOL=$2
			shift 2
			;;
	esac
done

# Install if necessary
if [ ! -d $SHELLPACK_SOURCES/memslap-${VERSION}-installed ]; then
	$SHELLPACK_INCLUDE/shellpack-install-memslap -v ${VERSION}
fi
cd $SHELLPACK_SOURCES/memslap-${VERSION}-installed || die Failed to cd to memslap install directory

if [ "$MEMCACHED_MEMPOOL" = "" ]; then
	die Must specify memcached memory pool size
fi

# Start memcached server
$SHELLPACK_INCLUDE/shellpack-install-memcached --mempool $MEMCACHED_MEMPOOL
if [ $? -ne 0 ]; then
	die Failed to start memcached server
fi

# Fire this sucker up
MEMSLAP_THREADS=$MEMSLAP_CONCURRENCY
NUM_CPU=$(grep -c '^processor' /proc/cpuinfo)
MAX_CPU=$((NUM_CPU-1))
if [ $MEMSLAP_THREADS -gt $MAX_CPU ]; then
	MEMSLAP_THREADS=$MAX_CPU
fi

echo Starting memslap client $MEMSLAP_CONCURRENCY
echo o $MEMCACHED_MEMPOOL memcached pool
echo o $MEMSLAP_THREADS threads
echo o $MEMSLAP_CONCURRENCY concurrent requests
echo o $MEMSLAP_DURATION second duration

./bin/memaslap \
	--servers=127.0.0.1 \
	-T $MEMSLAP_THREADS \
	--concurrency=$MEMSLAP_CONCURRENCY \
	-S 1s \
	-t ${MEMSLAP_DURATION}s \
		2>&1 | sed -n -l 800 l | tr -d '$' | grep -v ^\\033 \
		    | tee $LOGDIR_RESULTS/memslap.log

$SHELLPACK_INCLUDE/shellpack-install-memcached --shutdown

exit $SHELLPACK_SUCCESS
#### Description memslap benchmark for memcached
#### Details memslap-bench 50
