~jcsackett/charmworld/bac-tag-constraints

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

# Copyright 2012, 2013 Marco Ceppi, Canonical Ltd.  This software is
# licensed under the GNU Affero General Public License version 3 (see
# the file LICENSE).

: ${PROJECT_DIR:=$HOME/charmworld}
: ${INI:=$PROJECT_DIR/production.ini}

paster="$PROJECT_DIR/bin/paster"
output=$($paster serve --stop-daemon --pid-file=$HOME/var/appserver.pid)
[ -n "$output" ] && echo "$output"

port=$(sed -e '/\[server:main\]/,/port *=/!d; /port *=/!d; s/port *= *//' $INI)
called=0
while [ -n "$(exec 6<>/dev/tcp/127.0.0.1/$port && echo held)" ]; do
    if [ $((called)) -eq 300 ]; then
        echo "Port $port held for more than 5 minutes."
        break
    fi
    called=$((called+1))
    sleep 1
done
if [ $((called)) -ne 300 ]; then
    echo "Port $port released after $called seconds."
fi