Whamcloud - gitweb
Added tmpfs-sanity.sh which checks if xattr support for tmpfs works fine.
authoryury <yury>
Mon, 9 Feb 2004 13:20:28 +0000 (13:20 +0000)
committeryury <yury>
Mon, 9 Feb 2004 13:20:28 +0000 (13:20 +0000)
lustre/tests/tmpfs-sanity.sh [new file with mode: 0755]

diff --git a/lustre/tests/tmpfs-sanity.sh b/lustre/tests/tmpfs-sanity.sh
new file mode 100755 (executable)
index 0000000..2e8b0c0
--- /dev/null
@@ -0,0 +1,132 @@
+#!/bin/bash
+
+fail()
+{
+       echo "ERROR: $@"
+       exit 1
+}
+
+test_del_xattr()
+{
+       name=$1
+       file=$2
+       message=$3
+
+       echo -n "$message..."
+       `$setattr -x $name $file 2> /dev/null`
+       
+       if test "x$?" != "x0"; then
+               echo "failed"
+               return 1
+       else
+               check_xattr $name "<deleted>" $file && echo "done" || echo "failed"
+               return 0
+       fi
+}
+
+test_set_xattr()
+{
+       name=$1
+       value=$2
+       file=$3
+       message=$4
+
+       echo -n "$message..."
+       `$setattr -n $name -v $value $file 2>/dev/null`
+
+       if test "x$?" != "x0"; then
+               echo "failed"
+               return 1
+       else
+               check_xattr $name $value $file && echo "done" || echo "failed"
+               return 0
+       fi
+}
+
+test_list_xattr()
+{
+       file=$1
+       message=$2
+
+       echo -n "$message..."
+       `$setattr -n list_name0 -v list_value0 $file 2>/dev/null`
+       `$setattr -n list_name1 -v list_value1 $file 2>/dev/null`
+       `$setattr -n list_name2 -v list_value2 $file 2>/dev/null`
+
+       nr=`$getattr -d -m ".*" $file 2>/dev/null | grep -v "^#" | \
+grep list_name | wc -l | tr --delete [[:blank:]]`
+
+       if test "x$nr" = "x3"; then
+               echo "done"
+               return 0
+       else
+               echo "failed"
+               retrun 1
+       fi
+}
+
+check_xattr()
+{
+       name=$1
+       value=$2
+       file="$3"
+       
+       if test "x$value" != "x<deleted>"; then
+               res=`$getattr -n $name $file 2>/dev/null | grep -v "^#" | sed 's/\"//g'`
+       
+               if test "x$res" = "x$name=$value"; then
+                       return 0
+               else
+                       return 1
+               fi
+       else
+               res=`$getattr -d -m ".*" $file 2>/dev/null | grep -v "^#" | sed 's/\"//g'`
+               
+               if echo $res | grep $name > /dev/null 2>&1; then
+                       return 1
+               else
+                       return 0
+               fi
+       fi
+}
+
+# check each function related to xattrs
+test_individual()
+{
+       file="$1"
+
+       test_set_xattr test_name0 test_value0 $file "Create new attribute" &&
+       test_set_xattr test_name0 test_value012345 $file "Expanding attribute" &&
+       test_set_xattr test_name0 test_value0 $file "Shrinking attribute" &&
+       test_del_xattr test_name0 $file "Delete attribute"
+       test_list_xattr $file "Getting list of attributes"
+}
+
+# checking xattr code as whole working. Not implemented yet.
+test_composite()
+{
+       return 0
+}
+
+getattr=$(which getfattr 2>/dev/null)
+setattr=$(which setfattr 2>/dev/null)
+
+if test "x$getattr" = "x" -o "x$setattr" = "x"; then
+       fail "Can't find getfattr or setfattr utilities in current path."
+fi
+
+if ! mount | grep tmpfs > /dev/null 2>&1; then
+       fail "tmpfs is not mounted"
+fi
+       
+mntpoint=$(mount | grep tmpfs | awk '{print $3}')
+
+if test "x$mntpoint" = "x"; then
+       fail "Can't find tmpfs mount point"
+fi
+
+rm -fr $mntpoint/test_file0 2> /dev/null
+touch "$mntpoint/test_file0"
+
+test_individual "$mntpoint/test_file0" && 
+test_composite "$mntpoint/test_file0" && echo "All tests passed"