Move simulation execution from Makefile to Bash script; show Progress

Additional code is needed to show the progress. Otherwise Travis is
likely to become unhappy and terminates the job. This was no fun within
the Makefile. Moving the execution to a Bash script allows better
maintainability.
In case of an error the error all logs will be printed when using a CI.
This commit is contained in:
Moritz 'Morty' Strübe 2013-11-07 15:22:47 +01:00
parent d81abb33fd
commit dcbd7936ad
2 changed files with 70 additions and 11 deletions

View File

@ -56,17 +56,8 @@ else
RUNALL=false RUNALL=false
endif endif
%.testlog: %.csc cooja %.testlog: %.csc cooja
@echo -n Running test $(basename $<) ... "" @$(CONTIKI)/regression-tests/simexec.sh "$(RUNALL)" "$<" "$(CONTIKI)" "$(basename $@)" "$(RANDOMSEED)"
@(java -Xshare:on -jar $(CONTIKI)/tools/cooja/dist/cooja.jar \
-nogui=$< -contiki=$(CONTIKI) -random-seed=$(RANDOMSEED) > $(basename $@).log || \
(echo " FAIL ಠ_ಠ" | tee -a COOJA.testlog; \
tail -50 COOJA.log; \
mv COOJA.testlog $(basename $<).faillog; \
$(RUNALL))) && \
(touch COOJA.testlog; \
mv COOJA.testlog $@; \
echo " OK")
clean: clean:
@rm -f $(TESTLOGS) $(LOGS) $(FAILLOGS) COOJA.log COOJA.testlog \ @rm -f $(TESTLOGS) $(LOGS) $(FAILLOGS) COOJA.log COOJA.testlog \

68
regression-tests/simexec.sh Executable file
View File

@ -0,0 +1,68 @@
#!/bin/bash
RUNALL=$1
CSC=$2
CONTIKI=$3
BASENAME=$4
RANDOMSEED=$5
#set -x
echo -n "Running test $BASENAME "
java -Xshare:on -jar $CONTIKI/tools/cooja/dist/cooja.jar -nogui=$CSC -contiki=$CONTIKI -random-seed=$RANDOMSEED > $BASENAME.log &
JPID=$!
# Copy the log and only print "." if it changed
touch $BASENAME.log.prog
while kill -0 $JPID 2> /dev/null
do
sleep 1
diff $BASENAME.log $BASENAME.log.prog > /dev/null
if [ $? -ne 0 ]
then
echo -n "."
cp $BASENAME.log $BASENAME.log.prog
fi
done
rm $BASENAME.log.prog
wait $JPID
JRV=$?
if [ $JRV -eq 0 ] ; then
touch COOJA.testlog;
mv COOJA.testlog $BASENAME.testlog
echo " OK"
exit 0
fi
# In case of failure
echo " FAIL ಠ_ಠ" | tee -a COOJA.testlog;
#Verbose output when using CI
if [ "$CI" = "true" ]; then
echo "==== COOJA.log ====" ; cat COOJA.log;
echo "==== COOJA.testlog ====" ; cat COOJA.testlog;
else
tail -50 COOJA.log ;
fi;
mv COOJA.testlog $BASENAME.faillog
# We do not want Make to stop -> Return 0
if [ "$RUNALL" = "true" ] ; then
touch COOJA.testlog;
mv COOJA.testlog $BASENAME.testlog;
exit 0
fi
#This is a failure
exit 1