• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2unset LIBPATH
3#
4#   Copyright (c) International Business Machines  Corp., 2000
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#
11#   This program is distributed in the hope that it will be useful,
12#   but WITHOUT ANY WARRANTY;  without even the implied warranty of
13#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
14#   the GNU General Public License for more details.
15#
16#   You should have received a copy of the GNU General Public License
17#   along with this program;  if not, write to the Free Software
18#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19#
20#
21#
22#  FILE   : echo
23#
24#  PURPOSE: Stresses the inetd/xinetd daemon using the `echo` service.
25#
26#  SETUP: The echo service MUST be active on the RHOST machine. This is
27#         controlled by the inetd/xinetd daemon.
28#
29#  HISTORY:
30#    03/01 Robbie Williamson (robbiew@us.ibm.com)
31#      -Ported
32#
33#
34#***********************************************************************
35
36#-----------------------------------------------------------------------
37#
38# FUNCTION:  do_setup
39#
40#-----------------------------------------------------------------------
41
42do_setup()
43{
44
45    NUMLOOPS=${NUMLOOPS:-2}
46    TST_TOTAL=$NUMLOOPS
47
48    export TST_COUNT TST_TOTAL
49
50    exists hostname sum
51    tst_setup
52
53    TC=sine
54    RHOST=${RHOST:-`hostname`}
55    TCtmp=${TCtmp:-$LTPROOT/testcases/bin/echo$$}
56    CLEANUP=${CLEANUP:-ON}
57    CREATEFILE=createfile
58    ECHOES=echoes${EXEC_SUFFIX}
59
60    ECHOFILE=${ECHOFILE:-echofile${EXEC_SUFFIX}}
61    ECHOSIZE=${ECHOSIZE:-8192}
62    NUMPROCESSES=${NUMPROCESSES:-10}
63
64}
65
66#-----------------------------------------------------------------------
67#
68# FUNCTION:  do_test
69# PURPOSE:   Loop until interrupted creating the echo file and then
70#	     echoing it to RHOST.
71# INPUT:     None.
72# OUTPUT:    Informational messages are logged into the run log.
73#
74#-----------------------------------------------------------------------
75
76do_test()
77{
78    mkdir $TCtmp
79    echo  "Creating echo file $ECHOFILE"
80    if ! "$LTPROOT/testcases/bin/$CREATEFILE" $ECHOSIZE "$TCtmp/$ECHOFILE"; then
81        end_testcase "$ECHOFILE not created"
82    fi
83
84    echo "Compute the checksum of this file"
85    csum1=$(sum $TCtmp/$ECHOFILE | awk '{print $1}')
86    [ $csum1 ] || end_testcase "initial checksum computation failed"
87
88    while [ $TST_COUNT -le $NUMLOOPS ]; do
89
90        if ! $ECHOES $RHOST "$TCtmp/$ECHOFILE" $NUMPROCESSES; then
91            end_testcase "Error in $ECHOES test in loop $TST_COUNT"
92        fi
93
94        NUM=0
95        while [ $NUM -lt $NUMPROCESSES ]
96        do
97            csum2=$(sum "$TCtmp/${ECHOFILE}${NUM}" | awk '{print $1}')
98            if [ "$csum1" != "$csum2" ]; then
99                end_testcase "Checksums differ in loop $TST_COUNT"
100            fi
101            NUM=$(( $NUM + 1 ))
102        done
103
104        tst_resm TINFO "Execution $TST_COUNT passed."
105
106        incr_tst_count
107        if [ $TST_COUNT -le $NUMLOOPS ]; then
108            tst_resm TINFO "Sleeping 60 seconds to avoid hitting max. connections setting for service"
109            sleep 60
110        fi
111    done
112}
113
114#-----------------------------------------------------------------------
115#
116# FUNCTION:  MAIN
117# PURPOSE:   To invoke functions that perform the tasks as described in
118#	     the design in the prolog above.
119# INPUT:     See SETUP in the prolog above.
120# OUTPUT:    Logged run results written to testcase run log
121#
122#-----------------------------------------------------------------------
123
124. net_cmdlib.sh
125
126read_opts $*
127do_setup
128do_test
129end_testcase
130