#!/bin/bash
-#
-#set -vx
NFSVERSION=${1:-"3"}
-LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+
+LUSTRE=${LUSTRE:-$(dirname $0)/..}
. $LUSTRE/tests/test-framework.sh
# only call init_test_env if this script is called directly
if [[ -z "$TESTSUITE" || "$TESTSUITE" = "$(basename $0 .sh)" ]]; then
- init_test_env $@
+ init_test_env $@
+else
+ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+
fi
-. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+
init_logging
+racer=$LUSTRE/tests/racer/racer.sh
. $LUSTRE/tests/setup-nfs.sh
+# lustre client used as nfs server (default is mds node)
+LUSTRE_CLIENT_NFSSRV=${LUSTRE_CLIENT_NFSSRV:-$(facet_active_host $SINGLEMDS)}
+NFS_SRVMNTPT=${NFS_SRVMNTPT:-$MOUNT}
+NFS_CLIENTS=${NFS_CLIENTS:-$CLIENTS}
+NFS_CLIENTS=$(exclude_items_from_list $NFS_CLIENTS $LUSTRE_CLIENT_NFSSRV)
+NFS_CLIMNTPT=${NFS_CLIMNTPT:-$MOUNT}
+
+[ -z "$NFS_CLIENTS" ] &&
+ skip_env "need at least two nodes: nfs server and nfs client"
+
+[ "$NFSVERSION" = "4" ] && cl_mnt_opt="${MOUNT_OPTS:+$MOUNT_OPTS,}32bitapi" ||
+ cl_mnt_opt=""
+
check_and_setup_lustre
+$LFS df
+TESTDIR=$NFS_CLIMNTPT/d0.$(basename $0 .sh)
+mkdir -p $TESTDIR
+$LFS setstripe -c -1 $TESTDIR
-# first unmount all the lustre client
+# first unmount all the lustre clients
cleanup_mount $MOUNT
-# mount lustre on mds
-lustre_client=$(facet_active_host $SINGLEMDS)
-[ "$NFSVERSION" = "4" ] && cl_mnt_opt="$MOUNTOPT,32bitapi" || cl_mnt_opt=""
-zconf_mount_clients $lustre_client $MOUNT "$cl_mnt_opt" || \
- error "mount lustre on $lustre_client failed"
+
+cleanup_exit () {
+ trap 0
+ cleanup
+ check_and_cleanup_lustre
+ exit
+}
+
+cleanup () {
+ cleanup_nfs "$NFS_CLIMNTPT" "$LUSTRE_CLIENT_NFSSRV" "$NFS_CLIENTS" ||
+ error_noexit false "failed to cleanup nfs"
+ zconf_umount $LUSTRE_CLIENT_NFSSRV $NFS_SRVMNTPT force ||
+ error_noexit false "failed to umount lustre on"\
+ "$LUSTRE_CLIENT_NFSSRV"
+ # restore lustre mount
+ restore_mount $MOUNT ||
+ error_noexit false "failed to mount lustre"
+}
+
+trap cleanup_exit EXIT SIGHUP SIGINT
+
+zconf_mount $LUSTRE_CLIENT_NFSSRV $NFS_SRVMNTPT "$cl_mnt_opt" ||
+ error "mount lustre on $LUSTRE_CLIENT_NFSSRV failed"
# setup the nfs
-if ! setup_nfs "$NFSVERSION" "$MOUNT" "$lustre_client" "$CLIENTS"; then
- error_noexit false "setup nfs failed!"
- cleanup_nfs "$MOUNT" "$lustre_client" "$CLIENTS" || \
- error_noexit false "failed to cleanup nfs"
- if ! zconf_umount_clients $lustre_client $MOUNT force; then
- error_noexit false "failed to umount lustre on $lustre_client"
- elif ! zconf_mount_clients $CLIENTS $MOUNT; then
- error_noexit false "failed to mount lustre"
- fi
- check_and_cleanup_lustre
- exit
-fi
+setup_nfs "$NFSVERSION" "$NFS_SRVMNTPT" "$LUSTRE_CLIENT_NFSSRV" \
+ "$NFS_CLIENTS" "$NFS_CLIMNTPT" ||
+ error false "setup nfs failed!"
NFSCLIENT=true
FAIL_ON_ERROR=false
# common setup
-MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
-clients=${CLIENTS:-$HOSTNAME}
-generate_machine_file $clients $MACHINEFILE || \
- error "Failed to generate machine file"
+clients=${NFS_CLIENTS:-$HOSTNAME}
+generate_machine_file $clients $MACHINEFILE ||
+ error "Failed to generate machine file"
num_clients=$(get_node_count ${clients//,/ })
# compilbench
[ "$SLOW" = "no" ] && cnt_NRUN=2
# IOR
-[ "$SLOW" = "no" ] && ior_DURATION=30
+ior_DURATION=${ior_DURATION:-30}
# source the common file after all parameters are set to take affect
. $LUSTRE/tests/functions.sh
$GSS_KRB5 && refresh_krb5_tgt $MPI_USER_UID $MPI_USER_GID $MPI_RUNAS
test_compilebench() {
- run_compilebench
+ run_compilebench $TESTDIR
}
run_test compilebench "compilebench"
test_metabench() {
- run_metabench
+ run_metabench $TESTDIR $NFS_CLIMNTPT
}
run_test metabench "metabench"
test_connectathon() {
- run_connectathon
+ run_connectathon $TESTDIR
}
run_test connectathon "connectathon"
test_iorssf() {
- run_ior "ssf"
+ run_ior "ssf" $TESTDIR $NFS_SRVMNTPT
}
run_test iorssf "iorssf"
test_iorfpp() {
- run_ior "fpp"
+ run_ior "fpp" $TESTDIR $NFS_SRVMNTPT
}
run_test iorfpp "iorfpp"
-# cleanup nfs
-cleanup_nfs "$MOUNT" "$lustre_client" "$CLIENTS" || \
- error_noexit false "cleanup_nfs failed"
-if ! zconf_umount_clients $lustre_client $MOUNT force; then
- error_noexit false "failed to umount lustre on $lustre_client"
-elif ! zconf_mount_clients $CLIENTS $MOUNT; then
- error_noexit false "failed to mount lustre after nfs test"
-fi
+test_racer_on_nfs() {
+ local racer_params="MDSCOUNT=$MDSCOUNT OSTCOUNT=$OSTCOUNT LFS=$LFS"
+
+ do_nodes $CLIENTS "$racer_params $racer $TESTDIR"
+}
+run_test racer_on_nfs "racer on NFS client"
-complete $(basename $0) $SECONDS
-check_and_cleanup_lustre
+complete $SECONDS
exit_status