#! /bin/sh

# Use gnuplot to generate plots from fio run with -l and/or -w

if [ "$1"x = "x" ]; then
	echo "Usage: fio_generate_plots title [xres yres]"
	exit 1
fi

GNUPLOT=$(which gnuplot)
if [ ! -x $GNUPLOT ]; then
	echo You need gnuplot installed to generate graphs
	exit 1
fi

TITLE=$1

# set resolution
if [ "$2"x != "x" -a "$3"x != "x" ]; then
	XRES="$2"
	YRES="$3"
else
	XRES=1024
	YRES=768
fi

PLOT_LINE=""
for i in *bw.log; do
	if [ ! -r $i ]; then
		continue
	fi
	PT=$(echo $i | sed s/_bw.log//g)
	if [ "$PLOT_LINE"x != "x" ]; then
		PLOT_LINE=$PLOT_LINE", "
	fi

	PLOT_LINE=$PLOT_LINE"'$i' title '$PT' with lines"
done

if [ "$PLOT_LINE"x != "x" ]; then
	echo Making bw logs
	echo "set title 'Bandwidth - $TITLE'; set xlabel 'time (msec)'; set ylabel 'KB/sec'; set terminal png size $XRES,$YRES; set output '$TITLE-bw.png'; plot " $PLOT_LINE | $GNUPLOT -
fi

PLOT_LINE=""
for i in *iops.log; do
	if [ ! -r $i ]; then
		continue
	fi
	PT=$(echo $i | sed s/_iops.log//g)
	if [ "$PLOT_LINE"x != "x" ]; then
		PLOT_LINE=$PLOT_LINE", "
	fi

	PLOT_LINE=$PLOT_LINE"'$i' title '$PT' with lines"
done

if [ "$PLOT_LINE"x != "x" ]; then
	echo Making bw logs
	echo "set title 'IOPS - $TITLE'; set xlabel 'time (msec)'; set ylabel 'IOPS'; set terminal png size $XRES,$YRES; set output '$TITLE-IOPS.png'; plot " $PLOT_LINE | $GNUPLOT -
fi

PLOT_LINE=""
for i in *slat.log; do
	if [ ! -r $i ]; then
		continue
	fi
	PT=$(echo $i | sed s/_slat.log//g)
	if [ "$PLOT_LINE"x != "x" ]; then
		PLOT_LINE=$PLOT_LINE", "
	fi

	PLOT_LINE=$PLOT_LINE"'$i' title '$PT' with lines"
done

if [ "$PLOT_LINE"x != "x" ]; then
	echo Making slat logs $PLOT_LINE
	echo "set title 'Submission latency - $TITLE'; set xlabel 'time (msec)'; set ylabel 'latency (msec)'; set terminal png size $XRES,$YRES; set output '$TITLE-slat.png'; plot " $PLOT_LINE | $GNUPLOT -
fi

PLOT_LINE=""
for i in *clat.log; do
	if [ ! -r $i ]; then
		continue
	fi
	PT=$(echo $i | sed s/_clat.log//g)
	if [ "$PLOT_LINE"x != "x" ]; then
		PLOT_LINE=$PLOT_LINE", "
	fi

	PLOT_LINE=$PLOT_LINE"'$i' title '$PT' with lines"
done

if [ "$PLOT_LINE"x != "x" ]; then
	echo Making clat logs $PLOT_LINE
	echo "set title 'Completion latency - $TITLE'; set xlabel 'time (msec)'; set ylabel 'latency (msec)'; set terminal png size $XRES,$YRES; set output '$TITLE-clat.png'; plot " $PLOT_LINE | $GNUPLOT -
fi

PLOT_LINE=""
for i in *_lat.log; do
	if [ ! -r $i ]; then
		continue
	fi
	PT=$(echo $i | sed s/_lat.log//g)
	if [ "$PLOT_LINE"x != "x" ]; then
		PLOT_LINE=$PLOT_LINE", "
	fi

	PLOT_LINE=$PLOT_LINE"'$i' title '$PT' with lines"
done

if [ "$PLOT_LINE"x != "x" ]; then
	echo Making lat logs $PLOT_LINE
	echo "set title 'Latency - $TITLE'; set xlabel 'time (msec)'; set ylabel 'latency (msec)'; set terminal png size $XRES,$YRES; set output '$TITLE-lat.png'; plot " $PLOT_LINE | $GNUPLOT -
fi
