diff -r 947cd22ec986 -r 5d037d947cd6 test-suite/start-test-suite.sh --- a/test-suite/start-test-suite.sh Sat Apr 19 17:00:40 2014 +0200 +++ b/test-suite/start-test-suite.sh Wed Apr 30 12:02:50 2014 +0200 @@ -1,13 +1,36 @@ #!/bin/bash -echo "Starting test server" TESTSERVER_LOGS="/tmp/django_test_server_logs.`date +%F_%T`" -cd .. -nohup ./bin/django testserver --noinput localhost:8000 initial_data roles_generic test_suite > $TESTSERVER_LOGS 2>&1 & -TESTSERVER_PID=$! -cd "test-suite" +if [ -z "$WORKSPACE_INFO" ]; then + WORKSPACE_INFO="workspace.info.js" +fi + +WORKSPACE_URL_LINE=`grep -v '^[[:space:]]*//' "$WORKSPACE_INFO" | grep WORKSPACE_URL | head -n 1` +echo "Workspace_url_line : $WORKSPACE_URL_LINE" + +SERVER_IP=`echo "$WORKSPACE_URL_LINE" | sed "s|^.*http://\([-._[:alnum:]]*\).*$|\1|"` +if [ "$SERVER_IP" = "$WORKSPACE_URL_LINE" ]; then + echo "No ip found in WORKSPACE_URL, using localhost" + SERVER_IP="127.0.0.1" +fi + +SERVER_PORT=`echo "$WORKSPACE_URL_LINE" | sed "s|^.*http://[-._[:alnum:]]*:\([0-9]*\).*$|\1|"` +if [ "$SERVER_PORT" = "$WORKSPACE_URL_LINE" ]; then + echo "No port found in WORKSPACE_URL, using 80" + SERVER_PORT="80" +fi + +echo "Test server : $SERVER_IP:$SERVER_PORT" + +if [ -z "$TESTSERVER_STARTED" ]; then + echo "Starting test server" + cd .. + nohup ./bin/django testserver --noinput localhost:$SERVER_PORT initial_data roles_generic test_suite > $TESTSERVER_LOGS 2>&1 & + TESTSERVER_PID=$! + cd "test-suite" +fi # Exports browsers _BIN variables for karma export CHROME_BIN=`which chromium` @@ -44,9 +67,6 @@ TESTSERVER_LOOP_WAIT=5 TESTSERVER_WAIT_LOOP_NB=5 -SERVER_IP=`grep WORKSPACE_URL workspace.info.js | sed "s|^.*http://\([-._[:alnum:]]*\):.*$|\1|"` -SERVER_PORT=`grep WORKSPACE_URL workspace.info.js | sed "s|^.*http://[-._[:alnum:]]*:\([0-9]*\)/.*$|\1|"` - if [[ -x `which nc` ]]; then SERVER_TEST_CMD="nc -w $CONNECTION_TIMEOUT -z $SERVER_IP $SERVER_PORT" elif [[ -x `which curl` ]]; then @@ -61,14 +81,16 @@ echo "No http tool available so blindly waiting $TESTSERVER_START_WAIT seconds to let test server start" sleep $TESTSERVER_START_WAIT else + SERVER_STARTED=false for i in $(seq 1 $TESTSERVER_WAIT_LOOP_NB); do echo "and waiting $TESTSERVER_LOOP_WAIT seconds" sleep $TESTSERVER_LOOP_WAIT if $SERVER_TEST_CMD; then + SERVER_STARTED=true break fi done - if [ $i -eq $TESTSERVER_WAIT_LOOP_NB ]; then + if ! $SERVER_STARTED && [ $i -eq $TESTSERVER_WAIT_LOOP_NB ]; then echo "timeouted waiting for test server $SERVER_IP:$SERVER_PORT to start" exit 1 fi @@ -78,11 +100,14 @@ echo "$KARMA start $@" "$KARMA" start $@ -read -p "Keep testserver (PID $TESTSERVER_PID) running ? (y/N)" -n 1 -r -t 5 -echo # (optional) move to a new line -if [[ $REPLY =~ ^[Yy]$ ]]; then - exit 0 +if [ -z "$TESTSERVER_STARTED" ]; then + read -p "Keep testserver (PID $TESTSERVER_PID) running ? (y/N)" -n 1 -r -t 5 + echo # (optional) move to a new line + + if [[ $REPLY =~ ^[Yy]$ ]]; then + exit 0 + fi + + kill $TESTSERVER_PID fi - -kill $TESTSERVER_PID