diff options
Diffstat (limited to 'protocols/skype/t/livetest-bitlbee.sh')
-rwxr-xr-x | protocols/skype/t/livetest-bitlbee.sh | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/protocols/skype/t/livetest-bitlbee.sh b/protocols/skype/t/livetest-bitlbee.sh new file mode 100755 index 00000000..7cbfbf6e --- /dev/null +++ b/protocols/skype/t/livetest-bitlbee.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash + +start_skyped() +{ + python ../skyped.py "$@" > skypedtest.pid + while true + do + [ -e skypedtest.pid ] || break + pid=$(sed 's/.*: //' skypedtest.pid) + if [ -n "$(ps -p $pid -o pid=)" ]; then + sleep 5 + else + start_skyped "$@" + break + fi + done +} + +BITLBEE=$1 +typeset -ix PORT=`echo $2 | egrep '^[0-9]{1,5}$'` +SCRIPT=$3 +shift 3 + +[ -n "$SCRIPT" -a -n "$BITLBEE" -a -e "$SCRIPT" -a "$PORT" -ne 0 ] || { echo Syntax: `basename "$0"` bitlbee-executable listening-port test-script test-script-args; exit 1; } + +# Create or empty test dir +mkdir livetest 2>/dev/null || rm livetest/bitlbeetest*.xml bitlbeetest.pid 2>/dev/null + +# Run the bee +echo Running bitlbee... +$VALGRIND $BITLBEE -n -c bitlbee.conf -d livetest/ -D -P bitlbeetest.pid -p $PORT 2>bitlbee.log & +sleep 2 + +# Check if it's really running +kill -0 `cat bitlbeetest.pid 2>/dev/null ` 2>/dev/null || { echo Failed to run bitlbee daemon on port $PORT; exit 1; } + +if [ -z "$TUNNELED_MODE" ]; then + # Set up skyped + + rm -rf etc + mkdir etc + cd etc + cp ../../skyped.cnf . + cp ~/.skyped/skyped.cert.pem . + cp ~/.skyped/skyped.key.pem . + cd .. + echo "[skyped]" > skyped.conf + echo "username = $TEST_SKYPE_ID" >> skyped.conf + SHA1=`which sha1sum` + if [ -z "$SHA1" ]; then + SHA1=`which sha1` + fi + if [ -z "$SHA1" ]; then + echo Test failed + echo "(Can't compute password for skyped.conf)" + exit 77 + fi + echo "password = $(echo -n $TEST_SKYPE_PASSWORD|$SHA1|sed 's/ *-$//')" >> skyped.conf + # we use ~ here to test that resolve that syntax works + echo "cert = $(pwd|sed "s|$HOME|~|")/etc/skyped.cert.pem" >> skyped.conf + echo "key = $(pwd|sed "s|$HOME|~|")/etc/skyped.key.pem" >> skyped.conf + echo "port = 2727" >> skyped.conf + + # Run skyped + start_skyped -c skyped.conf -l skypedtest.log & + sleep 2 +fi + +if [ "$TUNNELED_MODE" = "yes" ]; then + rm -f tunnel.pid + if [ -n "$TUNNEL_SCRIPT" ]; then + $TUNNEL_SCRIPT & + echo $! > tunnel.pid + sleep 5 + fi +fi + +# Run the test +echo Running test script... +"$SCRIPT" $* +RET=$? + +if [ -z "$TUNNELED_MODE" ]; then + # skyped runs on another host: no means to kill it + # Kill skyped + killall -TERM skype + if [ -f skypedtest.pid ]; then + pid=$(sed 's/.*: //' skypedtest.pid) + rm skypedtest.pid + [ -n "$(ps -p $pid -o pid=)" ] && kill -TERM $pid + fi +fi + +if [ "$TUNNELED_MODE" = "yes" ]; then + if [ -n "$TUNNEL_SCRIPT" ]; then + cat tunnel.pid >> /tmp/tunnel.pid + kill `cat tunnel.pid` + rm -f tunnel.pid + fi +fi + +# Kill bee +echo Killing bitlbee... +kill `cat bitlbeetest.pid` + +if [ "$TUNNELED_MODE" = "yes" ]; then + # give the skyped a chance to timeout + sleep 30 +fi + +# Return test result +[ $RET -eq 0 ] && echo Test passed +[ $RET -ne 0 ] && echo Test failed +[ $RET -eq 22 ] && echo '(timed out)' +[ $RET -eq 66 ] && echo '(environment variables missing)' +exit $RET |