#! /bin/sh
LC_ALL=C
LANG=C
LASTDAY=$(echo $(date +%s) - 86400 | bc)
LASTWEEK=$(echo $(date +%s) - 604800 | bc)
LASTMONTH=$(echo $(date +%s) - 2592000 | bc)
LASTYEAR=$(echo $(date +%s) - 31572135 | bc)
LAST5YEARS=$(echo $(date +%s) - 157860675 | bc)
LAST10YEARS=$(echo $(date +%s) - 315721350 | bc)

GRAPHDAY=testing-day.png
GRAPHWEEK=testing-week.png
GRAPHMONTH=testing-month.png
GRAPHYEAR=testing-year.png
GRAPH5YEARS=testing-5years.png
GRAPH10YEARS=testing-10years.png
STATFILE=testing.rrd

LENNY_RELEASE=$(date +"%s" -d "Sat, 14 Feb 2009 22:58:48 -1100")
LENNY_RELEASE_COLOR=$(echo -n $LENNY_RELEASE |md5sum |cut -c-6)
SQUEEZE_FREEZE=$(date +"%s" -d "Fri, 6 Aug 2010 14:44:18 +0100")
SQUEEZE_FREEZE_COLOR=$(echo -n $SQUEEZE_FREEZE |md5sum |cut -c-6)
SQUEEZE_RELEASE=$(date +"%s" -d "Sun, 6 Feb 2011 02:20:39 +0100")
SQUEEZE_RELEASE_COLOR=$(echo -n $SQUEEZE_RELEASE |md5sum |cut -c-6)

get_data() {
./testing.py | xargs rrdtool update $STATFILE
}

create_rrd() {
rrdtool create testing.rrd -s 3600 \
	DS:tryenter:GAUGE:7200:0:10000 \
	DS:tryleave:GAUGE:7200:0:10000 \
	DS:enter:GAUGE:7200:0:10000 \
	DS:leave:GAUGE:7200:0:10000 \
	RRA:AVERAGE:0.5:1:744 \
	RRA:AVERAGE:0.5:24:1100
}

do_graph() {
rrdtool graph try-${1} --start $2 --end $(date +%s) \
	--width 600 --height 150 \
	--vertical-label packages --title "Packages trying: $3" -E \
	${RRDTOOL_ARGS} \
	DEF:tryenter=$STATFILE:tryenter:AVERAGE \
		VDEF:ltryenter=tryenter,LAST \
		VDEF:mintryenter=tryenter,MINIMUM \
		VDEF:maxtryenter=tryenter,MAXIMUM \
		VDEF:avgtryenter=tryenter,AVERAGE \
		LINE2:tryenter#C62BD9:"Packages trying to enter\:" \
		GPRINT:ltryenter:"%3.0lf" \
		GPRINT:mintryenter:"\tMin\: %3.0lf" \
		GPRINT:maxtryenter:"\tMax\: %3.0lf" \
		GPRINT:avgtryenter:"\tAvg\: %3.0lf\j" \
	DEF:temptryleave=$STATFILE:tryleave:AVERAGE \
  CDEF:tryleave=temptryleave,-1,* \
		VDEF:ltryleave=tryleave,LAST \
		VDEF:mintryleave=tryleave,MINIMUM \
		VDEF:maxtryleave=tryleave,MAXIMUM \
		VDEF:avgtryleave=tryleave,AVERAGE \
		LINE2:tryleave#D9382B:"Packages trying to leave\:" \
		GPRINT:ltryleave:"%3.0lf" \
		GPRINT:mintryleave:"\tMin\: %3.0lf" \
		GPRINT:maxtryleave:"\tMax\: %3.0lf" \
		GPRINT:avgtryleave:"\tAvg\: %3.0lf\j" \
  VRULE:${LENNY_RELEASE}#${LENNY_RELEASE_COLOR}:"Lenny release"\
  VRULE:${SQUEEZE_FREEZE}#${SQUEEZE_FREEZE_COLOR}:"Squeeze freeze" \
  VRULE:${SQUEEZE_RELEASE}#${SQUEEZE_RELEASE_COLOR}:"Squeeze release"

rrdtool graph ${1} --start $2 --end $(date +%s) \
	--width 600 --height 150 \
	--vertical-label packages --title "Packages: $3" -E \
	${RRDTOOL_ARGS} \
	DEF:enter=$STATFILE:enter:AVERAGE \
		VDEF:lenter=enter,LAST \
		VDEF:minenter=enter,MINIMUM \
		VDEF:maxenter=enter,MAXIMUM \
		VDEF:avgenter=enter,AVERAGE \
		LINE2:enter#C62BD9:"Packages entering\:" \
		GPRINT:lenter:"%3.0lf" \
		GPRINT:minenter:"\tMin\: %3.0lf" \
		GPRINT:maxenter:"\tMax\: %3.0lf" \
		GPRINT:avgenter:"\tAvg\: %3.0lf\j" \
	DEF:templeave=$STATFILE:leave:AVERAGE \
  CDEF:leave=templeave,-1,* \
		VDEF:lleave=leave,LAST \
		VDEF:minleave=leave,MINIMUM \
		VDEF:maxleave=leave,MAXIMUM \
		VDEF:avgleave=leave,AVERAGE \
		LINE2:leave#D9382B:"Packages leaving\:" \
		GPRINT:lleave:"%3.0lf" \
		GPRINT:minleave:"\tMin\: %3.0lf" \
		GPRINT:maxleave:"\tMax\: %3.0lf" \
		GPRINT:avgleave:"\tAvg\: %3.0lf\j" \
  VRULE:${LENNY_RELEASE}#${LENNY_RELEASE_COLOR}:"Lenny release"\
  VRULE:${SQUEEZE_FREEZE}#${SQUEEZE_FREEZE_COLOR}:"Squeeze freeze" \
  VRULE:${SQUEEZE_RELEASE}#${SQUEEZE_RELEASE_COLOR}:"Squeeze release"
}

update_page() {
NOW=$(date -R)
sed 's/\$id\$/'"$NOW"'/' index.tmpl > index.html
}

#Script:

#create_rrd
get_data
do_graph $GRAPHDAY $LASTDAY day
do_graph $GRAPHWEEK $LASTWEEK week
do_graph $GRAPHMONTH $LASTMONTH month
do_graph $GRAPHYEAR $LASTYEAR year
RRDTOOL_ARGS="--x-grid MONTH:1:YEAR:1:YEAR:1:31536000:%Y"
do_graph $GRAPH5YEARS $LAST5YEARS "5 years"
do_graph $GRAPH10YEARS $LAST10YEARS "10 years"
update_page

