Whamcloud - gitweb
LU-4512 hsm: Fix lhsmtool_posix --report option
[fs/lustre-release.git] / lustre / tests / metadata-updates.sh
index c2c6457..eab2800 100755 (executable)
@@ -20,6 +20,11 @@ NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
 
 [ -z $CLIENTS ] && NODES_TO_USE=$(hostname)
 
+# hostname could differ from a network interface
+# configured for NODES_TO_USE, bug 23961
+# the test dir on each host is created based on `hostname` of this host
+HOSTS=$(comma_list $(do_nodes $NODES_TO_USE "echo \\\$(hostname)"))
+
 FILE=testfile
 FILE_SIZE=1024
 CURRENT_MODE=0644
@@ -27,8 +32,10 @@ NEW_MODE=0222
 NEW_ATIME="2001-01-01 GMT"
 NEW_MTIME="2005-05-05 GMT"
 
-test_UID=$(id -u)
-test_GID=$(id -g)
+test_USER=$(id -u -n)
+test_GROUP=$(id -g -n)
+
+SUMFILE=$TESTDIR/mdsum
 
 NUM_FILES=1000
 
@@ -46,6 +53,7 @@ cleanup_prepare () {
 DIR=$TESTDIR/\\\$(hostname);
 TESTFILE=\\\$DIR/$FILE;
 rm -f \\\$TESTFILE;
+rm -f $SUMFILE;
 rmdir \\\$DIR 2>/dev/null;
 mkdir -p \\\$DIR" || return ${PIPESTATUS[0]}
     return 0;
@@ -65,17 +73,15 @@ do_write () {
 TESTFILE=$TESTDIR/\\\$(hostname)/$FILE;
 dd if=/dev/zero of=\\\$TESTFILE bs=$FILE_SIZE count=1 2>/dev/null || exit 54;
 echo \\\$(hostname) | dd of=\\\$TESTFILE conv=notrunc 2>/dev/null || exit 55; 
-md5sum \\\$TESTFILE; " || return ${PIPESTATUS[0]}
+md5sum \\\$TESTFILE >> $SUMFILE; " || return ${PIPESTATUS[0]}
     return 0
 }
 
 do_check_data () {
-    local sums=$1
-    local HOST
     echo "Checking file(s) data ... md5sum : "
-    echo "$sums"
+    cat $SUMFILE
 
-    do_nodes --verbose $NODES_TO_USE "echo \\\"$sums\\\" | md5sum --check $sum" || \
+    do_nodesv $NODES_TO_USE "md5sum --check $SUMFILE" || \
         return ${PIPESTATUS[0]}
     return 0
 }
@@ -85,7 +91,7 @@ do_truncate () {
 
      do_nodes $NODES_TO_USE "set $TRACE;
 TESTFILE=$TESTDIR/\\\$(hostname)/$FILE;
-truncate \\\$TESTFILE 0" || return ${PIPESTATUS[0]} 
+$TRUNCATE \\\$TESTFILE 0" || return ${PIPESTATUS[0]} 
 
     FILE_SIZE=0
     return 0
@@ -93,21 +99,21 @@ truncate \\\$TESTFILE 0" || return ${PIPESTATUS[0]}
 
 # check st_uid, st_gid, st_size, st_mode
 get_stat () {
-    local attr="$test_UID $test_GID $FILE_SIZE $CURRENT_MODE"
+       local attr="$test_USER $test_GROUP $FILE_SIZE $CURRENT_MODE"
 
-    echo "Checking file(s) attributes ... "
+       echo "Checking file(s) attributes ... "
 
-    do_nodes --verbose $NODES_TO_USE "set $TRACE;
-for HOST in ${NODES_TO_USE//,/ } ; do 
+    do_nodesv $NODES_TO_USE "set $TRACE;
+for HOST in ${HOSTS//,/ } ; do
     TESTFILE=$TESTDIR/\\\$HOST/$FILE;
-    tmp=\\\$(stat -c \\\"%u %g %s 0%a\\\" \\\$TESTFILE);
+    tmp=\\\$(stat -c \\\"%U %G %s 0%a\\\" \\\$TESTFILE);
     echo \\\"\\\$TESTFILE [ uid gid size mode ] expected : $attr ;  got : \\\$tmp \\\";
     if [ x\\\"\\\$tmp\\\" != x\\\"$attr\\\" ] ; then
         echo \\\"Wrong file attributes\\\";
         exit 56;
     fi;
 done " || return ${PIPESTATUS[0]}
-    return 0 
+       return 0
 }
 
 do_chmod () {
@@ -140,8 +146,8 @@ do_check_timestamps () {
 
     echo "Checking atime, mtime ... "
 
-    do_nodes --verbose $NODES_TO_USE "set $TRACE;
-for HOST in ${NODES_TO_USE//,/ } ; do 
+    do_nodesv $NODES_TO_USE "set $TRACE;
+for HOST in ${HOSTS//,/ } ; do
     TESTFILE=$TESTDIR/\\\$HOST/$FILE;
     tmp=\\\$(stat -c \\\"%X %Y\\\" \\\$TESTFILE);
     if [ x\\\"\\\$tmp\\\" != x\\\"$times\\\" ] ; then
@@ -171,7 +177,7 @@ check_dir_contents () {
 
     echo "Checking dir contents ... (should exist files : f$num_files ... f$NUM_FILES) ... "
     do_nodes $NODES_TO_USE "set $TRACE;
-for HOST in ${NODES_TO_USE//,/ } ; do 
+for HOST in ${HOSTS//,/ } ; do
     DIR=$TESTDIR/\\\$HOST;
     for i in \\\$(seq $NUM_FILES -1 $num_files) ; do
         if ! [ -f \\\$DIR/f\\\$i ] ; then
@@ -216,8 +222,8 @@ cleanup_prepare     || error_exit "cleanup failed"
 echo "Part 1. create file(s) (mknod (2)), write data, check data, check file attributes."
 do_mknod              || error_exit "mknod failed"
 echo "Writing data to file(s) ... store md5sum ... "
-sums="$(do_write)"    || error_exit "write data failed"
-do_check_data "$sums" || error_exit "md5sum verification failed"
+do_write              || error_exit "write data failed"
+do_check_data         || error_exit "md5sum verification failed"
 get_stat              || { error_noexit "attributes check failed" ; STATUS=1; }
 
 # file(s) attributes modification
@@ -245,17 +251,18 @@ check_dir_contents $(($NUM_FILES / 2 + 1)) ||
 # "write_disjoint" test
 echo "Part 5. write_disjoint test: see lustre/tests/mpi/write_disjoint.c for details"
 if [ -f "$WRITE_DISJOINT" ]; then
-    set $TRACE
-    MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
-    generate_machine_file $NODES_TO_USE $MACHINEFILE
-    mpi_run -np $(get_node_count ${NODES_TO_USE//,/ }) -machinefile $MACHINEFILE \
-    $WRITE_DISJOINT -f $WRITE_DISJOINT_FILE -n $NUMLOOPS || STATUS=1
+       set $TRACE
+       MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
+       generate_machine_file $NODES_TO_USE $MACHINEFILE
+       mpi_run ${MACHINEFILE_OPTION} $MACHINEFILE \
+               -np $(get_node_count ${NODES_TO_USE//,/ }) $WRITE_DISJOINT \
+               -f $WRITE_DISJOINT_FILE -n $NUMLOOPS || STATUS=1
 else
     skip_env "$0 : write_disjoint not found "
 fi
 
-equals_msg `basename $0`: test complete, cleaning up
+complete $SECONDS
 rm -rf $TESTDIR
 rm -f $MACHINEFILE
 check_and_cleanup_lustre
-exit $STATUS
+exit_status