test-suite/start-test-suite.sh
changeset 642 5d037d947cd6
parent 638 61dc5370b351
child 644 5ab0dc95fddf
equal deleted inserted replaced
640:947cd22ec986 642:5d037d947cd6
     1 #!/bin/bash
     1 #!/bin/bash
     2 
     2 
     3 echo "Starting test server"
       
     4 
     3 
     5 TESTSERVER_LOGS="/tmp/django_test_server_logs.`date +%F_%T`"
     4 TESTSERVER_LOGS="/tmp/django_test_server_logs.`date +%F_%T`"
     6 
     5 
     7 cd ..
     6 if [ -z "$WORKSPACE_INFO" ]; then
     8 nohup ./bin/django testserver --noinput localhost:8000 initial_data roles_generic test_suite > $TESTSERVER_LOGS 2>&1 &
     7     WORKSPACE_INFO="workspace.info.js"
     9 TESTSERVER_PID=$!
     8 fi
    10 cd "test-suite"
     9 
       
    10 WORKSPACE_URL_LINE=`grep -v '^[[:space:]]*//' "$WORKSPACE_INFO" | grep WORKSPACE_URL | head -n 1`
       
    11 echo "Workspace_url_line : $WORKSPACE_URL_LINE"
       
    12 
       
    13 SERVER_IP=`echo "$WORKSPACE_URL_LINE" | sed "s|^.*http://\([-._[:alnum:]]*\).*$|\1|"`
       
    14 if [ "$SERVER_IP" = "$WORKSPACE_URL_LINE" ]; then
       
    15     echo "No ip found in WORKSPACE_URL, using localhost"
       
    16     SERVER_IP="127.0.0.1"
       
    17 fi
       
    18 
       
    19 SERVER_PORT=`echo "$WORKSPACE_URL_LINE" | sed "s|^.*http://[-._[:alnum:]]*:\([0-9]*\).*$|\1|"`
       
    20 if [ "$SERVER_PORT" = "$WORKSPACE_URL_LINE" ]; then
       
    21     echo "No port found in WORKSPACE_URL, using 80"
       
    22     SERVER_PORT="80"
       
    23 fi
       
    24 
       
    25 echo "Test server : $SERVER_IP:$SERVER_PORT"
       
    26 
       
    27 if [ -z "$TESTSERVER_STARTED" ]; then
       
    28     echo "Starting test server"
       
    29     cd ..
       
    30     nohup ./bin/django testserver --noinput localhost:$SERVER_PORT initial_data roles_generic test_suite > $TESTSERVER_LOGS 2>&1 &
       
    31     TESTSERVER_PID=$!
       
    32     cd "test-suite"
       
    33 fi
    11 
    34 
    12 # Exports browsers _BIN variables for karma
    35 # Exports browsers _BIN variables for karma
    13 export CHROME_BIN=`which chromium`
    36 export CHROME_BIN=`which chromium`
    14 if [ -z "$CHROME_BIN" ]; then
    37 if [ -z "$CHROME_BIN" ]; then
    15 	export CHROME_BIN=`which chrome`
    38 	export CHROME_BIN=`which chrome`
    42 CONNECTION_TIMEOUT=10
    65 CONNECTION_TIMEOUT=10
    43 TESTSERVER_START_WAIT=15
    66 TESTSERVER_START_WAIT=15
    44 TESTSERVER_LOOP_WAIT=5
    67 TESTSERVER_LOOP_WAIT=5
    45 TESTSERVER_WAIT_LOOP_NB=5
    68 TESTSERVER_WAIT_LOOP_NB=5
    46 
    69 
    47 SERVER_IP=`grep WORKSPACE_URL workspace.info.js | sed "s|^.*http://\([-._[:alnum:]]*\):.*$|\1|"`
       
    48 SERVER_PORT=`grep WORKSPACE_URL workspace.info.js | sed "s|^.*http://[-._[:alnum:]]*:\([0-9]*\)/.*$|\1|"`
       
    49 
       
    50 if [[ -x `which nc` ]]; then
    70 if [[ -x `which nc` ]]; then
    51 	SERVER_TEST_CMD="nc -w $CONNECTION_TIMEOUT -z $SERVER_IP $SERVER_PORT"
    71 	SERVER_TEST_CMD="nc -w $CONNECTION_TIMEOUT -z $SERVER_IP $SERVER_PORT"
    52 elif [[ -x `which curl` ]]; then
    72 elif [[ -x `which curl` ]]; then
    53 	SERVER_TEST_CMD="curl -m $CONNECTION_TIMEOUT --output /dev/null --silent --head --fail http://$SERVER_IP:$SERVER_PORT"
    73 	SERVER_TEST_CMD="curl -m $CONNECTION_TIMEOUT --output /dev/null --silent --head --fail http://$SERVER_IP:$SERVER_PORT"
    54 elif [[ -x `which wget` ]]; then
    74 elif [[ -x `which wget` ]]; then
    59 
    79 
    60 if [[ -z "$SERVER_TEST_CMD" ]]; then
    80 if [[ -z "$SERVER_TEST_CMD" ]]; then
    61 	echo "No http tool available so blindly waiting $TESTSERVER_START_WAIT seconds to let test server start"
    81 	echo "No http tool available so blindly waiting $TESTSERVER_START_WAIT seconds to let test server start"
    62 	sleep $TESTSERVER_START_WAIT
    82 	sleep $TESTSERVER_START_WAIT
    63 else
    83 else
       
    84 	SERVER_STARTED=false
    64 	for i in $(seq 1 $TESTSERVER_WAIT_LOOP_NB); do
    85 	for i in $(seq 1 $TESTSERVER_WAIT_LOOP_NB); do
    65 		echo "and waiting $TESTSERVER_LOOP_WAIT seconds"
    86 		echo "and waiting $TESTSERVER_LOOP_WAIT seconds"
    66 		sleep $TESTSERVER_LOOP_WAIT
    87 		sleep $TESTSERVER_LOOP_WAIT
    67 		if $SERVER_TEST_CMD; then
    88 		if $SERVER_TEST_CMD; then
       
    89 			SERVER_STARTED=true
    68 			break
    90 			break
    69 		fi
    91 		fi
    70 	done
    92 	done
    71 	if [ $i -eq $TESTSERVER_WAIT_LOOP_NB ]; then
    93 	if ! $SERVER_STARTED && [ $i -eq $TESTSERVER_WAIT_LOOP_NB ]; then
    72 		 echo "timeouted waiting for test server $SERVER_IP:$SERVER_PORT to start"
    94 		 echo "timeouted waiting for test server $SERVER_IP:$SERVER_PORT to start"
    73 		 exit 1
    95 		 exit 1
    74 	fi
    96 	fi
    75 fi
    97 fi
    76 
    98 
    77 echo "---------------------"
    99 echo "---------------------"
    78 echo "$KARMA start $@"
   100 echo "$KARMA start $@"
    79 "$KARMA" start $@
   101 "$KARMA" start $@
    80 
   102 
    81 read -p "Keep testserver (PID $TESTSERVER_PID) running ? (y/N)" -n 1 -r -t 5
       
    82 echo    # (optional) move to a new line
       
    83 
   103 
    84 if [[ $REPLY =~ ^[Yy]$ ]]; then
   104 if [ -z "$TESTSERVER_STARTED" ]; then
    85 	exit 0
   105     read -p "Keep testserver (PID $TESTSERVER_PID) running ? (y/N)" -n 1 -r -t 5
       
   106     echo    # (optional) move to a new line
       
   107     
       
   108     if [[ $REPLY =~ ^[Yy]$ ]]; then
       
   109     	exit 0
       
   110     fi
       
   111 
       
   112     kill $TESTSERVER_PID
    86 fi
   113 fi
    87 
       
    88 kill $TESTSERVER_PID