• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2#
3#   Copyright (c) International Business Machines  Corp., 2000
4#
5#   This program is free software;  you can redistribute it and/or modify
6#   it under the terms of the GNU General Public License as published by
7#   the Free Software Foundation; either version 2 of the License, or
8#   (at your option) any later version.
9#
10#   This program is distributed in the hope that it will be useful,
11#   but WITHOUT ANY WARRANTY;  without even the implied warranty of
12#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
13#   the GNU General Public License for more details.
14#
15#   You should have received a copy of the GNU General Public License
16#   along with this program;  if not, write to the Free Software
17#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18#
19#
20#
21#  FILE   : rwho
22#
23#  PURPOSE: To test the basic functionality of the rwhod daemon using the
24#           `rwho` and `ruptime` commands.
25#
26#  SETUP: The home directory of root on the machine exported as "RHOST"
27#         MUST have a ".rhosts" file with the hostname of the machine
28#         where the test is executed. Also, both machines MUST have
29#         the rwhod daemon installed. However, it does not need to be
30#         active, the test will handle this.
31#
32#  HISTORY:
33#    06/09 Manoj Iyer manjo@mail.utexas.edu
34#    - Modified to use test harness API and also fix defects
35#    03/01 Robbie Williamson (robbiew@us.ibm.com)
36#      -Ported
37#
38#
39#==============================================================================
40# error codes:  0 rwho/ruptime successful
41#             1 rwho failed no local and remote host in file
42#             2 ruptime failed no local and remote host in file
43#==============================================================================
44
45#-----------------------------------------------------------------------
46#
47# FUNCTION:  do_setup
48#
49#-----------------------------------------------------------------------
50
51LHOST_PID=""
52RHOST_PID=""
53
54do_setup()
55{
56    TCtmp=${TCtmp:-$LTPROOT/testcases/bin/$TC${EXEC_SUFFIX}$$}
57
58    SLEEPTIME=${SLEEPTIME:-5}
59    NUMLOOPS=${NUMLOOPS:-25}
60    OUTFILE=${OUTFILE:-$TCtmp/${TC}.out}
61
62    tst_setup
63
64    exists awk cut hostname killall ps rsh rwho
65
66    LHOST=`hostname | cut -f1 -d.`
67    RHOST=${RHOST:-$LHOST}
68
69    trap do_cleanup EXIT
70
71    if ! pgrep -x rwhod > /dev/null; then
72        tst_resm TINFO "Starting rwhod on $LHOST"
73        rwhod || end_testcase "Unable to start rwhod on $LHOST"
74        LHOST_PID=$(pgrep -x rwhod)
75        sleep $SLEEPTIME
76    fi
77
78    if [ "$(rsh -n -l root $RHOST pgrep -x rwhod)" == "" ]; then
79        tst_resm TINFO "Starting rwhod on $RHOST"
80        rsh -n -l root $RHOST /usr/sbin/rwhod
81        RHOST_PID=$(rsh -n -l root $RHOST pgrep -x rwhod)
82        if [ -z "$RHOST_PID" ]; then
83            end_testcase "Unable to start rwhod on $RHOST"
84        fi
85        sleep $SLEEPTIME
86    fi
87
88    RHOSTNAME=`rsh -n -l root $RHOST hostname | cut -f1 -d.`
89    if [ -z "$RHOSTNAME" ]; then
90        end_testcase "Unable to determine RHOSTNAME"
91    fi
92}
93
94#-----------------------------------------------------------------------
95#
96# FUNCTION:  do_test
97#
98#-----------------------------------------------------------------------
99
100do_test()
101{
102    while [ $TST_COUNT -le $NUMLOOPS ]; do
103        rwho -a > $OUTFILE
104        HOST=`grep $LHOST $OUTFILE | sed 's/[^ ]* *//; s/:.*//' | uniq`
105        [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in rwho outfile"
106        HOST=`grep $RHOSTNAME $OUTFILE | sed 's/[^ ]* *//; s/:.*//' | uniq`
107        [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in rwho outfile"
108
109        ruptime -a > $OUTFILE
110        HOST=`grep $LHOST $OUTFILE | sed 's/ .*//' | uniq`
111        [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in ruptime outfile"
112        HOST=`grep $RHOSTNAME $OUTFILE | sed 's/ .*//' | uniq`
113        [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in ruptime outfile"
114
115        tst_resm TINFO "Test $TST_COUNT of $NUMLOOPS complete"
116        incr_tst_count
117    done
118}
119
120#-----------------------------------------------------------------------
121#
122# FUNCTION:  do_cleanup
123#
124#-----------------------------------------------------------------------
125
126do_cleanup()
127{
128    if [ -n "$LHOST_PID" ]; then
129        tst_resm TINFO "Stopping rwhod on $LHOST"
130        killall rwhod
131    fi
132
133    if [ -n "$RHOST_PID" ]; then
134        tst_resm TINFO "Stopping rwhod on $RHOST"
135        rsh -n -l root $RHOST "killall rwhod"
136    fi
137
138    tst_cleanup
139}
140
141#-----------------------------------------------------------------------
142#
143# FUNCTION:  MAIN
144#
145#-----------------------------------------------------------------------
146. net_cmdlib.sh
147
148read_opts $*
149do_setup
150do_test
151do_cleanup
152end_testcase
153