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
174548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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
3037550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman#         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
516850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon XuLHOST_PID=""
526850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon XuRHOST_PID=""
536850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu
54ef77253961f909f87e82e6d2b620e87af33e9665yaberauneyado_setup()
55234eff40e6e3a1a3e628711ac878298537738739iyermanoj{
56ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    TCtmp=${TCtmp:-$LTPROOT/testcases/bin/$TC${EXEC_SUFFIX}$$}
57234eff40e6e3a1a3e628711ac878298537738739iyermanoj
586850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu    SLEEPTIME=${SLEEPTIME:-5}
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
716850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu    if ! pgrep -x rwhod > /dev/null; then
72ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Starting rwhod on $LHOST"
73ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        rwhod || end_testcase "Unable to start rwhod on $LHOST"
746850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu        LHOST_PID=$(pgrep -x rwhod)
75ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        sleep $SLEEPTIME
76ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
77ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
786850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu    if [ "$(rsh -n -l root $RHOST pgrep -x rwhod)" == "" ]; then
79ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Starting rwhod on $RHOST"
806850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu        rsh -n -l root $RHOST /usr/sbin/rwhod
816850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu        RHOST_PID=$(rsh -n -l root $RHOST pgrep -x rwhod)
82ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        if [ -z "$RHOST_PID" ]; then
83ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya            end_testcase "Unable to start rwhod on $RHOST"
84ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        fi
85ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        sleep $SLEEPTIME
86ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
87ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
88ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    RHOSTNAME=`rsh -n -l root $RHOST hostname | cut -f1 -d.`
89ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    if [ -z "$RHOSTNAME" ]; then
90ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        end_testcase "Unable to determine RHOSTNAME"
91ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
92865695bbc89088b9526ea9045410e5afb70a985cplars}
93865695bbc89088b9526ea9045410e5afb70a985cplars
94865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
95865695bbc89088b9526ea9045410e5afb70a985cplars#
96865695bbc89088b9526ea9045410e5afb70a985cplars# FUNCTION:  do_test
97865695bbc89088b9526ea9045410e5afb70a985cplars#
98865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
99865695bbc89088b9526ea9045410e5afb70a985cplars
100865695bbc89088b9526ea9045410e5afb70a985cplarsdo_test()
101865695bbc89088b9526ea9045410e5afb70a985cplars{
102ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    while [ $TST_COUNT -le $NUMLOOPS ]; do
103ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        rwho -a > $OUTFILE
10436531d536b405718b2520ae8ddd6b33d01b019dfSimon Xu        HOST=`grep $LHOST $OUTFILE | sed 's/[^ ]* *//; s/:.*//' | uniq`
105ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in rwho outfile"
10636531d536b405718b2520ae8ddd6b33d01b019dfSimon Xu        HOST=`grep $RHOSTNAME $OUTFILE | sed 's/[^ ]* *//; s/:.*//' | uniq`
107ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in rwho outfile"
108ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
109ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        ruptime -a > $OUTFILE
11036531d536b405718b2520ae8ddd6b33d01b019dfSimon Xu        HOST=`grep $LHOST $OUTFILE | sed 's/ .*//' | uniq`
111ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in ruptime outfile"
11236531d536b405718b2520ae8ddd6b33d01b019dfSimon Xu        HOST=`grep $RHOSTNAME $OUTFILE | sed 's/ .*//' | uniq`
113ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in ruptime outfile"
114ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
11536531d536b405718b2520ae8ddd6b33d01b019dfSimon Xu        tst_resm TINFO "Test $TST_COUNT of $NUMLOOPS complete"
116ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        incr_tst_count
117ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    done
118865695bbc89088b9526ea9045410e5afb70a985cplars}
119865695bbc89088b9526ea9045410e5afb70a985cplars
120865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
121865695bbc89088b9526ea9045410e5afb70a985cplars#
122865695bbc89088b9526ea9045410e5afb70a985cplars# FUNCTION:  do_cleanup
123865695bbc89088b9526ea9045410e5afb70a985cplars#
124865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
125865695bbc89088b9526ea9045410e5afb70a985cplars
126865695bbc89088b9526ea9045410e5afb70a985cplarsdo_cleanup()
127865695bbc89088b9526ea9045410e5afb70a985cplars{
1286850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu    if [ -n "$LHOST_PID" ]; then
129ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Stopping rwhod on $LHOST"
13037550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman        killall rwhod
131ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
132ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
1336850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xu    if [ -n "$RHOST_PID" ]; then
134ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        tst_resm TINFO "Stopping rwhod on $RHOST"
135ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya        rsh -n -l root $RHOST "killall rwhod"
136ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    fi
137ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
138ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya    tst_cleanup
139865695bbc89088b9526ea9045410e5afb70a985cplars}
140865695bbc89088b9526ea9045410e5afb70a985cplars
141865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
142865695bbc89088b9526ea9045410e5afb70a985cplars#
143865695bbc89088b9526ea9045410e5afb70a985cplars# FUNCTION:  MAIN
144865695bbc89088b9526ea9045410e5afb70a985cplars#
145865695bbc89088b9526ea9045410e5afb70a985cplars#-----------------------------------------------------------------------
146ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya. net_cmdlib.sh
147ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya
148ef77253961f909f87e82e6d2b620e87af33e9665yaberauneyaread_opts $*
149865695bbc89088b9526ea9045410e5afb70a985cplarsdo_setup
150865695bbc89088b9526ea9045410e5afb70a985cplarsdo_test
1516850e35edd342a5aa3c2f6cb9b9a256fb6dfdd34Simon Xudo_cleanup
152865695bbc89088b9526ea9045410e5afb70a985cplarsend_testcase
153