rdist01 revision 37550cf5a86c7ca7424a2a318dd64e550f13f5df
176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#!/bin/sh 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Copyright (c) International Business Machines Corp., 2000 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# This program is free software; you can redistribute it and/or modify 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# it under the terms of the GNU General Public License as published by 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# the Free Software Foundation; either version 2 of the License, or 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# (at your option) any later version. 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# This program is distributed in the hope that it will be useful, 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# but WITHOUT ANY WARRANTY; without even the implied warranty of 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# the GNU General Public License for more details. 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# You should have received a copy of the GNU General Public License 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# along with this program; if not, write to the Free Software 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# FILE : rdist 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# PURPOSE: To test the basic functionality of the `rdist` command. 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# SETUP: The home directory of root on the machine exported as "RHOST" 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# MUST have a ".rhosts" file with the hostname of the machine 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# where the test is executed. 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# HISTORY: 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 06/06/03 Manoj Iyer manjo@mail.utexas.edu 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# - Modified testcases to use test harness APIs and fixed defects 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 03/01 Robbie Williamson (robbiew@us.ibm.com) 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# -Ported 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#*********************************************************************** 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#----------------------------------------------------------------------- 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# FUNCTION: do_setup 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#----------------------------------------------------------------------- 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmando_setup() 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman{ 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman USER_LIST=${USER_LIST:-'root'} 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman TCdat=${TCdat:-$LTPROOT/testcases/bin/datafiles} 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman TCtmp=${TCtmp:-$LTPROOT/testcases/bin/$TC${EXEC_SUFFIX}$$} 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman FILES=${FILES:-'bin.sm bin.med bin.lg bin.jmb file.dir/bin.sm file.dir/bin.med file.dir/bin.jmb'} 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman SLEEPTIME=${SLEEPTIME:-10} 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman tst_setup 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman exists awk hostname rdist 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman RHOST=${RHOST:-`hostname`} 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman # start with a clean LHOST 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for i in $FILES; do 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman rm -rf $i 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for i in $FILES; do 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman BASE=${i##*/} 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman DIR=${%%/*} 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman test -d "$DIR" || mkdir -p "$DIR" 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if [ $? -ne 0 ] ; then 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman end_testcase "failed to create $DIR" 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman fi 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if ! cp $TCdat/$BASE $DIR; then 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman end_testcase "failed to copy $TCdat/$BASE to $DIR" 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman fi 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman chmod 764 $i 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman # get the sum of all the files to rdist on the local machine 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman LSUM=0 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman SUM=`sum -s $FILES | awk '{ print $1 }'` 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for i in $SUM; do 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman LSUM=$(( $LSUM + $i )) 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#----------------------------------------------------------------------- 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# FUNCTION: create_distfile 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# create file $TCtmp/distfile 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#----------------------------------------------------------------------- 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancreate_distfile() 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman{ 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_FILES="FILES = ( " 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for i in $FILES; do 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if [ "${i%%*/}" = "." ]; then 9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_FILES="$T_FILES $i" 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman else 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_FILES="$T_FILES $DIR" 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman fi 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_FILES="$T_FILES )" 10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_HOST="HOSTS = (" 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for c_ruser in $RUSERS; do 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for c_rhost in $HOSTS; do 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_HOST=$T_HOST"$c_ruser@$c_rhost " 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman T_HOST="$T_HOST)" 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman cat <<EOF > "$TCtmp/distfile" 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$T_HOST 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$T_FILES 11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman${FILES} -> ${HOSTS} 11776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEOF 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#----------------------------------------------------------------------- 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# FUNCTION: check_result 12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# check the sum of all files rdisted from local machine to remote machine 12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#----------------------------------------------------------------------- 12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancheck_result() 12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman{ 13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman cd $TCtmp 13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for c_rhost in $HOSTS; do 13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for c_ruser in $RUSERS; do 13376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman TOTAL_SUM=`rsh -n -l $c_ruser $c_rhost \ 13476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman x=0; SUM=\$(sum -s $FILES|awk '{ print \$1 }') 13576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for i in \$SUM; do 13676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman x=\$(( \$x + \$i )) 13776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 13876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo \$x` 13976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if [ $TOTAL_SUM = $LSUM ]; then 14076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman tst_resm TINFO "Success rdist in $c_ruser@$c_rhost " 14176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman rsh -n -l $c_ruser $c_rhost "rm -rf $FILES $DIRECTORIES" 14276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman else 14376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman end_testcase "Wrong sum doing rdist in $curr_ruser@$curr_rhost" 14476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman fi 14576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 14676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 14776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 14876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 14976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#---------------------------------------------------------------------- 15076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# FUNCTION: do_test 15176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# PURPOSE: Perform the necessary steps to complete the test. 15276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# INPUT: None. 15376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# OUPUT: Error messages are logged if any of the tests fail. 15476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# EXIT VAR: 0 Success 15576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#---------------------------------------------------------------------- 15676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 15776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmando_test() 15876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman{ 15976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman HOSTS="" 16076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman RUSERS="" 16176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 16276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for cur_host in $RHOST; do 16376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman HOSTS=$HOSTS" $cur_host" 16476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman for cur_user in $USER_LIST; do 16576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman RUSERS=$RUSERS" $cur_user" 16676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman create_distfile 16776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if ! rdist -f $TCtmp/distfile; then 16876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman end_testcase "error doing rdist -f $TCtmp/distfile" 16976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman fi 17076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman check_result 17176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman sleep $SLEEPTIME 17276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 17376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman done 17476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 17576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 17676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#---------------------------------------------------------------------- 17776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# FUNCTION: MAIN 17876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# PURPOSE: To invoke the functions to perform the tasks described in 17976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# the prologue. 18076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# INPUT: None. 18176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# OUTPUT: A testcase run log with the results of the execution of this 18276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# test. 18376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#---------------------------------------------------------------------- 18476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman. net_cmdlib.sh 18576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 18676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanread_opts $* 18776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmando_setup 18876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmando_test 18976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanend_testcase 19076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman