#! /bin/bash
# FSQA Test No. 158
#
# get/set file attributes
#
#-----------------------------------------------------------------------
# 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 IRIX

_require_scratch
_scratch_mkfs_xfs >/dev/null 2>&1
_dmapi_scratch_mount

touch $SCRATCH_MNT/dmapi_test

_get_file_attr() {
    ${DMAPI_QASUITE1_DIR}cmd/get_fileattr $SCRATCH_MNT/dmapi_test | grep $1
}

_set_file_attr() {
   ${DMAPI_QASUITE1_DIR}cmd/set_fileattr $@
}

#dt_atime
atime_before="`_get_file_attr dt_atime`"
_set_file_attr -a 05m $SCRATCH_MNT/dmapi_test
atime_after="`_get_file_attr dt_atime`"
[ "$atime_before" == "$atime_after" ] && echo "dt_atime not updated"

#dt_mtime
mtime_before="`_get_file_attr dt_mtime`"
_set_file_attr -m 10m $SCRATCH_MNT/dmapi_test
mtime_after="`_get_file_attr dt_mtime`"
[ "$mtime_before" == "$mtime_after" ] && echo "mt_mtime not updated"

#dt_ctime
ctime_before="`_get_file_attr dt_ctime`"
_set_file_attr -c 15m $SCRATCH_MNT/dmapi_test
ctime_after="`_get_file_attr dt_ctime`"
[ "$ctime_before" == "$ctime_after" ] && echo "dt_ctime not updated"

#dt_dtime
dtime_before="`_get_file_attr dt_dtime`"
_set_file_attr -d 20m $SCRATCH_MNT/dmapi_test
dtime_after="`_get_file_attr dt_dtime`"
[ "$dtime_before" == "$dtime_after" ] && echo "dt_dtime not updated"

# -M mode
_set_file_attr -M 744 $SCRATCH_MNT/dmapi_test
_get_file_attr dt_mode

# -u uid
_set_file_attr -u 666 $SCRATCH_MNT/dmapi_test
_get_file_attr dt_uid

# -g gid
_set_file_attr -g 666 $SCRATCH_MNT/dmapi_test
_get_file_attr dt_gid

# -S size
_set_file_attr -S 1024 $SCRATCH_MNT/dmapi_test
_get_file_attr dt_size

status=0
exit 
