#!/usr/bin/zsh

emgarg=-fg

if [ $# -gt 0 ]; then
	emgarg=$1
fi

rc=1
fname=hg.log

basedir=/opt/emg/server
export PATH=$basedir/bin:$PATH

# /usr/bin/printenv | grep EMG_ > env.txt

alias vg="valgrind --tool=helgrind --trace-children=yes --num-callers=30 --suppressions=$basedir/tests/tcases/helgrind.supp --gen-suppressions=all --error-exitcode=1"

# vg /usr/bin/printenv > vg-env.txt 2>&1

rc=0

#echo run vg emgd $emgarg
vg emgd $emgarg > $fname 2>&1
vgexit=$?
# echo got vg exitcode $vgexit
if [ $vgexit -gt 0 ]; then
	exit $vgexit
fi

n=0
while ! grep -q '^=.*Helgrind' $fname; do
	if grep -q "Server could not be started." $fname; then
		exit 1
	fi
	n=`expr $n + 1`
	if [ $n -gt 10 ]; then
		exit 1
	fi
	echo Waiting for Helgrind output in $fname
	sleep 1
done

pid=`grep '^=.*Helgrind, a thread error detector' $fname | cut -d" " -f1 | tr -d '='`
#echo will look for $pid

while ! grep -q "^==$pid== ERROR SUMMARY" $fname; do
	# echo waiting for summary
	sleep 1
done

if ! grep -q "^==$pid== ERROR SUMMARY: 0 errors from 0 contexts" $fname; then
	exit 1
fi

exit 0

