Whamcloud - gitweb
LU-9872 tests: modify check space requirements for NFS test
[fs/lustre-release.git] / lustre / tests / parallel-scale-nfs.sh
index 013670d..74ae30b 100755 (executable)
@@ -7,45 +7,72 @@ LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
 . $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 $@
 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" && exit 0
+
+[ "$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
@@ -73,39 +100,34 @@ MPI_RUNAS=${MPI_RUNAS:-"runas -u $MPI_USER_UID -g $MPI_USER_GID"}
 $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() {
+       $racer $CLIENTS
+}
+run_test racer_on_nfs "racer on NFS client"
 
-complete $(basename $0) $SECONDS
-check_and_cleanup_lustre
+complete $SECONDS
 exit_status