3 # testsuite runner for tinyproxy
5 # Copyright (C) 2009 Michael Adam <obnox@samba.org>
7 # This program is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by the Free
9 # Software Foundation; either version 2 of the License, or (at your option)
12 # This program is distributed in the hope that it will be useful, but WITHOUT
13 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
17 # You should have received a copy of the GNU General Public License along with
18 # this program; if not, see <http://www.gnu.org/licenses/>.
21 SCRIPTS_DIR=$(pwd)/$(dirname $0)
22 BASEDIR=$SCRIPTS_DIR/../..
23 TESTS_DIR=$SCRIPTS_DIR/..
24 TESTENV_DIR=$TESTS_DIR/env
25 LOG_DIR=$TESTENV_DIR/var/log
27 TINYPROXY_IP=127.0.0.2
30 TINYPROXY_PID_DIR=$TESTENV_DIR/var/run/tinyproxy
31 TINYPROXY_PID_FILE=$TINYPROXY_PID_DIR/tinyproxy.pid
32 TINYPROXY_LOG_DIR=$LOG_DIR
33 TINYPROXY_DATA_DIR=$TESTENV_DIR/usr/share/tinyproxy
34 TINYPROXY_CONF_DIR=$TESTENV_DIR/etc/tinyproxy
35 TINYPROXY_CONF_FILE=$TINYPROXY_CONF_DIR/tinyproxy.conf
36 TINYPROXY_FILTER_FILE=$TINYPROXY_CONF_DIR/filter
37 TINYPROXY_STDERR_LOG=$TINYPROXY_LOG_DIR/tinyproxy.stderr.log
38 TINYPROXY_BIN=$BASEDIR/src/tinyproxy
39 TINYPROXY_STATHOST_IP="127.0.0.127"
41 WEBSERVER_IP=127.0.0.3
43 WEBSERVER_PID_DIR=$TESTENV_DIR/var/run/webserver
44 WEBSERVER_PID_FILE=$WEBSERVER_PID_DIR/webserver.pid
45 WEBSERVER_LOG_DIR=$TESTENV_DIR/var/log/webserver
46 WEBSERVER_BIN_FILE=webserver.pl
47 WEBSERVER_BIN=$SCRIPTS_DIR/$WEBSERVER_BIN_FILE
49 WEBCLIENT_LOG=$LOG_DIR/webclient.log
50 WEBCLIENT_BIN=$SCRIPTS_DIR/webclient.pl
53 if test -e $TESTENV_DIR ; then
54 TESTENV_DIR_OLD=$TESTENV_DIR.old
55 if test -e $TESTENV_DIR_OLD ; then
56 rm -rf $TESTENV_DIR_OLD
58 mv $TESTENV_DIR $TESTENV_DIR.old
64 provision_tinyproxy() {
65 mkdir -p $TINYPROXY_DATA_DIR
66 cp $BASEDIR/data/templates/default.html $TINYPROXY_DATA_DIR
67 cp $BASEDIR/data/templates/debug.html $TINYPROXY_DATA_DIR
68 cp $BASEDIR/data/templates/stats.html $TINYPROXY_DATA_DIR
69 mkdir -p $TINYPROXY_PID_DIR
70 mkdir -p $TINYPROXY_LOG_DIR
71 mkdir -p $TINYPROXY_CONF_DIR
73 cat >>$TINYPROXY_CONF_FILE<<EOF
75 #Group $TINYPROXY_GROUP
80 StatHost "$TINYPROXY_STATHOST_IP"
81 DefaultErrorFile "$TINYPROXY_DATA_DIR/debug.html"
82 StatFile "$TINYPROXY_DATA_DIR/stats.html"
83 Logfile "$TINYPROXY_LOG_DIR/tinyproxy.log"
84 PidFile "$TINYPROXY_PID_FILE"
92 ViaProxyName "tinyproxy"
97 Filter "$TINYPROXY_FILTER_FILE"
101 touch $TINYPROXY_FILTER_FILE
105 echo -n "starting tinyproxy..."
106 $VALGRIND $TINYPROXY_BIN -c $TINYPROXY_CONF_FILE 2> $TINYPROXY_STDERR_LOG
107 echo " done (listening on $TINYPROXY_IP:$TINYPROXY_PORT)"
111 echo -n "killing tinyproxy..."
112 kill $(cat $TINYPROXY_PID_FILE)
113 if test "x$?" = "x0" ; then
120 provision_webserver() {
121 mkdir -p $WEBSERVER_PID_DIR
122 mkdir -p $WEBSERVER_LOG_DIR
126 echo -n "starting web server..."
127 $WEBSERVER_BIN --port $WEBSERVER_PORT --log-dir $WEBSERVER_LOG_DIR --pid-file $WEBSERVER_PID_FILE
128 echo " done (listening on $WEBSERVER_IP:$WEBSERVER_PORT)"
132 echo -n "killing webserver..."
133 kill $(cat $WEBSERVER_PID_FILE)
134 if test "x$?" = "x0" ; then
141 wait_for_some_seconds() {
143 if test "x$SECONDS" = "x" ; then
147 echo -n "waiting for $SECONDS seconds."
149 for COUNT in $(seq 1 $SECONDS) ; do
156 run_basic_webclient_request() {
157 $WEBCLIENT_BIN $1 $2 >> $WEBCLIENT_LOG 2>&1
158 WEBCLIENT_EXIT_CODE=$?
159 if test "x$WEBCLIENT_EXIT_CODE" = "x0" ; then
162 echo "ERROR ($EBCLIENT_EXIT_CODE)"
163 echo "webclient output:"
178 wait_for_some_seconds 3
180 echo -n "checking direct connection to web server..."
181 run_basic_webclient_request "$WEBSERVER_IP:$WEBSERVER_PORT" /
183 echo -n "testing connection through tinyproxy..."
184 run_basic_webclient_request "$TINYPROXY_IP:$TINYPROXY_PORT" "http://$WEBSERVER_IP:$WEBSERVER_PORT/"
186 echo -n "requesting statspage via stathost url..."
187 run_basic_webclient_request "$TINYPROXY_IP:$TINYPROXY_PORT" "http://$TINYPROXY_STATHOST_IP"
189 echo "You can continue using the webserver and tinyproxy."
190 echo -n "hit <enter> to stop the servers and exit: "