#! /bin/bash
# FSQA Test No. 162
#
# Placing holds on objects
#
#-----------------------------------------------------------------------
# Copyright (c) 2006 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 "exit \$status" 0 1 2 3 15

# 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=$SCRATCH_MNT/dmapi_hole_file
touch $qa_file

echo "***create session"
eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session`

echo "***create user event"
token="`${DMAPI_QASUITE1_DIR}cmd/create_userevent -s $newsid OBJECT_HOLD_EVENT | perl -ne 'if (/token ([0-9]+)/) { print $1; } '`"
[ $? -ne 0 ] && echo "failed to create user event"

echo "***check hold"
${DMAPI_QASUITE1_DIR}cmd/obj_ref_query -s $newsid $token $qa_file
${DMAPI_QASUITE1_DIR}cmd/obj_ref_hold -s $newsid $token $qa_file
${DMAPI_QASUITE1_DIR}cmd/obj_ref_query -s $newsid $token $qa_file

echo "***check holding an object thats already held"
${DMAPI_QASUITE1_DIR}cmd/obj_ref_hold -s $newsid $token $qa_file 2>/dev/null
[ $? -eq 0 ] && echo "obj_ref_hold should have failed"

echo "***release object"
${DMAPI_QASUITE1_DIR}cmd/obj_ref_rele -s $newsid $token $qa_file
${DMAPI_QASUITE1_DIR}cmd/obj_ref_query -s $newsid $token $qa_file

echo "***release object with no hold"
${DMAPI_QASUITE1_DIR}cmd/obj_ref_rele -s $newsid $token $qa_file 2>/dev/null
[ $? -eq 0 ] && echo "obj_ref_rele should have failed"

echo "***respond to user event"
${DMAPI_QASUITE1_DIR}cmd/respond_event $newsid $token 1 0
[ $? -ne 0 ] && echo "1st respond_event failed."

${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $newsid

status=0
exit 
