1#!/bin/sh 2################################################################################ 3## ## 4## Copyright (c) International Business Machines Corp., 2001 ## 5## ## 6## This program is free software; you can redistribute it and#or modify ## 7## it under the terms of the GNU General Public License as published by ## 8## the Free Software Foundation; either version 2 of the License, or ## 9## (at your option) any later version. ## 10## ## 11## This program is distributed in the hope that it will be useful, but ## 12## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## 13## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## 14## for more details. ## 15## ## 16## You should have received a copy of the GNU General Public License ## 17## along with this program; if not, write to the Free Software ## 18## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## 19## ## 20################################################################################ 21# 22# File: tar_test.sh 23# 24# Description: Tests tar command. These tests test the basic functioanlity of 25# tape archive command. 26# 27# Author: Manoj Iyer, manjo@mail.utexas.edu 28# 29# History: Dec 17 2002 - Created - Manoj Iyer. 30# Dec 18 2002 - Added code to read the LTPROOT and TMPBASE 31# variables to set LTPBIN and LTPTMP variables 32# 33 34export TST_TOTAL=1 35 36if [ -z "$LTPTMP" -a -z "$TMPBASE" ]; then 37 LTPTMP=/tmp 38else 39 LTPTMP=$TMPBASE 40fi 41 42if [ -z "$LTPBIN" -a -z "$LTPROOT" ]; then 43 LTPBIN=./bin 44else 45 LTPBIN=$LTPROOT/testcases/bin 46fi 47 48# set return code RC variable to 0, it will be set with a non-zero return code 49# in case of error. Set TFAILCNT to 0, increment if there occures a failure. 50# 51 52TFAILCNT=0 53RC=0 54RC1=0 55RC2=0 56RC3=0 57 58# Test #1 59# Test if tar command can create a tar file 'tar cvf <tar filename> <list of 60# files>' 61 62export TCID=tar01 63export TST_COUNT=1 64 65$LTPBIN/tst_resm TINFO \ 66 "TEST #1: tar command with cvf options creates an archive file" 67 68touch $LTPTMP/tar_tstf1 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 69 70tar cvf $LTPTMP/tar_tstf.tar $LTPTMP/tar_tstf1 \ 71 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 72 73if [ $RC -eq 0 ]; then 74 if [ -f $LTPTMP/tar_tstf.tar ]; then 75 $LTPBIN/tst_resm TPASS "tar: cvf option created a tar file." 76 else 77 $LTPBIN/tst_res TFAIL $LTPTMP/tar_tst.out \ 78 "tar: cvf option failed to create archive. Reason" 79 TFAILCNT=$(( $TFAILCNT+1 )) 80 fi 81else 82 $LTPBIN/tst_brk TBROK $LTPTMP/file.out NULL \ 83 "tar: command failed. Reason:" 84 TFAILCNT=$(( $TFAILCNT+1 )) 85fi 86 87 88# Test #2 89# Test if tar command with tvf option will list all the files in the archive. 90 91export TCID=tar02 92export TST_COUNT=2 93 94$LTPBIN/tst_resm TINFO \ 95 "TEST #2: tar command with tvf options lists all files in an archive file" 96 97if [ -f $LTPTMP/tar_tstf.tar ]; then 98 echo "$LTPTMP/tar_tstf.tar exists" > /dev/null 2>&1 99else 100 touch $LTPTMP/tar_tstf1 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 101 tar cvf $LTPTMP/tar_tstf.tar $LTPTMP/tar_tstf1 \ 102 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 103 104 if [ $RC -eq 0 ]; then 105 if [ -f $LTPTMP/tar_tstf.tar ]; then 106 echo "tar file created" > /dev/null 2>&1 107 else 108 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 109 "tar: cvf option failed to create archive. Reason" 110 TFAILCNT=$(( $TFAILCNT+1 )) 111 fi 112 else 113 $LTPBIN/tst_brk TBROK $LTPTMP/file.out NULL \ 114 "tar: command failed. Reason:" 115 TFAILCNT=$(( $TFAILCNT+1 )) 116 fi 117fi 118 119tar -tvf $LTPTMP/tar_tstf.tar > /$LTPTMP/tar_tst.out 2>&1 || RC=$? 120 121if [ $RC -eq 0 ]; then 122 grep "tar_tstf1" $LTPTMP/tar_tst.out > $LTPTMP/tar_tst2.out 2>&1 || RC1=$? 123 grep "tar_tstf2" $LTPTMP/tar_tst.out 2>&1 1>>$LTPTMP/tar_tst2.out || RC2=$? 124 grep "tar_tstf3" $LTPTMP/tar_tst.out 2>&1 1>>$LTPTMP/tar_tst2.out || RC3=$? 125 126 if [ $RC1 -eq 0 -a $RC2 -eq 0 -a $RC3 -eq 0 ]; then 127 $LTPBIN/tst_resm TPASS "tar: tvf option listed all its contents" 128 else 129 $LTPBIN/tst_res TFAIL $LTPTMP/tar_tst.out \ 130 "tar: failed to list all the files in the archive. Reason:" 131 TFAILCNT=$(( $TFAILCNT+1 )) 132 fi 133fi 134 135 136# Test #3 137# Test if tar command can create a compressed tar file 'tar cvf <tar filename> 138# <list of files>' 139 140export TCID=tar03 141export TST_COUNT=3 142 143$LTPBIN/tst_resm TINFO \ 144 "TEST #3: tar command with zcvf options creates an compressed archive file" 145 146touch $LTPTMP/tar_tstf1 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 147 148tar zcvf $LTPTMP/tar_tstf.tgz $LTPTMP/tar_tstf1 \ 149 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 150 151if [ $RC -eq 0 ]; then 152 if [ -f $LTPTMP/tar_tstf.tgz ]; then 153 file $LTPTMP/tar_tstf.tgz | grep "gzip compressed data" \ 154 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 155 if [ $RC -eq 0 ]; then 156 $LTPBIN/tst_resm TPASS \ 157 "tar: zcvf option created a compressed tar file." 158 else 159 $LTPBIN/tst_res TFAIL $LTPTMP/tar_tst.out \ 160 "tar: zcvf option failed to create a compressed tar file. Reason:" 161 TFAILCNT=$(( $TFAILCNT+1 )) 162 fi 163 else 164 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 165 "tar: cvf option failed to create compressed archive. Reason" 166 TFAILCNT=$(( $TFAILCNT+1 )) 167 fi 168else 169 $LTPBIN/tst_brk TBROK $LTPTMP/file.out NULL \ 170 "tar: command failed while creating compressed archive. Reason:" 171 TFAILCNT=$(( $TFAILCNT+1 )) 172fi 173 174 175# Test #4 176# Test if tar command with xvf can untar an archive file created by tar. 177 178export TCID=tar04 179export TST_COUNT=4 180 181$LTPBIN/tst_resm TINFO \ 182 "TEST #4: tar command with xvf options extracts files from an archive file" 183 184if [ -f $LTPTMP/tar_tstf.tar ]; then 185 echo "tar file exists" > /dev/null 2>&1 186else 187 touch $LTPTMP/tar_tstf1 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 188 189 tar cvf $LTPTMP/tar_tstf.tar $LTPTMP/tar_tstf1 \ 190 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 191 192 if [ $RC -eq 0 ]; then 193 if [ -f $LTPTMP/tar_tstf.tar ]; then 194 $LTPBIN/tst_resm TINFO "tar: cvf option created a tar file." 195 else 196 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 197 "tar: cvf option failed to create archive. Reason" 198 TFAILCNT=$(( $TFAILCNT+1 )) 199 fi 200 else 201 $LTPBIN/tst_brk TBROK $LTPTMP/file.out NULL \ 202 "tar: command failed. Reason:" 203 TFAILCNT=$(( $TFAILCNT+1 )) 204 fi 205fi 206 207tar xvf $LTPTMP/tar_tstf.tar > $LTPTMP/tar_tst.out 2>&1 || RC=$? 208 209if [ $? -eq 0 ]; then 210 if [ -d $LTPTMP -a -f $LTPTMP/tar_tstf1 -a -f $LTPTMP/tar_tstf2 -a -f $LTPTMP/tar_tstf3 ]; then 211 $LTPBIN/tst_resm TPASS "tar: xvf option extracted the archive file." 212 else 213 $LTPBIN/tst_res TFAIL $LTPTMP/tar_tst.out \ 214 "tar: xvf option failed to extract. Reason:" 215 TFAILCNT=$(( $TFAILCNT+1 )) 216 fi 217else 218 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 219 "tar: command failed while extracting files. Reason" 220 TFAILCNT=$(( $TFAILCNT+1 )) 221fi 222 223rm -f $LTPTMP/tar_tst* 224 225# Test #5 226# Test if tar command can extract a compressed tar file 'tar zxvf 227# <tar filename> <list of files>' 228 229export TCID=tar05 230export TST_COUNT=5 231 232$LTPBIN/tst_resm TINFO \ 233 "TEST #5: tar command with zxvf options extracts a compressed archive file" 234 235if [ -f tar_tstf.tgz ]; then 236 echo "compressed archive file already exists" > /dev/null 2>&1 237else 238 239 touch $LTPTMP/tar_tstf1 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 240 tar zcvf $LTPTMP/tar_tstf.tgz $LTPTMP/tar_tstf1 \ 241 $LTPTMP/tar_tstf2 $LTPTMP/tar_tstf3 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 242 243 if [ $RC -eq 0 ]; then 244 if [ -f $LTPTMP/tar_tstf.tgz ]; then 245 file $LTPTMP/tar_tstf.tgz | grep "gzip compressed data" \ 246 > $LTPTMP/tar_tst.out 2>&1 || RC=$? 247 if [ $RC -eq 0 ]; then 248 $LTPBIN/tst_resm TINFO \ 249 "tar: zcvf option created a compressed tar file." 250 else 251 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 252 "tar: zcvf option failed to create a compressed tar file. Reason:" 253 TFAILCNT=$(( $TFAILCNT+1 )) 254 fi 255 else 256 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 257 "tar: cvf option failed to create compressed archive. Reason" 258 TFAILCNT=$(( $TFAILCNT+1 )) 259 fi 260 else 261 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 262 "tar: command failed while creating compressed archive. Reason:" 263 TFAILCNT=$(( $TFAILCNT+1 )) 264 fi 265fi 266 267tar zxvf $LTPTMP/tar_tstf.tgz > $LTPTMP/tar_tst.out 2>&1 || RC=$? 268 269if [ $? -eq 0 ]; then 270 if [ -d $LTPTMP -a -f $LTPTMP/tar_tstf1 -a -f $LTPTMP/tar_tstf2 -a -f $LTPTMP/tar_tstf3 ]; then 271 $LTPBIN/tst_resm TPASS \ 272 "tar: zxvf option extracted the compressed archive file." 273 else 274 $LTPBIN/tst_res TFAIL $LTPTMP/tar_tst.out \ 275 "tar: zxvf option failed to extract compressed archive. Reason:" 276 TFAILCNT=$(( $TFAILCNT+1 )) 277 fi 278else 279 $LTPBIN/tst_brk TBROK $LTPTMP/tar_tst.out NULL \ 280 "tar: command failed while extracting compressed archive files. Reason" 281 TFAILCNT=$(( $TFAILCNT+1 )) 282fi 283 284rm -f $LTPTMP/tar_tst* 285 286exit $TFAILCNT 287