Files
apfstests/168
T
Christoph Hellwig f381f98206 xfstests: move GPL boilerplates to fix lsqa.pl
It turns out lsqa.pl nees the test number and description first in the
file, so move the GPL boilerplates below it.

Also remove acouple of cases where we have one full copyright line + gpl
boilerplate before the description and another copyright line after
the description.

Signed-off-by: Christoph Hellwig <hch@lst.de>
2009-05-28 17:04:15 +02:00

116 lines
3.4 KiB
Bash
Executable File

#! /bin/sh
# FSQA Test No. 168
#
# Check for DMAPI destroy events when removing files without attributes
# See PV960928 for details
#
#-----------------------------------------------------------------------
# Copyright (c) 2007 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
#
#-----------------------------------------------------------------------
#
# creator
owner=ddiss@sgi.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
rm -f $seq.full
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
_cleanup_testdir
}
_filter_dmapi_print_event() {
$PERL_PROG -ne '
# replace session/file specific output with generic placeholders
s/token\s+\d+/token TOKEN/g ;
s/sequence\s+\d+/sequence SEQ/g ;
s/^\s+parent\s+dir\s+\w+/parent dir PARENT_DIR/g ;
s/^\s+name\s+.*/name FILE_NAME/g ;
s/^\s+mode\s+bits\s+mode\s+\d+:\s+/mode bits mode MODE: /g ;
s/perm\s+[\w|-]+\s[\w|-]+\s[\w|-]+/perm PERMISSIONS/g ;
s/,\s+type\s+.*/, type FILE_TYPE/g ;
s/^\s+object\s+\w+/object OBJECT/g ;
s/^\s+new\s+object\s+\w+/new object OBJECT/g ;
s/^\s+handle\s+\w+/handle HANDLE/g ;
# when print_event is killed, the following is output. trim it
s/^\s*print_event: Processing any undelivered event messages.*\n//g ;
s/^\s*print_event: Shutting down the session.*\n//g ;
# trim blank lines
s/^\s*\n//g ;
print ;'
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.dmapi
# real QA test starts here
_supported_fs xfs
_supported_os Linux
_require_scratch
_scratch_mkfs_xfs >/dev/null 2>&1
_dmapi_scratch_mount
qa_file_noattr=$SCRATCH_MNT/dmapi_file_noattr
qa_file_withattr=$SCRATCH_MNT/dmapi_file_withattr
# run dmapi print_event in background to capture events triggered during test
${DMAPI_QASUITE1_DIR}cmd/print_event $SCRATCH_MNT > $tmp.print_event_out 2>&1 &
dmapi_print_event_pid=$!
# give time for print_event to start capturing events
sleep 2
# enable DMAPI set_return_on_destroy for $SCRATCH_MNT
${DMAPI_COMMON_DIR}cmd/set_return_on_destroy -F $SCRATCH_MNT ATTR_NAME_1
echo "# create file"
touch $qa_file_noattr
echo "# remove file"
rm -f $qa_file_noattr
echo "# create file"
touch $qa_file_withattr
echo "# set dmapi attributes on file"
${DMAPI_QASUITE1_DIR}cmd/set_dmattr $qa_file_withattr ATTR_NAME_1 ATTR_VALUE_1
echo "# remove file"
rm -f $qa_file_withattr
# kill off background dmapi print_event process
kill $dmapi_print_event_pid
# give dmapi print_event time to finish writing out any events not yet output
wait
# dmapi destroy events are asyncronous, don't rely on fixed ordering of events
# in print_event output, use sort.
echo "# here comes the dmapi print_event filtered and sorted output"
cat $tmp.print_event_out | tee -a $here/$seq.full | _filter_dmapi_print_event | LC_COLLATE=POSIX sort
rm $tmp.print_event_out
status=0
exit