[BACK]Return to stress-server.sh CVS log [TXT][DIR] Up to [local] / ircnowd / src / testsuite

Annotation of ircnowd/src/testsuite/stress-server.sh, Revision 1.1.1.1

1.1       tomglok     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-

CVSweb