. $LUSTRE/tests/test-framework.sh
init_test_env $@
. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+init_logging
TRACE=${TRACE:-"+x"}
[ -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
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
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;
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
}
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
# 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 () {
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
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
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
# "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