Blame


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