#! /bin/bash # FS QA Test No. 098. Modified from UDFQA test 035 # # simple attr tests for EAs: # - set # - get # - list # - remove # Basic testing. # + udf_db checks. # (033 + udf_db) # #----------------------------------------------------------------------- # Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # #----------------------------------------------------------------------- # seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { rm -f $tmp.* } # get standard environment, filters and checks . ./common/rc . ./common/filter _db_filter() { awk ' /foo cat foo echo "should be no EAs for foo:" ${ATTR_PROG} -l foo echo "set EA :" ${ATTR_PROG} -s noise -V woof foo echo "set EA :" ${ATTR_PROG} -s colour -V blue foo echo "set EA :" ${ATTR_PROG} -s size -V small foo echo "list the EAs for foo: noise, colour, size" ${ATTR_PROG} -l foo echo "check the list again for foo" ${ATTR_PROG} -l foo echo "unmount the FS and see if EAs are persistent" _umount_check_mount echo "check the list again for foo after umount/mount" ${ATTR_PROG} -l foo echo "get the value of the noise EA" ${ATTR_PROG} -g noise foo echo "get the value of the colour EA which was removed earlier" ${ATTR_PROG} -g colour foo echo "get the value of the size EA" ${ATTR_PROG} -g size foo echo "remove the colour EA on foo" ${ATTR_PROG} -r colour foo echo "list EAs for foo: noise, size" ${ATTR_PROG} -l foo echo "get the value of the noise EA" ${ATTR_PROG} -g noise foo echo "get the value of the colour EA which was removed earlier" ${ATTR_PROG} -g colour foo echo "get the value of the size EA" ${ATTR_PROG} -g size foo echo "list all the EAs again: noise, size" ${ATTR_PROG} -l foo echo "change the value of the size EA from small to huge" ${ATTR_PROG} -s size -V huge foo echo "get the size EA which should now have value huge" ${ATTR_PROG} -g size foo echo "list EAs: noise, size" ${ATTR_PROG} -l foo echo "remove the size EA from foo" ${ATTR_PROG} -r size foo echo "list EAs: noise (size EA has been removed)" ${ATTR_PROG} -l foo echo "get the noise EA: woof" ${ATTR_PROG} -g noise foo echo "try removing non-existent EA named woof" ${ATTR_PROG} -r woof foo echo "try removing already removed EA size" ${ATTR_PROG} -r size foo echo "list EAs: noise" ${ATTR_PROG} -l foo echo "try removing already removed EA colour" ${ATTR_PROG} -r colour foo echo "list EAs: noise" ${ATTR_PROG} -l foo echo "remove remaining EA noise" ${ATTR_PROG} -r noise foo echo "list EAs: should be no EAs left now" ${ATTR_PROG} -l foo echo "unmount the FS and see if EAs are persistent" _umount_check_mount echo "list EAs: should still be no EAs left" ${ATTR_PROG} -l foo echo "" echo "*** Test out the root namespace ***" echo "" echo "set EA :" ${ATTR_PROG} -R -s colour -V marone foo echo "set EA :" ${ATTR_PROG} -s colour -V beige foo echo "set EA :" ${ATTR_PROG} -s vomit -V pizza foo echo "set EA :" ${ATTR_PROG} -R -s noise -V whack foo echo "list root EAs: :" ${ATTR_PROG} -R -l foo echo "list user EAs: :" ${ATTR_PROG} -l foo echo "get root EA colour: marone" ${ATTR_PROG} -R -g colour foo echo "get root EA noise: whack" ${ATTR_PROG} -R -g noise foo echo "get root EA vomit which is a user EA => find nothing" ${ATTR_PROG} -R -g vomit foo echo "" echo "unmount the FS and see if EAs are persistent" echo "" _umount_check_mount echo "get root EA colour: marone" ${ATTR_PROG} -R -g colour foo echo "get root EA noise: whack" ${ATTR_PROG} -R -g noise foo echo "get user EA vomit: pizza" ${ATTR_PROG} -g vomit foo echo "remove the root colour EA" ${ATTR_PROG} -R -r colour foo echo "list root EAs: :" ${ATTR_PROG} -R -l foo echo "list user EAs: :" ${ATTR_PROG} -l foo echo "remove the final root EA noise" ${ATTR_PROG} -R -r noise foo echo "list root EAs: none" ${ATTR_PROG} -R -l foo cd / _scratch_unmount udf_db -f $SCRATCH_DEV | _db_filter # Checks the udf filesystem _check_udf_filesystem $SCRATCH_DEV _scratch_mount cd $SCRATCH_MNT echo "delete the file foo - which will delete the associated streams" rm foo cd / _scratch_unmount udf_db -f $SCRATCH_DEV | _db_filter # Checks the udf filesystem _check_udf_filesystem $SCRATCH_DEV # optional stuff if your test has verbose output to help resolve problems #echo #echo "If failure, check $seqres.full (this) and $seqres.full.ok (reference)" # success, all done status=0 exit