#!/bin/bash

TESTNAME=$1
RESULTNAME=$2

cd $(dirname $0)

RESULTSPATH=$PWD/results/$RESULTNAME

CORPUS=$PWD/corpus
HELPERPATH=$PWD/helper/$TESTNAME
TESTSPATH=$PWD/tests/$TESTNAME

USERPREFS=$RESULTSPATH/user_prefs
SITECONFIG=$RESULTSPATH/site
CONFIGPATH=$RESULTSPATH/share
DBPATH=$RESULTSPATH/dbdir/bayes

# Uncomment this variable if you want to override the system wide configpath
CONFIGPATHVALUE=--configpath=$CONFIGPATH

runcmd () {
    echo "$*"
    #time env PERL5OPT=-d:NYTProf NYTPROF=trace=2; $*
    time $*

    echo "** DB STATS **"
    /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --dump magic
    $HELPERPATH/dbsize $RESULTSPATH
}

mkdir -p $RESULTSPATH
cp -R $TESTSPATH/* $RESULTSPATH
exec &> $RESULTSPATH/output.txt

$HELPERPATH/setup $RESULTSPATH

$HELPERPATH/cleardb $RESULTSPATH

echo "[Running sa-learn --ham on hambucket1.mbox]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --ham --mbox $CORPUS/hambucket1.mbox

echo "[Running sa-learn --spam on spambucket1.mbox]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --spam --mbox $CORPUS/spambucket1.mbox

echo "[Backing Up Bayes Tokens]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --backup > $RESULTSPATH/backup1.txt

echo "[Running Bayes force-expire]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --force-expire

echo "[Removing old spamd.log file]"
rm $RESULTSPATH/spamd.log

echo "[Starting up spamd]"
/usr/sbin/spamd -d -L $CONFIGPATHVALUE --siteconfigpath=$SITECONFIG -x --syslog=$RESULTSPATH/spamd.log --socketpath=/tmp/spamd.sock --pidfile=$RESULTSPATH/spamd.pid

echo "[Sleeping a little to make sure spamd starts up]"
sleep 10

spamdpid=$(cat $RESULTSPATH/spamd.pid)

trap "kill $spamdpid" ERR EXIT INT TERM

echo "[Running Bucket 2]"
#$PWD/runmbox.pl $CORPUS/hambucket2.mbox $CORPUS/spambucket2.mbox
time $PWD/runmulti.pl $CORPUS/hambucket2.mbox $CORPUS/spambucket2.mbox $CORPUS/hambucket3.mbox $CORPUS/spambucket3.mbox

echo "[Running Bayes sync]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --sync

echo "[Backing Up Bayes Tokens]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --backup > $RESULTSPATH/backup2.txt

echo "[Running Bayes force-expire]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --force-expire

echo "[Backing Up Bayes Tokens]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --backup > $RESULTSPATH/backup3.txt

echo "[Running sa-learn --forget on hamforget1.mbox]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --forget --mbox $CORPUS/hamforget1.mbox

echo "[Running sa-learn --forget on spamforget1.mbox]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --forget --mbox $CORPUS/spamforget1.mbox

echo "[Backing Up Bayes Tokens]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --backup > $RESULTSPATH/backup4.txt

echo "[Running spamassassin on hambucket3.mbox]"
runcmd /usr/bin/spamassassin -L $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --mbox $CORPUS/hambucket4.mbox > /dev/null

echo "[Running spamassassin on spambucket3.mbox]"
runcmd /usr/bin/spamassassin -L $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --mbox $CORPUS/spambucket4.mbox > /dev/null

echo "[Running Bayes sync]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --sync

echo "[Backing Up Bayes Tokens]"
runcmd /usr/bin/sa-learn $CONFIGPATHVALUE -p $USERPREFS --siteconfigpath=$SITECONFIG --dbpath $DBPATH --backup > $RESULTSPATH/backup5.txt
