X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fmetadata-updates.sh;h=eab2800059b18c4d21c2a39354e40eaff0e37551;hb=94efc0f46185fedbb4c1c9ff8b1d281b8d846d59;hp=432e96def4243376816b67fb4061dec2092535bc;hpb=792e414c69f3888506882abedce5e06bba93f8fd;p=fs%2Flustre-release.git diff --git a/lustre/tests/metadata-updates.sh b/lustre/tests/metadata-updates.sh index 432e96d..eab2800 100755 --- a/lustre/tests/metadata-updates.sh +++ b/lustre/tests/metadata-updates.sh @@ -10,6 +10,7 @@ LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} . $LUSTRE/tests/test-framework.sh init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +init_logging TRACE=${TRACE:-"+x"} @@ -19,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 @@ -26,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 @@ -45,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; @@ -64,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 } @@ -84,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 @@ -92,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 () { @@ -139,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 @@ -170,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 @@ -215,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 @@ -244,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