rcp01 revision 6518012db8b99b04ef3e4df22aefe82fa487b809
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18#
19#
20#
21#  FILE   : rcp
22#
23#  PURPOSE: To test the basic functionality of the `rcp` command.
24#
25#  SETUP: The home directory of root on the machine exported as "RHOST"
26#         MUST have a ".rhosts" file with the hostname of the machine
27#         where the test is executed. 
28#
29#  HISTORY:
30#    06/06/03 Manoj Iyer manjo@mail.utexas.edu
31#    - Modified testcases to use test APIS and fixed bugs
32#    03/01 Robbie Williamson (robbiew@us.ibm.com)
33#      -Ported
34#
35#
36#-----------------------------------------------------------------------
37
38#-----------------------------------------------------------------------
39#
40# FUNCTION:  do_setup
41#
42#-----------------------------------------------------------------------
43
44do_setup()
45{
46
47    TCtmp=${TCtmp:-$LTPROOT/testcases/bin/$TC${EXEC_SUFFIX}$$}
48    TCdat=${TCdat:-$LTPROOT/testcases/bin/datafiles}
49    LHOST=`hostname`
50    RHOST=${RHOST:-$LHOST}
51    SLEEPTIME=${SLEEPTIME:-0}
52    FILES=${FILES:-"bin.sm bin.med bin.lg bin.jmb"}
53
54    tst_setup
55
56    exists awk rcp rsh sum
57
58    if ! rsh -n -l root $RHOST mkdir -p $TCtmp 2>&1 1>/dev/null; then
59        end_testcase "Remote mkdir failed"
60    fi
61
62    trap do_cleanup EXIT
63
64}
65
66#-----------------------------------------------------------------------
67#
68# FUNCTION:  do_test
69#
70#-----------------------------------------------------------------------
71
72do_test()
73{
74
75    for j in $FILES; do
76
77        if ! rcp $TCdat/$j $RHOST:$TCtmp/$j; then
78            end_testcase "Failed to rcp file."
79        fi
80
81        SUM1=`sum $TCdat/$j | awk '{print $1}'`
82        SUM2=`rsh -n -l root $RHOST sum $TCtmp/$j | awk '{print $1}'`
83        rsh -n -l root $RHOST "rm -f $TCtmp/$j"
84        sleep $SLEEPTIME
85
86        if [ "$SUM1 = $SUM2" ]; then
87            tst_resm TINFO "rcp $TCdat/$j $RHOST:$TCtmp/$j successful"
88        else
89            end_testcase "FAILED: wrong sum in transfer to $RHOST"
90        fi
91
92        sleep $SLEEPTIME
93
94    done
95
96    for j in $FILES; do
97
98        tst_resm TINFO "remote copying $RHOST:$TCdat/$j to $TCtmp/$j"
99        if ! rcp $RHOST:$TCdat/$j $TCtmp/$j 2>&1 1>/dev/null; then
100            tst_resm TFAIL "Failed to rcp file."; continue
101        fi
102
103        SUM1=`sum $TCtmp/$j | awk '{print $1}'`
104        SUM2=`rsh -n -l root $RHOST sum $TCdat/$j | awk '{print $1}'`
105        rm -f $TCtmp/$j
106        sleep $SLEEPTIME
107
108        if [ "$SUM1" = "$SUM2" ]; then
109            tst_resm TINFO "rcp $RHOST:$TCdat/$j $TCtmp/$j successful"
110        else
111            end_testcase "FAILED: wrong sum in transfer to $LHOST from $RHOST"
112        fi
113        sleep $SLEEPTIME
114
115    done
116
117}
118
119#-----------------------------------------------------------------------
120#
121# FUNCTION:  do_cleanup
122#
123#-----------------------------------------------------------------------
124
125do_cleanup()
126{
127    rsh -n -l root $RHOST rmdir $TCtmp
128    tst_cleanup
129}
130
131#----------------------------------------------------------------------
132# FUNCTION: MAIN
133# PURPOSE:  To invoke the functions to perform the tasks described in
134#           the prologue.
135# INPUT:    None.
136# OUTPUT:   A testcase run log with the results of the execution of this
137#           test.
138#----------------------------------------------------------------------
139. net_cmdlib.sh
140
141read_opts $*
142do_setup
143do_test
144end_testcase
145