#!/bin/sh

FG=-c2
BG=-c2
TILT=0

if test $# -gt 0; then
        test $1 -eq 1 || test $1 -eq 2 || test $1 -eq 3 || TILT=1
        test $TILT -eq 0 && FG=-c$1 && FOREGROUND_IO="ionice $FG"
fi

if test $TILT -eq 0 && test $# -gt 1; then
        test $2 -eq 1 || test $2 -eq 2 || test $2 -eq 3 || TILT=1
        test $TILT -eq 0 && BG=-c$2 BACKGROUND_IO="ionice $BG"
fi

if test $TILT -eq 1; then
        echo "usage: testo.sh <foreground_class [0-3]> <background_class [0-3]>"
        exit;
fi

FILMCLIP=3DMark2000.mkv
LOGFILE=testo$FG$BG.log

$FOREGROUND_IO rm -f crud-$$

sh -c "echo $FOREGROUND_IO dd if=$FILMCLIP of=/tmp/$FILMCLIP" 2>&1|tee $LOGFILE
$FOREGROUND_IO dd if=$FILMCLIP of=/tmp/$FILMCLIP
sh -c "echo $BACKGROUND_IO perf sched record -o /tmp/mplayer$FG$BG.data \(tmpfs\)\&" 2>&1|tee -a $LOGFILE
$BACKGROUND_IO perf sched record -o /tmp/mplayer$FG$BG.data >/dev/null 2>&1&
sh -c "echo $FOREGROUND_IO mplayer /tmp/$FILMCLIP\&" 2>&1|tee -a $LOGFILE
$FOREGROUND_IO mplayer /tmp/$FILMCLIP >/dev/null 2>&1&
sh -c "echo $BACKGROUND_IO dd if=/dev/zero of=crud-$$\&" 2>&1|tee -a $LOGFILE
$BACKGROUND_IO dd if=/dev/zero of=crud-$$ >/dev/null 2>&1&
sh -c "echo " 2>&1|tee -a $LOGFILE

sh -c "echo sleep 180" 2>&1|tee -a $LOGFILE
sleep 180

sh -c  "echo timing konsole -e exit" 2>&1|tee -a $LOGFILE
perf stat -- sh -c "konsole -e exit" 2>&1|tee -a $LOGFILE
perf stat -- sh -c "konsole -e exit" 2>&1|tee -a $LOGFILE
perf stat -- sh -c "konsole -e exit" 2>&1|tee -a $LOGFILE

killall -qw perf dd mplayer
echo perf lat --sort=max|head -20|tee -a $LOGFILE
perf sched -i /tmp/mplayer$FG$BG.data lat --sort=max|head -20 2>&1|tee -a $LOGFILE

mv /tmp/mplayer$FG$BG.data .
rm /tmp/$FILMCLIP
rm -f crud-$$
sync
