Home | History | Annotate | Download | only in ftp
      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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     18 #
     19 #
     20 #
     21 #  FILE   : ftp
     22 #
     23 #  PURPOSE: To test the basic functionality of the `ftp` 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. Also, both machines MUST have
     28 #         the same path configuration for the test for proper test data
     29 #         file transfers. The PASSWD variable should also be set to root's
     30 #	  login password.
     31 #
     32 #  HISTORY:
     33 #    06/06/03 Manoj Iyer manjo (at] mail.utexas.edu
     34 #      - Modified to use LTP test harness APIs
     35 #    03/01 Robbie Williamson (robbiew (at] us.ibm.com)
     36 #      -Ported
     37 #
     38 #
     39 #-----------------------------------------------------------------------
     40 #
     41 #----------------------------------------------------------------------
     42 
     43 #-----------------------------------------------------------------------
     44 #
     45 # FUNCTION:  do_setup
     46 #
     47 #-----------------------------------------------------------------------
     48 
     49 do_setup()
     50 {
     51 
     52     TC=ftp
     53     TCtmp=${TCtmp:-$LTPROOT/$TC${EXEC_SUFFIX}$$}
     54     TCdat=${TCdat:-$LTPROOT/datafiles}
     55     SLEEPTIME=${SLEEPTIME:-0}
     56     ASCII_FILES=${ASCII_FILES:-"ascii.sm ascii.med ascii.lg ascii.jmb"}
     57     BIN_FILES=${BIN_FILES:-"bin.sm bin.med bin.lg bin.jmb"}
     58 
     59     RHOST=${RHOST:-`hostname`}
     60     RUSER=${RUSER:-root}
     61     PASSWD=${PASSWD:-.pasroot}
     62 
     63     tst_setup
     64 
     65     exists awk ftp rsh
     66 
     67     cd "$TCtmp"
     68 
     69     rsh -n -l root $RHOST mkdir -p "$TCtmp"
     70     rsh -n -l root $RHOST chown -R ${RUSER} "$TCtmp"
     71     [ $? = 0 ] || end_testcase "Check .rhosts file on remote machine."
     72 
     73 }
     74 
     75 #-----------------------------------------------------------------------
     76 #
     77 # FUNCTION:  do_test
     78 #
     79 #-----------------------------------------------------------------------
     80 
     81 do_test()
     82 {
     83 
     84     for i in binary ascii; do
     85 
     86         if [ $i = "binary" ]; then
     87             FILES=$BIN_FILES
     88         fi
     89         if [ $i = "ascii" ]; then
     90             FILES=$ASCII_FILES
     91         fi
     92         for j in $FILES; do
     93 
     94             for a in get put; do
     95                 if [ $a = "get" ]; then
     96                     {
     97                         echo user $RUSER $PASSWD
     98                         echo lcd $TCtmp
     99                         echo $i
    100                         echo cd $TCdat
    101                         echo $a $j
    102                         echo quit
    103                     } | ftp -nv $RHOST
    104                     SUM1=`ls -l $TCtmp/$j  | awk '{print $5}'`
    105                     SUM2=`ls -l $TCdat/$j | awk '{print $5}'`
    106                     rm -f $TCtmp/$j
    107                 else
    108                     {
    109                         echo user $RUSER $PASSWD
    110                         echo lcd $TCdat
    111                         echo $i
    112                         echo cd $TCtmp
    113                         echo $a $j
    114                         echo quit
    115                     } | ftp -nv $RHOST
    116                     SUM1=`rsh -n -l root $RHOST sum $TCtmp/$j | awk '{print $1}'`
    117                     SUM2=`sum $TCdat/$j | awk '{print $1}'`
    118                     rsh -n -l root $RHOST rm -f $TCtmp/$j
    119                 fi
    120 
    121                 if [ $SUM1 = $SUM2 ]; then
    122                     tst_resm TINFO "Test Successful doing ftp $a $j $i"
    123                 else
    124                     end_testcase "Test Fail: Wrong sum while performing ftp $a $j $i"
    125                 fi
    126                 sleep $SLEEPTIME
    127             done
    128         done
    129     done
    130 }
    131 
    132 
    133 #-----------------------------------------------------------------------
    134 #
    135 # FUNCTION:  do_cleanup
    136 #
    137 #-----------------------------------------------------------------------
    138 
    139 do_cleanup()
    140 {
    141     rsh -n -l root $RHOST rmdir "$TCtmp"
    142     tst_cleanup
    143 }
    144 
    145 #----------------------------------------------------------------------
    146 # FUNCTION: MAIN
    147 # PURPOSE:  To invoke the functions to perform the tasks described in
    148 #           the prologue.
    149 # INPUT:    None.
    150 # OUTPUT:   A testcase run log with the results of the execution of this
    151 #           test.
    152 #----------------------------------------------------------------------
    153 . net_cmdlib.sh
    154 
    155 read_opts $*
    156 do_setup
    157 do_test
    158 end_testcase
    159