rwho01 revision 6518012db8b99b04ef3e4df22aefe82fa487b809
1865695bbc89088b9526ea9045410e5afb70a985cplars#!/bin/sh
2865695bbc89088b9526ea9045410e5afb70a985cplars#
3865695bbc89088b9526ea9045410e5afb70a985cplars#   Copyright (c) International Business Machines  Corp., 2000
4865695bbc89088b9526ea9045410e5afb70a985cplars#
5865695bbc89088b9526ea9045410e5afb70a985cplars#   This program is free software;  you can redistribute it and/or modify
6865695bbc89088b9526ea9045410e5afb70a985cplars#   it under the terms of the GNU General Public License as published by
7865695bbc89088b9526ea9045410e5afb70a985cplars#   the Free Software Foundation; either version 2 of the License, or
8865695bbc89088b9526ea9045410e5afb70a985cplars#   (at your option) any later version.
9865695bbc89088b9526ea9045410e5afb70a985cplars#
10865695bbc89088b9526ea9045410e5afb70a985cplars#   This program is distributed in the hope that it will be useful,
11865695bbc89088b9526ea9045410e5afb70a985cplars#   but WITHOUT ANY WARRANTY;  without even the implied warranty of
12865695bbc89088b9526ea9045410e5afb70a985cplars#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
13865695bbc89088b9526ea9045410e5afb70a985cplars#   the GNU General Public License for more details.
14865695bbc89088b9526ea9045410e5afb70a985cplars#
15865695bbc89088b9526ea9045410e5afb70a985cplars#   You should have received a copy of the GNU General Public License
166518012db8b99b04ef3e4df22aefe82fa487b809Rishikesh K Rajak#   along with this program;  if not, write to the Free Software
17865695bbc89088b9526ea9045410e5afb70a985cplars#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18865695bbc89088b9526ea9045410e5afb70a985cplars#
19865695bbc89088b9526ea9045410e5afb70a985cplars#
20865695bbc89088b9526ea9045410e5afb70a985cplars#
21865695bbc89088b9526ea9045410e5afb70a985cplars#  FILE   : rwho
22865695bbc89088b9526ea9045410e5afb70a985cplars#
23865695bbc89088b9526ea9045410e5afb70a985cplars#  PURPOSE: To test the basic functionality of the rwhod daemon using the
24865695bbc89088b9526ea9045410e5afb70a985cplars#           `rwho` and `ruptime` commands.
25865695bbc89088b9526ea9045410e5afb70a985cplars#
26865695bbc89088b9526ea9045410e5afb70a985cplars#  SETUP: The home directory of root on the machine exported as "RHOST"
27865695bbc89088b9526ea9045410e5afb70a985cplars#         MUST have a ".rhosts" file with the hostname of the machine
28865695bbc89088b9526ea9045410e5afb70a985cplars#         where the test is executed. Also, both machines MUST have
29865695bbc89088b9526ea9045410e5afb70a985cplars#         the rwhod daemon installed. However, it does not need to be
30865695bbc89088b9526ea9045410e5afb70a985cplars#         active, the test will handle this. 
31865695bbc89088b9526ea9045410e5afb70a985cplars#
32865695bbc89088b9526ea9045410e5afb70a985cplars#  HISTORY:
33234eff40e6e3a1a3e628711ac878298537738739iyermanoj#    06/09 Manoj Iyer manjo@mail.utexas.edu
34234eff40e6e3a1a3e628711ac878298537738739iyermanoj#    - Modified to use test harness API and also fix defects
35865695bbc89088b9526ea9045410e5afb70a985cplars#    03/01 Robbie Williamson (robbiew@us.ibm.com)
36865695bbc89088b9526ea9045410e5afb70a985cplars#      -Ported
37865695bbc89088b9526ea9045410e5afb70a985cplars#
38865695bbc89088b9526ea9045410e5afb70a985cplars#
39865695bbc89088b9526ea9045410e5afb70a985cplars#==============================================================================
40865695bbc89088b9526ea9045410e5afb70a985cplars# error codes:  0 rwho/ruptime successful
41ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya#             1 rwho failed no local and remote host in file
42ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya#             2 ruptime failed no local and remote host in file
43865695bbc89088b9526ea9045410e5afb70a985cplars#==============================================================================
44865695bbc89088b9526ea9045410e5afb70a985cplars
45865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
46865695bbc89088b9526ea9045410e5afb70a985cplars#
47ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya# FUNCTION:  do_setup
48234eff40e6e3a1a3e628711ac878298537738739iyermanoj#
49234eff40e6e3a1a3e628711ac878298537738739iyermanoj#-----------------------------------------------------------------------
50234eff40e6e3a1a3e628711ac878298537738739iyermanoj
51ef77253961f909f87e82e6d2b620e87af33e9665yaberauneyado_setup()
52234eff40e6e3a1a3e628711ac878298537738739iyermanoj{
53234eff40e6e3a1a3e628711ac878298537738739iyermanoj
54ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    TCtmp=${TCtmp:-$LTPROOT/testcases/bin/$TC${EXEC_SUFFIX}$$}
55234eff40e6e3a1a3e628711ac878298537738739iyermanoj
56ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    PID=0
57ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    RHOST_PID=0
58ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    SLEEPTIME=${SLEEPTIME:-20}
59ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    NUMLOOPS=${NUMLOOPS:-25}
60ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    OUTFILE=${OUTFILE:-$TCtmp/${TC}.out}
61ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
62ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    tst_setup
63ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
64ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    exists awk cut hostname killall ps rsh rwho
65ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
66ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    LHOST=`hostname | cut -f1 -d.`
67ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    RHOST=${RHOST:-$LHOST}
68ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
69ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    trap do_cleanup EXIT
70ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
71ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    if ! ps -ef | awk '/rwhod/ && $0 !~ /awk/'; then
72ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Starting rwhod on $LHOST"
73ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        rwhod || end_testcase "Unable to start rwhod on $LHOST"
74ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        PID=1
75ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        sleep $SLEEPTIME
76ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
77ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
78ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    if ! rsh -n -l root $RHOST ps -ef | awk '/rwhod/ && $0 !~ /awk/'; then
79ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Starting rwhod on $RHOST"
80ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        if ! rsh -n -l root $RHOST /usr/sbin/rwhod; then
81ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya            end_testcase "Unable to start rwhod on $RHOST"
82ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        fi
83ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        RHOST_PID=$(rsh -n -l root $RHOST ps -ef | awk '/rwhod/ && $0 !~ /awk/ {print $2 ; exit}')
84ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        if [ -z "$RHOST_PID" ]; then
85ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya            RHOST_PID=0
86ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya            end_testcase "Unable to start rwhod on $RHOST"
87ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        fi
88ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        sleep $SLEEPTIME
89ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
90ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
91ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    RHOSTNAME=`rsh -n -l root $RHOST hostname | cut -f1 -d.`
92ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    if [ -z "$RHOSTNAME" ]; then
93ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        end_testcase "Unable to determine RHOSTNAME"
94ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
95865695bbc89088b9526ea9045410e5afb70a985cplars
96865695bbc89088b9526ea9045410e5afb70a985cplars}
97865695bbc89088b9526ea9045410e5afb70a985cplars
98865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
99865695bbc89088b9526ea9045410e5afb70a985cplars#
100865695bbc89088b9526ea9045410e5afb70a985cplars# FUNCTION:  do_test
101865695bbc89088b9526ea9045410e5afb70a985cplars#
102865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
103865695bbc89088b9526ea9045410e5afb70a985cplars
104865695bbc89088b9526ea9045410e5afb70a985cplarsdo_test()
105865695bbc89088b9526ea9045410e5afb70a985cplars{
106ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
107ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    while [ $TST_COUNT -le $NUMLOOPS ]; do
108ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        rwho -a > $OUTFILE
109698bbbb5b71d4750581b01cb92083f81f0c19705subrata_modak        HOST=`awk "\\$2 ~ /$LHOST>/" $OUTFILE | cut -f1 -d: | sort -u`
110ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in rwho outfile"
111698bbbb5b71d4750581b01cb92083f81f0c19705subrata_modak        HOST=`awk "\\$2 ~ /$RHOSTNAME>/" $OUTFILE | cut -f1 -d: | sort -u`
112ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in rwho outfile"
113ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
114ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        ruptime -a > $OUTFILE
115698bbbb5b71d4750581b01cb92083f81f0c19705subrata_modak        HOST=`awk "\\$1 ~ /$LHOST>/" $OUTFILE | sort -u`
116ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in ruptime outfile"
117698bbbb5b71d4750581b01cb92083f81f0c19705subrata_modak        HOST=`awk "\\$1 ~ /$RHOSTNAME>/" $OUTFILE | sort -u`
118ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in ruptime outfile"
119ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
120ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Test $COUNT of $NUMLOOPS complete"
121ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        incr_tst_count
122ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    done
123865695bbc89088b9526ea9045410e5afb70a985cplars}
124865695bbc89088b9526ea9045410e5afb70a985cplars
125865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
126865695bbc89088b9526ea9045410e5afb70a985cplars#
127865695bbc89088b9526ea9045410e5afb70a985cplars# FUNCTION:  do_cleanup
128865695bbc89088b9526ea9045410e5afb70a985cplars#
129865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
130865695bbc89088b9526ea9045410e5afb70a985cplars
131865695bbc89088b9526ea9045410e5afb70a985cplarsdo_cleanup()
132865695bbc89088b9526ea9045410e5afb70a985cplars{
133ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    if [ $PID -ne 0 ]; then
134ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Stopping rwhod on $LHOST"
135ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        killall rwhod 
136ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
137ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
138ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    if [ $RHOST_PID -ne 0 ]; then
139ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Stopping rwhod on $RHOST"
140ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        rsh -n -l root $RHOST "killall rwhod"
141ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
142ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
143ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    tst_cleanup
144865695bbc89088b9526ea9045410e5afb70a985cplars
145865695bbc89088b9526ea9045410e5afb70a985cplars}
146865695bbc89088b9526ea9045410e5afb70a985cplars
147865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
148865695bbc89088b9526ea9045410e5afb70a985cplars#
149865695bbc89088b9526ea9045410e5afb70a985cplars# FUNCTION:  MAIN
150865695bbc89088b9526ea9045410e5afb70a985cplars#
151865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
152ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya. net_cmdlib.sh
153ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
154ef77253961f909f87e82e6d2b620e87af33e9665yaberauneyaread_opts $*
155865695bbc89088b9526ea9045410e5afb70a985cplarsdo_setup
156865695bbc89088b9526ea9045410e5afb70a985cplarsdo_test
157865695bbc89088b9526ea9045410e5afb70a985cplarsend_testcase
158