X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fmetadata-updates.sh;h=2212a177412bd79ad8bad00f0f4a8b1fac44fd62;hp=68f80775faf626006e23e06d02558d410efffbb9;hb=326341889117faa5e7cbb05de66d759200405525;hpb=044a13ae4b617344a266c5f25f494994465363da;ds=sidebyside diff --git a/lustre/tests/metadata-updates.sh b/lustre/tests/metadata-updates.sh index 68f8077..2212a17 100755 --- a/lustre/tests/metadata-updates.sh +++ b/lustre/tests/metadata-updates.sh @@ -10,8 +10,9 @@ LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} . $LUSTRE/tests/test-framework.sh init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +init_logging -TRACE="+x" +TRACE=${TRACE:-"+x"} TESTDIR=${TESTDIR:-$DIR/d0.$(basename $0 .sh)} @@ -29,14 +30,14 @@ NEW_MTIME="2005-05-05 GMT" test_UID=$(id -u) test_GID=$(id -g) +SUMFILE=$TESTDIR/mdsum + NUM_FILES=1000 WRITE_DISJOINT=${WRITE_DISJOINT:-$(which write_disjoint 2> /dev/null)} || true WRITE_DISJOINT_FILE=$TESTDIR/f0.write_disjoint_file NUMLOOPS=1000 -SUM=$(pwd)/sum - log "===== $0 ====== " check_and_setup_lustre @@ -47,53 +48,36 @@ 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 +mkdir -p \\\$DIR" || return ${PIPESTATUS[0]} + return 0; } do_mknod () { echo "Creating file(s) by mknod (2) ... " - do_nodes $NODES_TO_USE "set $TRACE -TESTFILE=$TESTDIR/\\\$(hostname)/$FILE -mcreate \\\$TESTFILE" || return ${PIPESTATUS[0]} - + do_nodes $NODES_TO_USE "set $TRACE; +TESTFILE=$TESTDIR/\\\$(hostname)/$FILE; +mcreate \\\$TESTFILE; " || return ${PIPESTATUS[0]} return 0 } do_write () { - echo "Writing data to file(s) ... store md5sum ... " - do_nodes $NODES_TO_USE "set $TRACE; TESTFILE=$TESTDIR/\\\$(hostname)/$FILE; -sum=${SUM}_\\\$(hostname); -dd if=/dev/zero of=\\\$TESTFILE bs=$FILE_SIZE count=1 2>/dev/null; -md5sum \\\$TESTFILE > \\\$sum " - if [ ${PIPESTATUS[0]} -ne 0 ] ; then - echo "ERROR: on file creation" - return 1 - fi - +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 >> $SUMFILE; " || return ${PIPESTATUS[0]} return 0 } do_check_data () { - local HOST - echo "Checking file(s) data ... " - - for HOST in ${NODES_TO_USE//,/ } ; do - local sum=${SUM}_$HOST - do_nodes $NODES_TO_USE "md5sum --check $sum" - if [ ${PIPESTATUS[0]} -ne 0 ] ; then - echo "ERROR: wrong data." - [ -f $sum ] && { cat $sum ; rm -f $sum; } - return 1 - fi - [ -f $sum ] && { cat $sum; rm -f $sum; } - done + echo "Checking file(s) data ... md5sum : " + cat $SUMFILE + do_nodesv $NODES_TO_USE "md5sum --check $SUMFILE" || \ + return ${PIPESTATUS[0]} return 0 } @@ -102,10 +86,9 @@ 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 } @@ -115,7 +98,7 @@ get_stat () { echo "Checking file(s) attributes ... " - do_nodes $NODES_TO_USE "set $TRACE; + do_nodesv $NODES_TO_USE "set $TRACE; for HOST in ${NODES_TO_USE//,/ } ; do TESTFILE=$TESTDIR/\\\$HOST/$FILE; tmp=\\\$(stat -c \\\"%u %g %s 0%a\\\" \\\$TESTFILE); @@ -124,12 +107,8 @@ for HOST in ${NODES_TO_USE//,/ } ; do echo \\\"Wrong file attributes\\\"; exit 56; fi; -done " - if [ ${PIPESTATUS[0]} -ne 0 ] ; then - return 1 - fi - - return 0 +done " || return ${PIPESTATUS[0]} + return 0 } do_chmod () { @@ -140,7 +119,6 @@ TESTFILE=$TESTDIR/\\\$(hostname)/$FILE; chmod $NEW_MODE \\\$TESTFILE" || return ${PIPESTATUS[0]} CURRENT_MODE=$NEW_MODE - return 0 } @@ -151,7 +129,6 @@ do_change_timestamps () { TESTFILE=$TESTDIR/\\\$(hostname)/$FILE; touch -c --date=\\\"$NEW_ATIME\\\" -a \\\$TESTFILE; touch -c --date=\\\"$NEW_MTIME\\\" -m \\\$TESTFILE " || return ${PIPESTATUS[0]} - return 0 } @@ -164,7 +141,7 @@ do_check_timestamps () { echo "Checking atime, mtime ... " - do_nodes $NODES_TO_USE "set $TRACE; + do_nodesv $NODES_TO_USE "set $TRACE; for HOST in ${NODES_TO_USE//,/ } ; do TESTFILE=$TESTDIR/\\\$HOST/$FILE; tmp=\\\$(stat -c \\\"%X %Y\\\" \\\$TESTFILE); @@ -173,13 +150,8 @@ for HOST in ${NODES_TO_USE//,/ } ; do RC=57; fi; done; -exit \\\$RC" - if [ ${PIPESTATUS[0]} -ne 0 ] ; then - echo "WARNING : Wrong atime and(or) mtime values. Hope this is expected." - return 0 - fi - - return 0 +exit \\\$RC" || return ${PIPESTATUS[0]} + return 0 } do_fill_dir () { @@ -191,8 +163,7 @@ rm -f \\\$TESTFILE; DIR=$TESTDIR/\\\$(hostname); for i in \\\$(seq $NUM_FILES) ; do touch \\\$DIR/f\\\$i; -done " || return ${PIPESTATUS[0]} - +done " || return ${PIPESTATUS[0]} return 0 } @@ -216,11 +187,7 @@ for HOST in ${NODES_TO_USE//,/ } ; do fi; done; done; -exit \\\$RC " - if [ ${PIPESTATUS[0]} -ne 0 ] ; then - return 1 - fi - +exit \\\$RC " || return ${PIPESTATUS[0]} return 0 } @@ -234,8 +201,7 @@ for i in \\\$(seq $num_files) ; do if ! rm -f \\\$DIR/f\\\$i ; then exit 1; fi; -done " || return ${PIPESTATUS[0]} - +done " || return ${PIPESTATUS[0]} return 0 } @@ -245,46 +211,48 @@ chmod 0777 $MOUNT || exit 1 mkdir -p $TESTDIR || exit 1 chmod 0777 $TESTDIR || exit 1 -cleanup_prepare || exit 1 +cleanup_prepare || error_exit "cleanup failed" # create file(s) (mknod (2)), write data, check data, check file attributes echo "Part 1. create file(s) (mknod (2)), write data, check data, check file attributes." -do_mknod || exit ${PIPESTATUS[0]} -do_write || exit ${PIPESTATUS[0]} -do_check_data || exit ${PIPESTATUS[0]} -get_stat || STATUS=1 +do_mknod || error_exit "mknod failed" +echo "Writing data to file(s) ... store md5sum ... " +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 echo "Part 2. file(s) attributes modification." -do_chmod || exit ${PIPESTATUS[0]} -get_stat || STATUS=1 +do_chmod || error_exit "chmod failed" +get_stat || { error_noexit "wrong attributes after chmod"; STATUS=1; } -do_change_timestamps || exit ${PIPESTATUS[0]} -do_check_timestamps || STATUS=1 +do_change_timestamps || error_exit "timestamps change failed" +do_check_timestamps || { error_noexit "wrong timestamps"; STATUS=1; } # truncate file(s) to 0 size, check new file size echo "Part 3. truncate file(s) to 0 size, check new file size." -do_truncate || exit ${PIPESTATUS[0]} -get_stat || STATUS=1 +do_truncate || error_exit"truncate failed" +get_stat || { error_noexit "wrong attributes after truncate"; STATUS=1; } # directory content solidity echo "Part 4. directory content solidity: fill up directory, check dir content, remove some files, check dir content." -do_fill_dir || exit ${PIPESTATUS[0]} -check_dir_contents || STATUS=1 +do_fill_dir || error_exit "dir creation failed" +check_dir_contents || { error_noexit "dir contents check failed"; STATUS=1; } -do_partial_delete $(($NUM_FILES / 2)) || exit ${PIPESTATUS[0]} -check_dir_contents $(($NUM_FILES / 2 + 1)) || STATUS=1 +do_partial_delete $(($NUM_FILES / 2)) || error_exit "delete failed" +check_dir_contents $(($NUM_FILES / 2 + 1)) || + { error_noexit "dir contents check after delete failed"; STATUS=1; } # "write_disjoint" test -echo "Part 5. write_disjoint test: see lustre/tests/write_disjoint.c for details" +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 \ + mpi_run -np $(get_node_count ${NODES_TO_USE//,/ }) -machinefile $MACHINEFILE \ $WRITE_DISJOINT -f $WRITE_DISJOINT_FILE -n $NUMLOOPS || STATUS=1 else - skip "$0 : write_disjoint not found " + skip_env "$0 : write_disjoint not found " fi equals_msg `basename $0`: test complete, cleaning up