test-suite/start-test-suite.sh
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Wed, 30 Apr 2014 16:19:21 +0200
changeset 644 5ab0dc95fddf
parent 642 5d037d947cd6
parent 641 8f7dafe42d15
permissions -rwxr-xr-x
Merge 641
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
     1
#!/bin/bash
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
     2
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
     3
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
     4
TESTSERVER_LOGS="/tmp/django_test_server_logs.`date +%F_%T`"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
     5
642
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
     6
if [ -z "$WORKSPACE_INFO" ]; then
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
     7
    WORKSPACE_INFO="workspace.info.js"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
     8
fi
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
     9
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    10
WORKSPACE_URL_LINE=`grep -v '^[[:space:]]*//' "$WORKSPACE_INFO" | grep WORKSPACE_URL | head -n 1`
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    11
echo "Workspace_url_line : $WORKSPACE_URL_LINE"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    12
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    13
SERVER_IP=`echo "$WORKSPACE_URL_LINE" | sed "s|^.*http://\([-._[:alnum:]]*\).*$|\1|"`
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    14
if [ "$SERVER_IP" = "$WORKSPACE_URL_LINE" ]; then
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    15
    echo "No ip found in WORKSPACE_URL, using localhost"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    16
    SERVER_IP="127.0.0.1"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    17
fi
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    18
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    19
SERVER_PORT=`echo "$WORKSPACE_URL_LINE" | sed "s|^.*http://[-._[:alnum:]]*:\([0-9]*\).*$|\1|"`
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    20
if [ "$SERVER_PORT" = "$WORKSPACE_URL_LINE" ]; then
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    21
    echo "No port found in WORKSPACE_URL, using 80"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    22
    SERVER_PORT="80"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    23
fi
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    24
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    25
echo "Test server : $SERVER_IP:$SERVER_PORT"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    26
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    27
if [ -z "$TESTSERVER_STARTED" ]; then
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    28
    echo "Starting test server"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    29
    cd ..
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    30
    nohup ./bin/django testserver --noinput localhost:$SERVER_PORT initial_data roles_generic test_suite > $TESTSERVER_LOGS 2>&1 &
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    31
    TESTSERVER_PID=$!
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    32
    cd "test-suite"
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    33
fi
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    34
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    35
# Exports browsers _BIN variables for karma
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    36
export CHROME_BIN=`which chromium`
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    37
if [ -z "$CHROME_BIN" ]; then
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    38
	export CHROME_BIN=`which chrome`
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    39
fi
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    40
if [[ -z "$CHROME_BIN" && $OSTYPE =~ ^darwin ]]; then
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    41
	CHROME_BIN_BASE=`mdfind "kMDItemCFBundleIdentifier == 'com.google.Chrome'"`
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    42
	export CHROME_BIN="$CHROME_BIN_BASE/Contents/MacOS/Google Chrome"
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    43
fi
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    44
export PHANTOMJS_BIN=`which phantomjs`
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    45
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    46
export FIREFOX_BIN=`which firefox`
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    47
if [[ -z "$FIREFOX_BIN" && $OSTYPE =~ ^darwin ]]; then
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    48
	FIREFOX_BIN_BASE=`mdfind "kMDItemCFBundleIdentifier == 'org.mozilla.firefox'"`
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    49
	export FIREFOX_BIN="$FIREFOX_BIN_BASE/Contents/MacOS/firefox"
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    50
fi
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    51
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    52
export SAFARI_BIN=`which safari`
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    53
if [[ -z "$SAFARI_BIN" && $OSTYPE =~ ^darwin ]]; then
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    54
	SAFARI_BIN_BASE=`mdfind "kMDItemCFBundleIdentifier == 'com.apple.Safari'"`
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    55
	export SAFARI_BIN="$SAFARI_BIN_BASE/Contents/MacOS/safari"
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    56
fi
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    57
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    58
if [ -x ./node_modules/.bin/karma ]; then
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    59
   KARMA=./node_modules/.bin/karma
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    60
else
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    61
   KARMA=`which karma`
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    62
fi
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    63
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    64
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    65
CONNECTION_TIMEOUT=10
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    66
TESTSERVER_START_WAIT=15
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    67
TESTSERVER_LOOP_WAIT=5
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    68
TESTSERVER_WAIT_LOOP_NB=5
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    69
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    70
if [[ -x `which nc` ]]; then
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    71
	SERVER_TEST_CMD="nc -w $CONNECTION_TIMEOUT -z $SERVER_IP $SERVER_PORT"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    72
