#!/bin/bash # # Blackbox test for smbget. # if [ $# -lt 7 ]; then cat < $TMPDIR/rcfile $SMBGET -vn -f $TMPDIR/rcfile smb://$SERVER_IP/smbget/testfile rc=$? rm -f $TMPDIR/rcfile if [ $rc -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi cmp --silent $WORKDIR/testfile ./testfile if [ $? -ne 0 ]; then echo 'ERROR: file content does not match' return 1 fi return 0 } test_recursive_U() { clear_download_area $SMBGET -v -R -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/ if [ $? -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi cmp --silent $WORKDIR/testfile ./testfile && \ cmp --silent $WORKDIR/dir1/testfile1 ./dir1/testfile1 && \ cmp --silent $WORKDIR/dir2/testfile2 ./dir2/testfile2 if [ $? -ne 0 ]; then echo 'ERROR: file content does not match' return 1 fi return 0 } test_recursive_existing_dir() { clear_download_area mkdir dir1 $SMBGET -v -R -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/ if [ $? -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi cmp --silent $WORKDIR/testfile ./testfile && \ cmp --silent $WORKDIR/dir1/testfile1 ./dir1/testfile1 && \ cmp --silent $WORKDIR/dir2/testfile2 ./dir2/testfile2 if [ $? -ne 0 ]; then echo 'ERROR: file content does not match' return 1 fi return 0 } test_recursive_with_empty() # see Bug 13199 { clear_download_area # create some additional empty directories mkdir -p $WORKDIR/dir001/dir002/dir003 mkdir -p $WORKDIR/dir004/dir005/dir006 $SMBGET -v -R -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/ rc=$? rm -rf $WORKDIR/dir001 rm -rf $WORKDIR/dir004 if [ $rc -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi cmp --silent $WORKDIR/testfile ./testfile && \ cmp --silent $WORKDIR/dir1/testfile1 ./dir1/testfile1 && \ cmp --silent $WORKDIR/dir2/testfile2 ./dir2/testfile2 if [ $? -ne 0 ]; then echo 'ERROR: file content does not match' return 1 fi if [ ! -d dir001/dir002/dir003 ] || [ ! -d dir004/dir005/dir006 ]; then echo 'ERROR: empty directories are not present' return 1 fi return 0 } test_resume() { clear_download_area cp $WORKDIR/testfile . truncate -s 1024 testfile $SMBGET -v -r -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile if [ $? -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi cmp --silent $WORKDIR/testfile ./testfile if [ $? -ne 0 ]; then echo 'ERROR: file content does not match' return 1 fi return 0 } test_resume_modified() { clear_download_area dd if=/dev/urandom bs=1024 count=2 of=testfile $SMBGET -v -r -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile if [ $? -ne 1 ]; then echo 'ERROR: RC does not match, expected: 1' return 1 fi return 0 } test_update() { clear_download_area $SMBGET -v -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile if [ $? -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi # secondary download should pass $SMBGET -v -u -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile if [ $? -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi echo "modified" >> testfile # touch source to trigger new download sleep 2 touch -m $WORKDIR/testfile $SMBGET -v -u -U$USERNAME%$PASSWORD smb://$SERVER_IP/smbget/testfile if [ $? -ne 0 ]; then echo 'ERROR: RC does not match, expected: 0' return 1 fi cmp --silent $WORKDIR/testfile ./testfile if [ $? -ne 0 ]; then echo 'ERROR: file content does not match' return 1 fi return 0 } create_test_data pushd $TMPDIR failed=0 testit "download single file as guest" test_singlefile_guest \ || failed=`expr $failed + 1` testit "download single file with -U" test_singlefile_U \ || failed=`expr $failed + 1` testit "download single file with smb URL" test_singlefile_smburl \ || failed=`expr $failed + 1` testit "download single file with rcfile" test_singlefile_rcfile \ || failed=`expr $failed + 1` testit "recursive download" test_recursive_U \ || failed=`expr $failed + 1` testit "recursive download (existing target dir)" test_recursive_existing_dir \ || failed=`expr $failed + 1` testit "recursive download with empty directories" test_recursive_with_empty \ || failed=`expr $failed + 1` testit "resume download" test_resume \ || failed=`expr $failed + 1` testit "resume download (modified file)" test_resume_modified \ || failed=`expr $failed + 1` testit "update" test_update \ || failed=`expr $failed + 1` clear_download_area popd # TMPDIR remove_test_data exit $failed