#!/bin/bash
-
-CFGA="-c ./test_scalarproduct_alice.conf"
-CFGB="-c ./test_scalarproduct_bob.conf"
- #can't use ` directly
-SESSIONDATA="-k AAAA -e 10,10,10"
-EXPECTED="2C0"
-
-gnunet-arm -s $CFGA
-sleep 2
-gnunet-arm -s $CFGB
-sleep 2
-
-IDB=`gnunet-peerinfo -s $CFGB | awk -F "\x60" '{print $2}' | awk -F "'" '{print $1}'`
-
-gnunet-scalarproduct $CFGB $SESSIONDATA
-
-RESULT=`gnunet-scalarproduct $CFGA $SESSIONDATA -p $IDB`
-
-gnunet-arm -e $CFGA &
-gnunet-arm -e $CFGB &
-
+# compute a simple scalar product
+# payload for this test:
+INPUTALICE="-k CCC -e 'AB,10;RO,3;FL,3;LOL,-1;'"
+INPUTBOB="-k CCC -e 'BC,-20000;RO,1000;FL,100;LOL,24;'"
+
+# necessary to make the testing prefix deterministic, so we can access the config files
+PREFIX=/tmp/test-scalarproduct`date +%H%M%S`
+
+# where can we find the peers config files?
+CFGALICE="-c $PREFIX/0/config"
+CFGBOB="-c $PREFIX/1/config"
+
+# 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,
+# 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 &
+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`
+
+#GNUNET_LOG=';;;;DEBUG'
+gnunet-scalarproduct $CFGBOB $INPUTBOB &
+GNUNET_LOG=';;;;DEBUG'
+RESULT=`gnunet-scalarproduct $CFGALICE $INPUTALICE -p $PEERIDBOB`
+
+# terminate the testbed
+kill $PID
+
+EXPECTED="0CCC"
if [ "$RESULT" == "$EXPECTED" ]
then
- echo "OK"
- exit 0
+ echo "OK"
+ exit 0
else
- echo "Result $RESULT NOTOK"
- exit 1
+ echo "Result $RESULT NOTOK"
+ exit 1
fi