#! /bin/sh
# FSQA Test No. 158
#
# get/set file attributes
#
#-----------------------------------------------------------------------
#  Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved.
#-----------------------------------------------------------------------
#
# creator
owner=allanr@sgi.com

seq=`basename $0`
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()
{
    _cleanup_testdir
}

# 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 
