summaryrefslogtreecommitdiff
path: root/nightly.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nightly.sh')
-rwxr-xr-xnightly.sh110
1 files changed, 110 insertions, 0 deletions
diff --git a/nightly.sh b/nightly.sh
new file mode 100755
index 0000000..4c92659
--- /dev/null
+++ b/nightly.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+
+TITLE="master"
+HOME="/home/ist"
+LAZARDIR="$HOME/lazar"
+LAZARGUI="$HOME/lazar-gui"
+BRANCH="master"
+
+. $HOME/.bashrc
+
+GIT=`which git`
+DATE=`date +%y%m%d`
+separator="============================"
+
+LOGDIR="$HOME/log"
+COMID="$LOGDIR/id.log"
+ERRLOG="$LOGDIR/$DATE-err.log"
+LOG="$LOGDIR/$DATE.log"
+MSG="$HOME/msg.log"
+rm "$LOG" 2>/dev/null
+rm "$ERRLOG" 2>/dev/null
+rm "$MSG" 2>/dev/null
+
+touch $COMID
+touch $LOG
+touch $ERRLOG
+touch $MSG
+
+if ! cd "$LAZARDIR"; then
+ echo "lazar dir not found."
+ exit 1
+fi
+
+# pull lazar code from github
+if ! $GIT checkout $BRANCH; then
+ echo "lazar checkout to $BRANCH failed."
+ exit 1
+fi
+
+if ! $GIT pull; then
+ echo "lazar pull failed."
+ exit 1
+fi
+
+if ! cd $LAZARDIR/test; then
+ echo "test dir not found."
+ exit 1
+fi
+
+
+task_out=""
+echo "https://github.com/opentox/lazar | branch: $BRANCH | latest commit:" >> $MSG
+$GIT log|head -6 | tee -a $LOG $MSG
+echo $separator >>$MSG
+
+
+cd $LAZARDIR/test
+tests=(*.rb)
+exclude=(setup.rb all.rb default_environment.rb model-nanoparticle.rb nanomaterial-model-validation.rb validation-nanoparticle.rb)
+for i in ${exclude[@]}; do
+ # delete exclute from tests list
+ tests=(${tests[@]//*$i*})
+done
+
+for t in ${tests[@]}; do
+ echo $separator | tee -a $LOG $MSG
+ echo " "$t|tr [a-z] [A-Z] | tee -a $LOG $MSG
+ echo " "`date` | tee -a $LOG $MSG
+ echo $separator | tee -a $LOG $MSG
+ echo ruby $t | tee -a $LOG $MSG
+ # whole test output to logfile only
+ ruby $t >> $LOG
+ # take last occurrence of regex to end of the file
+ awk '/^Finished in/ { buf = "" } { buf = buf "\n" $0 } END { print buf }' $LOG >> $MSG
+ echo "" >> $LOG
+done
+
+cd $LAZARGUI/test
+tests=(*.rb)
+for t in ${tests[@]}; do
+ echo $separator | tee -a $LOG $MSG
+ echo " "$t|tr [a-z] [A-Z] | tee -a $LOG $MSG
+ echo " "`date` | tee -a $LOG $MSG
+ echo $separator | tee -a $LOG $MSG
+ echo ruby $t | tee -a $LOG $MSG
+ # whole test output to logfile only
+ ruby $t >> $LOG
+ # take last occurrence of regex to end of the file
+ awk '/^Finished in/ { buf = "" } { buf = buf "\n" $0 } END { print buf }' $LOG >> $MSG
+ echo "" >> $LOG
+done
+
+# MAIL
+file="$HOME/scripts/recipients"
+recipients=$(cat $file)
+if grep -q "Error:" $LOG; then ERRMSG=" ERROR (`grep -c ' Error:' $LOG`)"; else ERRMSG=" OK "; fi
+if grep -q "Failure:" $LOG; then FAILMSG=" FAIL (`grep -c ' Failure:' $LOG`)"; else FAILMSG=""; fi
+
+for p in ${recipients[@]}; do
+ { printf "To: $p\nSubject: [lazar nightly test] -$TITLE- $DATE $ERRMSG $FAILMSG\n"; cat $MSG; } | msmtp -a default $p
+done
+
+# drop database
+mongo development --eval "db.dropDatabase()"
+
+rm $COMID
+touch $COMID
+$GIT log|head -1 >> $COMID
+exit 0