Whamcloud - gitweb
LU-6900 tests: parallel-scale-nfs improvement
[fs/lustre-release.git] / lustre / tests / parallel-scale-nfs.sh
index 4f698c3..4188c3b 100755 (executable)
@@ -17,35 +17,55 @@ racer=$LUSTRE/tests/racer/racer.sh
 
 check_and_setup_lustre
 
-# 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)
+# 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=""
-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}
+clients=${NFS_CLIENTS:-$HOSTNAME}
 generate_machine_file $clients $MACHINEFILE || \
     error "Failed to generate machine file"
 num_clients=$(get_node_count ${clients//,/ })
@@ -75,27 +95,27 @@ 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 $NFS_CLIMNTPT
 }
 run_test compilebench "compilebench"
 
 test_metabench() {
-    run_metabench
+       run_metabench $NFS_CLIMNTPT
 }
 run_test metabench "metabench"
 
 test_connectathon() {
-    run_connectathon
+       run_connectathon $NFS_CLIMNTPT
 }
 run_test connectathon "connectathon"
 
 test_iorssf() {
-    run_ior "ssf"
+       run_ior "ssf" $NFS_CLIMNTPT $NFS_SRVMNTPT
 }
 run_test iorssf "iorssf"
 
 test_iorfpp() {
-    run_ior "fpp"
+       run_ior "fpp" $NFS_CLIMNTPT $NFS_SRVMNTPT
 }
 run_test iorfpp "iorfpp"
 
@@ -104,15 +124,5 @@ test_racer_on_nfs() {
 }
 run_test racer_on_nfs "racer on NFS client"
 
-# 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
-
 complete $SECONDS
-check_and_cleanup_lustre
 exit_status