MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
# Do not use name [df][0-9]* to avoid cleanup by rm, bug 18045
-TESTDIR=$MOUNT/mdsrate
+BASEDIR=$MOUNT/mdsrate
# Requirements
NUM_DIRS=${NUM_DIRS:-10}
log "===== $0 ====== "
check_and_setup_lustre
-mkdir -p $TESTDIR
-chmod 0777 $TESTDIR
-IFree=$(inodes_available)
+mkdir -p $BASEDIR
+chmod 0777 $BASEDIR
+$LFS setstripe $BASEDIR -c 1
+get_stripe $BASEDIR
+
+IFree=$(($(mdsrate_inodes_available) - NUM_DIRS))
if [ $IFree -lt $((NUM_FILES * NUM_DIRS)) ]; then
NUM_FILES=$((IFree / NUM_DIRS))
fi
generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
-$LFS setstripe $TESTDIR -c 1
-get_stripe $TESTDIR
-
-DIRfmt="${TESTDIR}/t6-%d"
+DIRfmt="${BASEDIR}/lookup-%d"
if [ -n "$NOCREATE" ]; then
echo "NOCREATE=$NOCREATE => no file creation."
else
# FIXME: does it make sense to add the possibility to unlink dirfmt to mdsrate?
for i in $(seq 0 $NUM_DIRS); do
- mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR/t6-$i 'f%%d' --ignore
+ mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $BASEDIR/lookup-$i 'f%%d' --ignore
done
log "===== $0 Test preparation: creating ${NUM_DIRS} dirs with ${NUM_FILES} files."
--ndirs ${NUM_DIRS} --dirfmt '${DIRfmt}'
--nfiles ${NUM_FILES} --filefmt 'f%%d'"
- echo "+" ${COMMAND}
- # For files creation we can use -np equal to NUM_DIRS
- # This is just a test preparation, does not matter how many threads we use for files creation;
- # we just should be aware that NUM_DIRS is less than or equal to the number of threads np
- mpi_run -np ${NUM_DIRS} -machinefile ${MACHINEFILE} ${COMMAND} 2>&1
+ echo "+" ${COMMAND}
+ # For files creation we can use -np equal to NUM_DIRS
+ # This is just a test preparation, does not matter how many threads we
+ # use for files creation; we just should be aware that NUM_DIRS is less
+ # than or equal to the number of threads np
+ mpi_run -np ${NUM_DIRS} ${MACHINEFILE_OPTION} ${MACHINEFILE} \
+ ${COMMAND} 2>&1
# No lookup if error occurs on file creation, abort.
[ ${PIPESTATUS[0]} != 0 ] && error "mdsrate file creation failed, aborting"
if [ -n "$NOSINGLE" ]; then
echo "NO Test for lookups on a single client."
else
- log "===== $0 ### 1 NODE LOOKUPS ###"
- echo "+" ${COMMAND}
- mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
+ log "===== $0 ### 1 NODE LOOKUPS ###"
+ echo "+" ${COMMAND}
+ mpi_run -np 1 ${MACHINEFILE_OPTION} ${MACHINEFILE} ${COMMAND} |
+ tee ${LOG}
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
if [ -n "$NOMULTI" ]; then
echo "NO test for lookups on multiple nodes."
else
- log "===== $0 ### ${NUM_CLIENTS} NODES LOOKUPS ###"
- echo "+" ${COMMAND}
- mpi_run -np ${NUM_CLIENTS} -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
+ log "===== $0 ### ${NUM_CLIENTS} NODES LOOKUPS ###"
+ echo "+" ${COMMAND}
+ mpi_run -np ${NUM_CLIENTS} ${MACHINEFILE_OPTION} ${MACHINEFILE} \
+ ${COMMAND} | tee ${LOG}
if [ ${PIPESTATUS[0]} != 0 ]; then
[ -f $LOG ] && sed -e "s/^/log: /" $LOG
fi
fi
-equals_msg `basename $0`: test complete, cleaning up
+complete $SECONDS
# FIXME: does it make sense to add the possibility to unlink dirfmt to mdsrate?
for i in $(seq 0 $NUM_DIRS); do
- mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR/t6-$i 'f%%d' --ignore
- rmdir $TESTDIR/t6-$i
+ mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES \
+ $BASEDIR/lookup-$i 'f%%d' --ignore
done
-rmdir $TESTDIR || true
+rmdir $BASEDIR || true
rm -f $MACHINEFILE
check_and_cleanup_lustre
#rm -f $LOG