]> arthur.barton.de Git - ngircd-alex.git/blob - src/testsuite/stress-server.sh
Make sure that the target user is able to join a local channel
[ngircd-alex.git] / src / testsuite / stress-server.sh
1 #!/bin/sh
2 #
3 # ngIRCd Test Suite
4 # Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 # Please read the file COPYING, README and AUTHORS for more information.
11 #
12
13 # detect source directory
14 [ -z "$srcdir" ] && srcdir=`dirname $0`
15
16 # parse command line
17 [ "$1" -gt 0 ] 2> /dev/null && CLIENTS="$1" || CLIENTS=5
18 [ "$2" -gt 0 ] 2> /dev/null && MAX="$2" || MAX=-1
19
20 # get our name
21 name=`basename $0`
22
23 # create directories
24 [ -d logs ] || mkdir logs
25 [ -d tests ] || mkdir tests
26
27 # test for required external tools
28 type expect > /dev/null 2>&1
29 if [ $? -ne 0 ]; then
30   echo "${name}: \"expect\" not found.";  exit 77
31 fi
32 type telnet > /dev/null 2>&1
33 if [ $? -ne 0 ]; then
34   echo "${name}: \"telnet\" not found.";  exit 77
35 fi
36
37 # hello world! :-)
38 echo "stressing server with $CLIENTS clients (be patient!):"
39
40 # read in functions
41 . ${srcdir}/functions.inc
42
43 # create scripts for expect(1)
44 no=0
45 while [ ${no} -lt $CLIENTS ]; do
46   cat ${srcdir}/stress-A.e > tests/${no}.e
47   echo "send \"nick test${no}\\r\"" >> tests/${no}.e
48   cat ${srcdir}/stress-B.e >> tests/${no}.e
49   no=`expr ${no} + 1`
50 done
51
52 # run first script and check if it succeeds
53 echo_n "checking stress script ..."
54 expect tests/0.e > logs/stress-0.log 2> /dev/null
55 if [ $? -ne 0 ]; then
56   echo " failure!"
57   exit 1
58 else
59   echo " ok."
60 fi
61
62 no=0
63 while [ ${no} -lt $CLIENTS ]; do
64   expect tests/${no}.e > logs/stress-${no}.log 2> /dev/null &
65
66   no=`expr ${no} + 1`
67   echo "started client $no/$CLIENTS."
68
69   [ $MAX -gt 0 ] && $srcdir/wait-tests.sh $MAX
70 done
71
72 echo_n "waiting for clients to complete: ."
73 touch logs/check-idle.log
74 while true; do
75   expect ${srcdir}/check-idle.e >> logs/check-idle.log; res=$?
76   echo "====================" >> logs/check-idle.log
77   [ $res -ne 99 ] && break
78
79   # there are still clients connected. Wait ...
80   sleep 3
81   echo_n "."
82 done
83
84 [ $res -eq 0 ] && echo " ok." || echo " failure!"
85
86 exit $res
87
88 # -eof-