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