elif [[ -x `which curl` ]]; then
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    73
	SERVER_TEST_CMD="curl -m $CONNECTION_TIMEOUT --output /dev/null --silent --head --fail http://$SERVER_IP:$SERVER_PORT"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    74
elif [[ -x `which wget` ]]; then
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    75
	SERVER_TEST_CMD="wget --timeout=$CONNECTION_TIMEOUT -q --spider http://$SERVER_IP:$SERVER_PORT"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    76
fi
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    77
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    78
echo "Using '$SERVER_TEST_CMD' to probe test server $SERVER_IP:$SERVER_PORT availability"
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    79
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    80
if [[ -z "$SERVER_TEST_CMD" ]]; then
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    81
	echo "No http tool available so blindly waiting $TESTSERVER_START_WAIT seconds to let test server start"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    82
	sleep $TESTSERVER_START_WAIT
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    83
else
642
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    84
	SERVER_STARTED=false
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    85
	for i in $(seq 1 $TESTSERVER_WAIT_LOOP_NB); do
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    86
		echo "and waiting $TESTSERVER_LOOP_WAIT seconds"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    87
		sleep $TESTSERVER_LOOP_WAIT
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    88
		if $SERVER_TEST_CMD; then
642
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    89
			SERVER_STARTED=true
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    90
			break
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    91
		fi
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    92
	done
642
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
    93
	if ! $SERVER_STARTED && [ $i -eq $TESTSERVER_WAIT_LOOP_NB ]; then
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    94
		 echo "timeouted waiting for test server $SERVER_IP:$SERVER_PORT to start"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    95
		 exit 1
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    96
	fi
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    97
fi
622
c35e69910785 Déplace le dossier test-suite concernant plus Karma que Django à la racine ; avance sur le lancement du server de test par fixture
Simon Descarpentries <sid@sopinspace.com>
parents:
diff changeset
    98
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
    99
echo "---------------------"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
   100
echo "$KARMA start $@"
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
   101
"$KARMA" start $@
638
61dc5370b351 start building a COMT test API, automate testserver starting and stopping
Simon Descarpentries <sid@sopinspace.com>
parents: 637
diff changeset
   102
637
71d87ca43d6a Integration of django testserver start in start-test-suite.sh
Simon Descarpentries <sid@sopinspace.com>
parents: 622
diff changeset
   103
642
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   104
if [ -z "$TESTSERVER_STARTED" ]; then
644
5ab0dc95fddf Merge 641
Yves-Marie Haussonne <ymh.work+github@gmail.com>
parents: 642 641
diff changeset
   105
    read -p "Keep testserver (PID $TESTSERVER_PID) running? (y/N) " -n 1 -r -t 5
642
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   106
    echo    # (optional) move to a new line
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   107
    
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   108
    if [[ $REPLY =~ ^[Yy]$ ]]; then
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   109
    	exit 0
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   110
    fi
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   111
5d037d947cd6 Integrate last change on test suite. rename specific files
ymh <ymh.work@gmail.com>
parents: 638
diff changeset
   112
    kill $TESTSERVER_PID
638
61dc5370b351 start building a COMT test API, automate testserver starting and stopping
Simon Descarpentries <sid@sopinspace.com>
parents: 637
diff changeset
   113
fi