#!/bin/bash -x

if [ $# -lt 2 ] ; then
  echo cmpjob.sh "<branch-or-tag>" "<branch-or-tag>" "bent-options"
  exit 1
fi

if [ ${1:0:1} = "-" ] ; then
  echo "First parameter should be a git tag or branch"
  exit 1
fi

if [ ${2:0:1} = "-" ] ; then
  echo "Second parameter should be a git tag or branch"
  exit 1
fi

oldtag="$1"
shift

newtag="$1"
shift

ROOT=`pwd`
export ROOT oldtag newtag

# perflock is not always available
PERFLOCK=`which perflock`

# N is number of benchmarks, B is number of builds
# Can override these with -N= and -a= on command line.
N=15
B=1

# Adjust N, B, define NUMACTL, set GOMAXPROCS, as necessary.
if [ -e ./localfix ] ; then
	. ./localfix
fi

REPO="https://go.googlesource.com/go"

cd "${ROOT}"

if [ -e go-old ] ; then
	rm -rf go-old
fi

git clone "${REPO}" go-old
if [ "$?" != "0" ] ; then
	echo git clone "${REPO}" go-old FAILED
	exit 1
fi
cd go-old/src
git fetch "${REPO}" "${oldtag}"
git checkout "${oldtag}"
if [ $? != 0 ] ; then
	echo git checkout "${oldtag}" failed
	exit 1
fi
./make.bash
if [ $? != 0 ] ; then
	echo BASE make.bash FAILED
	exit 1
fi

cd "${ROOT}"

if [ -e go-new ] ; then
	rm -rf go-new
fi
git clone "${REPO}" go-new
if [ $? != 0 ] ; then
	echo git clone go-new failed
	exit 1
fi
cd go-new/src
git fetch "${REPO}" "${newtag}"
git checkout "${newtag}"
if [ $? != 0 ] ; then
	echo git checkout "${newtag}" failed
	exit 1
fi
./make.bash
if [ $? != 0 ] ; then
	echo make.bash failed
	exit 1
fi

cd "${ROOT}"
GOARCH="${BENTARCH}" ${NUMACTL} ${PERFLOCK}  bent -v -N=${N} -a=${B} -L=bentjobs.log -C=configurations-cmpjob.toml "$@"
RUN=`tail -1 bentjobs.log | awk -c '{print $1}'`

cd bench
STAMP="stamp-$$"
export STAMP
echo "suite: bent-cmp-branch" >> "${STAMP}"
echo "bentstamp: ${RUN}" >> "${STAMP}"
echo "oldtag: ${oldtag}" >> "${STAMP}"
echo "newtag: ${newtag}" >> "${STAMP}"

oldlog="old-${oldtag}"
newlog="new-${newtag}"

cat "${RUN}.Old.build" > "${oldlog}"
cat "${RUN}.New.build" > "${newlog}"
egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.Old.stdout" >> "${oldlog}"
egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.New.stdout" >> "${newlog}"
cat "${RUN}.Old.{benchsize,benchdwarf}" >> "${oldlog}"
cat "${RUN}.New.{benchsize,benchdwarf}" >> "${newlog}"
benchsave -header "${STAMP}" "${oldlog}" "${newlog}"
rm "${STAMP}"
