Added preliminary README text.

This commit is contained in:
Alexander Barton 2004-09-04 13:58:31 +00:00
parent d27196e334
commit 02b8e51562
4 changed files with 137 additions and 19 deletions

View File

@ -9,7 +9,7 @@
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
# #
# $Id: Makefile.am,v 1.9 2002/11/10 14:28:06 alex Exp $ # $Id: Makefile.am,v 1.10 2004/09/04 13:58:31 alex Exp $
# #
AUTOMAKE_OPTIONS = ../portab/ansi2knr AUTOMAKE_OPTIONS = ../portab/ansi2knr
@ -23,6 +23,8 @@ EXTRA_DIST = \
stress-A.e stress-B.e check-idle.e \ stress-A.e stress-B.e check-idle.e \
ngircd-test.conf ngircd-test.conf
all: ngircd-TEST-Binary
clean-local: clean-local:
rm -rf logs tests *-test ngircd-test.log ngircd-test.motd \ rm -rf logs tests *-test ngircd-test.log ngircd-test.motd \
T-ngircd procs.tmp T-ngircd procs.tmp

72
src/testsuite/README Normal file
View File

@ -0,0 +1,72 @@
ngIRCd - Next Generation IRC Server
(c)2001-2004 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- README for the Test Suite --
I. Overview
~~~~~~~~~~~
The purpose of the "test suite" contained in this directory is to detect
bugs and incompatibilities in ngIRCd introduced during coding and after
building ngIRCd on a specific platform.
To run the "standard" tests call "make check". It will build ngIRCd (if
required) and run some tests on it. These tests should be portable and run
on all supported platforms without errors.
Please note: most tests of this suite depend on the external tools expect(1)
and telnet(1), so make sure you have them installed. If not, the tests will
not fail but simply be skipped.
II. Shell Scripts
~~~~~~~~~~~~~~~~
getpid.sh <name>
This script is used to detect the PID of the running process with
the given name in a portable manner. The result is echoed on the
console. It is a helper script for some other scripts of this suite.
start-server.sh
start-server.sh starts up the test binary, "T-ngircd". It makes sure
that getpid.sh is available and working, and that no other instance
of the test binary is already running.
The exit code is 0 if the test binary could be started.
stop-server.sh
This script uses getpid.sh to detect a running test binary "T-ngircd"
and then shuts it down using the TERM signal.
The exit code is 0 if the test binary could be stopped.
stress-server.sh
...
tests.sh
...
III. Scripts for expect(1)
~~~~~~~~~~~~~~~~~~~~~~~~~~
channel-test.e
check-idle.e
connect-test.e
mode-test.e
stress-A.e
stress-B.e
--
$Id: README,v 1.1 2004/09/04 13:58:31 alex Exp $

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# ngIRCd Test Suite # ngIRCd Test Suite
# $Id: start-server.sh,v 1.11 2003/08/22 11:31:18 alex Exp $ # $Id: start-server.sh,v 1.12 2004/09/04 13:58:31 alex Exp $
[ -z "$srcdir" ] && srcdir=`dirname $0` [ -z "$srcdir" ] && srcdir=`dirname $0`
@ -28,7 +28,7 @@ fi
echo "This is an ngIRCd Test Server" > ngircd-test.motd echo "This is an ngIRCd Test Server" > ngircd-test.motd
# starting up test-server ... # starting up test-server ...
./T-ngircd -np -f ${srcdir}/ngircd-test.conf > ngircd-test.log 2>&1 & ./T-ngircd -np -f ${srcdir}/ngircd-test.conf $* > ngircd-test.log 2>&1 &
sleep 1 sleep 1
# validate running test-server # validate running test-server

View File

@ -1,15 +1,31 @@
#!/bin/sh #!/bin/sh
#
# ngIRCd Test Suite # ngIRCd Test Suite
# $Id: stress-server.sh,v 1.8 2003/08/22 11:31:18 alex Exp $ # Copyright (c)2002-2004 by Alexander Barton (alex@barton.de)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
# $Id: stress-server.sh,v 1.9 2004/09/04 13:58:31 alex Exp $
#
# detect source directory
[ -z "$srcdir" ] && srcdir=`dirname $0` [ -z "$srcdir" ] && srcdir=`dirname $0`
# parse command line
[ "$1" -gt 0 ] 2> /dev/null && CLIENTS="$1" || CLIENTS=5 [ "$1" -gt 0 ] 2> /dev/null && CLIENTS="$1" || CLIENTS=5
[ "$2" -gt 0 ] 2> /dev/null && LOOPS="$2" || LOOPS=1
# get our name
name=`basename $0` name=`basename $0`
test=`echo ${name} | cut -d '.' -f 1`
# create directories
mkdir -p logs tests mkdir -p logs tests
# test for required external tools
type expect > /dev/null 2>&1 type expect > /dev/null 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo " ${name}: \"expect\" not found."; exit 77 echo " ${name}: \"expect\" not found."; exit 77
@ -19,7 +35,12 @@ if [ $? -ne 0 ]; then
echo " ${name}: \"telnet\" not found."; exit 77 echo " ${name}: \"telnet\" not found."; exit 77
fi fi
echo " stressing server with $CLIENTS clients (be patient!) ..." # hello world! :-)
[ $LOOPS -gt 1 ] \
&& echo " stressing server with $CLIENTS clients in $LOOPS loops (be patient!):" \
|| echo " stressing server with $CLIENTS clients (be patient!):"
# create scripts for expect(1)
no=0 no=0
while [ ${no} -lt $CLIENTS ]; do while [ ${no} -lt $CLIENTS ]; do
cat ${srcdir}/stress-A.e > tests/${no}.e cat ${srcdir}/stress-A.e > tests/${no}.e
@ -27,20 +48,43 @@ while [ ${no} -lt $CLIENTS ]; do
cat ${srcdir}/stress-B.e >> tests/${no}.e cat ${srcdir}/stress-B.e >> tests/${no}.e
no=`expr ${no} + 1` no=`expr ${no} + 1`
done done
no=0
while [ ${no} -lt $CLIENTS ]; do # main loop ...
expect tests/${no}.e > logs/stress-${no}.log 2> /dev/null & loop=0
no=`expr ${no} + 1` while [ ${loop} -lt $LOOPS ]; do
no=0
loop=`expr ${loop} + 1`
while [ ${no} -lt $CLIENTS ]; do
expect tests/${no}.e > logs/stress-${no}.log 2> /dev/null &
no=`expr ${no} + 1`
done
if [ $LOOPS -gt 1 ]; then
echo " loop $loop/$LOOPS: started $no clients."
echo -n " loop $loop/$LOOPS: waiting for clients to complete: "
else
echo " started $no clients."
echo -n " waiting for clients to complete: "
fi
res=3
touch logs/check-idle.log
while true; do
expect ${srcdir}/check-idle.e >> logs/check-idle.log; res=$?
echo "====================" >> logs/check-idle.log
[ $res -ne 99 ] && break
# there are still clients connected. Wait ...
sleep 1
echo -n "."
done
if [ $res -ne 0 ]; then
echo " ERROR!"
break
fi
echo " done."
done done
touch logs/check-idle.log exit $res
while true; do
expect ${srcdir}/check-idle.e >> logs/check-idle.log
res=$?
[ $res -eq 0 ] && exit 0
[ $res -eq 1 ] && exit 1
sleep 1
echo "====================" >> logs/check-idle.log
done
# -eof- # -eof-