tests: this is a first draft of the beginning of a test suite.
It provisions a test envirnonment, fires up the perl web server and tinyproxy and currently makes one direct request to the web server and one request through tinyproxy. This will be modularized and extended in the sequel. Michael
This commit is contained in:
		
							parent
							
								
									158f8a7e15
								
							
						
					
					
						commit
						526c70f687
					
				
							
								
								
									
										138
									
								
								tests/scripts/run_tests.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										138
									
								
								tests/scripts/run_tests.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,138 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# testsuite runner for tinyproxy
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2009 Michael Adam
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# License: GNU GPL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SCRIPTS_DIR=$(pwd)/$(dirname $0)
 | 
				
			||||||
 | 
					BASEDIR=$SCRIPTS_DIR/../..
 | 
				
			||||||
 | 
					TESTS_DIR=$SCRIPTS_DIR/..
 | 
				
			||||||
 | 
					TESTENV_DIR=$TESTS_DIR/env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TINYPROXY_IP=127.0.0.2
 | 
				
			||||||
 | 
					TINYPROXY_PORT=12321
 | 
				
			||||||
 | 
					TINYPROXY_USER=$USER
 | 
				
			||||||
 | 
					TINYPROXY_PID_DIR=$TESTENV_DIR/var/run/tinyproxy
 | 
				
			||||||
 | 
					TINYPROXY_PID_FILE=$TINYPROXY_PID_DIR/tinyproxy.pid
 | 
				
			||||||
 | 
					LOG_DIR=$TESTENV_DIR/var/log
 | 
				
			||||||
 | 
					TINYPROXY_LOG_DIR=$LOG_DIR
 | 
				
			||||||
 | 
					TINYPROXY_DATA_DIR=$TESTENV_DIR/usr/share/tinyproxy
 | 
				
			||||||
 | 
					TINYPROXY_CONF_DIR=$TESTENV_DIR/etc
 | 
				
			||||||
 | 
					TINYPROXY_CONF_FILE=$TINYPROXY_CONF_DIR/tinyproxy.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WEBSERVER_IP=127.0.0.3
 | 
				
			||||||
 | 
					WEBSERVER_PORT=32123
 | 
				
			||||||
 | 
					WEBSERVER_PID_DIR=$TESTENV_DIR/var/run/webserver
 | 
				
			||||||
 | 
					WEBSERVER_PID_FILE=$WEBSERVER_PID_DIR/webserver.pid
 | 
				
			||||||
 | 
					WEBSERVER_LOG_DIR=$TESTENV_DIR/var/log/webserver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TINYPROXY_STDERR_LOG=$TINYPROXY_LOG_DIR/tinyproxy.stderr.log
 | 
				
			||||||
 | 
					WEBCLIENT_LOG=$LOG_DIR/webclient.log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WEBSERVER_BIN_FILE=webserver.pl
 | 
				
			||||||
 | 
					WEBSERVER_BIN=$SCRIPTS_DIR/$WEBSERVER_BIN_FILE
 | 
				
			||||||
 | 
					WEBCLIENT_BIN=$SCRIPTS_DIR/webclient.pl
 | 
				
			||||||
 | 
					TINYPROXY_BIN=$BASEDIR/src/tinyproxy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STAMP=$(date +%Y%m%d-%H:%M:%S)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if test -e $TESTENV_DIR ; then
 | 
				
			||||||
 | 
						TESTENV_DIR_OLD=$TESTENV_DIR.old
 | 
				
			||||||
 | 
						if test -e $TESTENV_DIR_OLD ; then
 | 
				
			||||||
 | 
							rm -rf $TESTENV_DIR_OLD
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						mv $TESTENV_DIR $TESTENV_DIR.old
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir -p $TINYPROXY_DATA_DIR
 | 
				
			||||||
 | 
					cp $BASEDIR/doc/default.html $TINYPROXY_DATA_DIR
 | 
				
			||||||
 | 
					cp $BASEDIR/doc/debug.html $TINYPROXY_DATA_DIR
 | 
				
			||||||
 | 
					cp $BASEDIR/doc/stats.html $TINYPROXY_DATA_DIR
 | 
				
			||||||
 | 
					mkdir -p $TINYPROXY_PID_DIR
 | 
				
			||||||
 | 
					mkdir -p $TINYPROXY_LOG_DIR
 | 
				
			||||||
 | 
					mkdir -p $TINYPROXY_CONF_DIR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir -p $WEBSERVER_PID_DIR
 | 
				
			||||||
 | 
					mkdir -p $WEBSERVER_LOG_DIR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat >>$TINYPROXY_CONF_FILE<<EOF
 | 
				
			||||||
 | 
					User $TINYPROXY_USER
 | 
				
			||||||
 | 
					#Group $TINYPROXY_GROUP
 | 
				
			||||||
 | 
					Port $TINYPROXY_PORT
 | 
				
			||||||
 | 
					#Bind $TINYPROXY_IP
 | 
				
			||||||
 | 
					Listen $TINYPROXY_IP
 | 
				
			||||||
 | 
					Timeout 600
 | 
				
			||||||
 | 
					DefaultErrorFile "$TINYPROXY_DATA_DIR/default.html"
 | 
				
			||||||
 | 
					StatFile "$TINYPROXY_DATA_DIR/stats.html"
 | 
				
			||||||
 | 
					Logfile "$TINYPROXY_LOG_DIR/tinyproxy.log"
 | 
				
			||||||
 | 
					PidFile "$TINYPROXY_PID_FILE"
 | 
				
			||||||
 | 
					LogLevel Info
 | 
				
			||||||
 | 
					MaxClients 100
 | 
				
			||||||
 | 
					MinSpareServers 5
 | 
				
			||||||
 | 
					MaxSpareServers 20
 | 
				
			||||||
 | 
					StartServers 10
 | 
				
			||||||
 | 
					MaxRequestsPerChild 0
 | 
				
			||||||
 | 
					Allow 127.0.0.0/8
 | 
				
			||||||
 | 
					ViaProxyName "tinyproxy"
 | 
				
			||||||
 | 
					ConnectPort 443
 | 
				
			||||||
 | 
					ConnectPort 563
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "starting web server..."
 | 
				
			||||||
 | 
					$WEBSERVER_BIN --port $WEBSERVER_PORT --log-dir $WEBSERVER_LOG_DIR --pid-file $WEBSERVER_PID_FILE
 | 
				
			||||||
 | 
					echo " done"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "starting tinyproxy..."
 | 
				
			||||||
 | 
					$TINYPROXY_BIN -c $TINYPROXY_CONF_FILE 2> $TINYPROXY_STDERR_LOG
 | 
				
			||||||
 | 
					echo " done"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "waiting for 3 seconds."
 | 
				
			||||||
 | 
					sleep 1
 | 
				
			||||||
 | 
					echo -n "."
 | 
				
			||||||
 | 
					sleep 1
 | 
				
			||||||
 | 
					echo -n "."
 | 
				
			||||||
 | 
					sleep 1
 | 
				
			||||||
 | 
					echo -n "."
 | 
				
			||||||
 | 
					echo " done"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "checking direct connection to web server..."
 | 
				
			||||||
 | 
					$WEBCLIENT_BIN $WEBSERVER_IP:$WEBSERVER_PORT / >> $WEBCLIENT_LOG 2>&1
 | 
				
			||||||
 | 
					WEBCLIENT_EXIT_CODE=$?
 | 
				
			||||||
 | 
					if test "x$WEBCLIENT_EXIT_CODE" = "x0" ; then
 | 
				
			||||||
 | 
						echo " ok"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						echo "ERROR ($EBCLIENT_EXIT_CODE)"
 | 
				
			||||||
 | 
						echo "webclient output:"
 | 
				
			||||||
 | 
						cat $WEBCLIENT_LOG
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "testing connection through tinyproxy..."
 | 
				
			||||||
 | 
					$WEBCLIENT_BIN $TINYPROXY_IP:$TINYPROXY_PORT http://$WEBSERVER_IP:$WEBSERVER_PORT/ >> $WEBCLIENT_LOG 2>&1
 | 
				
			||||||
 | 
					WEBCLIENT_EXIT_CODE=$?
 | 
				
			||||||
 | 
					if test "x$WEBCLIENT_EXIT_CODE" = "x0" ; then
 | 
				
			||||||
 | 
						echo " ok"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						echo "ERROR ($WEBCLIENT_EXIT_CODE)"
 | 
				
			||||||
 | 
						echo "webclient output:"
 | 
				
			||||||
 | 
						cat $WEBCLIENT_LOG
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "hit <enter> to stop the servers and exit: "
 | 
				
			||||||
 | 
					read READ
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "killing tinyproxy..."
 | 
				
			||||||
 | 
					kill $(cat $TINYPROXY_PID_FILE)
 | 
				
			||||||
 | 
					if test "x$?" = "x0" ; then echo "ok" ; else echo "error" ; fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo -n "killing webserver..."
 | 
				
			||||||
 | 
					# too crude still, need pid file handling for webserver:
 | 
				
			||||||
 | 
					kill $(cat $WEBSERVER_PID_FILE)
 | 
				
			||||||
 | 
					if test "x$?" = "x0" ; then echo "ok" ; else echo "error" ; fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $0: done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit 0
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user