#! /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 *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
