#!/bin/bash
# compute a simple scalar product
# payload for this test:
-INPUTALICE="-k CCC -e -1,1,-1"
-INPUTBOB="-k CCC -e 1,1,0"
+INPUTALICE="-k CCC -e 'AB,10;RO,-1;FL,1;LOL,1;'"
+INPUTBOB="-k CCC -e 'BC,20;RO,1;FL,1;LOL,0;'"
# necessary to make the testing prefix deterministic, so we can access the config files
PREFIX=/tmp/test-scalarproduct`date +%H%M%S`
# launch two peers in line topology non-interactively
#
-# interactive mode would terminate the test immediately
-# because the rest of the script is already in stdin,
+# interactive mode would terminate the test immediately
+# because the rest of the script is already in stdin,
# thus redirecting stdin does not suffice)
-GNUNET_LOG='scalarproduct;;;;DEBUG' GNUNET_TESTING_PREFIX=$PREFIX ../testbed/gnunet-testbed-profiler -n -c test_scalarproduct.conf -p 2 2>service.log &
+# GNUNET_LOG='scalarproduct;;;;DEBUG'
+GNUNET_TESTING_PREFIX=$PREFIX ../testbed/gnunet-testbed-profiler -n -c test_scalarproduct.conf -p 2 &
PID=$!
+# sleep 1 is too short on most systems, 2 works on most, 5 seems to be safe
sleep 5
-# get bob's peer ID, necessary for alice
-PEERIDBOB=`gnunet-peerinfo -qs $CFGBOB`
+which timeout &> /dev/null && DO_TIMEOUT="timeout 15"
-GNUNET_LOG='scalarproduct;;;;DEBUG' gnunet-scalarproduct $CFGBOB $INPUTBOB 2>bob.log &
-RESULT=`GNUNET_LOG='scalarproduct;;;;DEBUG' gnunet-scalarproduct $CFGALICE $INPUTALICE -p $PEERIDBOB 2>alice.log`
+# get bob's peer ID, necessary for alice
+PEERIDBOB=`${DO_TIMEOUT} gnunet-peerinfo -qs $CFGBOB`
-cat alice.log bob.log service.log >> test_scalarproduct.log
-rm -f alice.log bob.log service.log
-ISSUES=$((`grep scalarproduct test_scalarproduct.log | grep -c ERROR` + `grep scalarproduct test_scalarproduct.log | grep -c WARNING`))
+#GNUNET_LOG=';;;;DEBUG'
+${DO_TIMEOUT} gnunet-scalarproduct $CFGBOB $INPUTBOB &
+#GNUNET_LOG=';;;;DEBUG'
+RESULT=`${DO_TIMEOUT} gnunet-scalarproduct $CFGALICE $INPUTALICE -p $PEERIDBOB`
# terminate the testbed
-kill $PID
+kill $PID
EXPECTED="00"
-if [ "$ISSUES" -eq "0" ]
+if [ "$RESULT" == "$EXPECTED" ]
then
- if [ "$RESULT" == "$EXPECTED" ]
- then
- echo "OK"
- rm -f test_scalarproduct.log
- exit 0
- fi
+ echo "OK"
+ exit 0
else
- echo "Result $RESULT NOTOK, see $PWD/test_scalarproduct.log for details"
- exit 1
+ echo "Result $RESULT NOTOK"
+ exit 1
fi
-