Blob Blame History Raw
From 26dfa0f7846f14aa86048d504913d3a3be7196d0 Mon Sep 17 00:00:00 2001
From: Bruno Goncalves <bgoncalv@redhat.com>
Date: Jan 17 2019 10:02:50 +0000
Subject: [PATCH 1/6] Add CI tests


Related: rhbz#1653927

---

diff --git a/tests/export-mount-local/PURPOSE b/tests/export-mount-local/PURPOSE
new file mode 100644
index 0000000..556df42
--- /dev/null
+++ b/tests/export-mount-local/PURPOSE
@@ -0,0 +1 @@
+# nothing
diff --git a/tests/export-mount-local/_env b/tests/export-mount-local/_env
new file mode 100644
index 0000000..90b8e90
--- /dev/null
+++ b/tests/export-mount-local/_env
@@ -0,0 +1,7 @@
+export TOPLEVEL_NAMESPACE=nfs-utils
+export PKG_NAMESPACE=nfs-utils
+export RELATIVE_PATH=export-mount-local
+export PACKAGE=nfs-utils
+export PACKAGE_NAME=nfs-utils
+export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
+export TEST=/nfs-utils/export-mount-local
diff --git a/tests/export-mount-local/runtest.sh b/tests/export-mount-local/runtest.sh
new file mode 100755
index 0000000..e72e0f4
--- /dev/null
+++ b/tests/export-mount-local/runtest.sh
@@ -0,0 +1,304 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: test for: export-mount
+#   Author: Jianhong Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2014 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+#===============================================================================
+
+#signal trap
+trap "cleanup" SIGINT SIGTERM SIGHUP SIGQUIT
+cleanup() {
+	rlFileRestore
+	rm -rf $expdir $nfsmp
+}
+
+#global var define
+BZ=exp-mount-local
+expdir=/exportDir-$BZ
+nfsmp=/mnt/nfsmp-$BZ
+subexpdir=/exportDir-$BZ/sub
+tmpnfsmp=/tmp/nfsmp-$BZ
+
+host="$HOSTNAME"
+# in case "localhost.localdomain"
+echo "$host" | grep -q "localhost" && host="localhost"
+
+rlJournalStart
+    rlPhaseStartSetup do-Setup-
+        # Load beakerlib you needed
+        rlImport kernel/base
+        read ipv4 _nil <<<$(getDefaultIp)
+        read ipv6s _nil <<<$(getDefaultIp 6 global)
+        ipv6="[$ipv6s]"
+        envinfo
+        rlFileBackup /etc/exports /etc/sysconfig/nfs /etc/nfs.conf /etc/hosts
+        if [ "$host" = "localhost" ]; then
+            run "echo '$ipv4 $host' >> /etc/hosts"
+            if [ -n "$ipv6s" ]; then
+                run "echo '$ipv6s $host' >> /etc/hosts"
+            fi
+            run "cat /etc/hosts" -
+        fi
+        run 'rm -rf $expdir $nfsmp && mkdir -p $expdir $nfsmp'
+        run 'rm -rf $subexpdir $tmpnfsmp && mkdir -p $subexpdir $tmpnfsmp'
+        run 'echo "/tmp *(ro,sync)" >/etc/exports'
+        run 'service_nfs restart'
+        #avoid issues restarting the server too quickly
+        sleep 10
+        run 'ls_nfsvers'
+    rlPhaseEnd
+
+for V in $(ls_nfsvers); do
+    rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv4
+        run "exportfs -au && exportfs -iv $ipv4:$expdir -o ro,sync,no_root_squash"
+        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
+        run 'umount $nfsmp'
+    rlPhaseEnd
+    if [ -n "$ipv6s" ]; then
+        rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv6-x
+            run 'mount -o vers=$V $ipv6:$expdir $nfsmp' 1-255
+            [ $? = 0 ] && run "umount $nfsmp"
+        rlPhaseEnd
+    fi
+    rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-host
+        run 'mount -o vers=$V $host:$expdir $nfsmp'
+        run 'umount $nfsmp'
+    rlPhaseEnd
+
+    if [ -n "$ipv6s" ]; then
+        rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv6
+            run "exportfs -au && exportfs -iv $ipv6:$expdir -o ro,sync,no_root_squash"
+            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
+            run 'umount $nfsmp'
+        rlPhaseEnd
+        rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv4-x
+            run 'mount -o vers=$V $ipv4:$expdir $nfsmp' 1-255
+            [ $? = 0 ] && run "umount $nfsmp"
+        rlPhaseEnd
+        rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-host
+            if [ -n "$(dig -t aaaa $HOSTNAME +short)" ]; then
+                run 'mount -o vers=$V $host:$expdir $nfsmp'
+                run 'umount $nfsmp'
+            fi
+        rlPhaseEnd
+    fi
+
+    rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-host
+        run "exportfs -au && exportfs -iv $host:$expdir -o ro,sync,no_root_squash"
+        run 'mount -o vers=$V $host:$expdir $nfsmp'
+        run 'umount $nfsmp'
+    rlPhaseEnd
+    rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv4
+        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
+        run 'umount $nfsmp'
+    rlPhaseEnd
+    if [ -n "$ipv6s" ]; then
+        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv6
+            if [ -n "$(dig -t aaaa $HOSTNAME +short)" ]; then
+                run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
+                run 'umount $nfsmp'
+            fi
+        rlPhaseEnd
+    fi
+
+    rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv4
+        run 'echo "$expdir *(ro,sync,no_root_squash)" >/etc/exports'
+        run 'echo "$subexpdir $ipv4(ro,sync,no_root_squash)" >>/etc/exports'
+        run 'service_nfs restart'
+        #avoid issues restarting the server too quickly
+        sleep 10
+        run 'showmount -e' -
+        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
+        run 'mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp'
+        run 'umount $nfsmp $tmpnfsmp'
+    rlPhaseEnd
+    if [ -n "$ipv6s" ]; then
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv6-x
+            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
+            run 'mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp' 1-255 "should not mount sub-directory with different ip"
+            [ $? = 0 ] && run "umount $tmpnfsmp"
+            run "umount $nfsmp"
+        rlPhaseEnd
+    fi
+    rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-host
+        run 'mount -o vers=$V $host:$expdir $nfsmp'
+        run 'mount -o vers=$V $host:$subexpdir $tmpnfsmp'
+        run 'umount $nfsmp $tmpnfsmp'
+    rlPhaseEnd
+
+    if [ -n "$ipv6s" ]; then
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv4-x
+            run 'echo "$expdir *(ro,sync,no_root_squash)" >/etc/exports'
+            run 'echo "$subexpdir $ipv6s(ro,sync,no_root_squash)" >>/etc/exports'
+            run 'service_nfs restart'
+            #avoid issues restarting the server too quickly
+            sleep 10
+            run 'showmount -e' -
+            run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
+            run 'mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp' 1-255 "should not mount sub-directory with different ip"
+            [ $? = 0 ] && run "umount $tmpnfsmp"
+            run "umount $nfsmp"
+        rlPhaseEnd
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv6
+            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
+            run 'mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp'
+            run 'umount $nfsmp $tmpnfsmp'
+        rlPhaseEnd
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-host
+            run 'mount -o vers=$V $host:$expdir $nfsmp'
+            run 'mount -o vers=$V $host:$subexpdir $tmpnfsmp'
+            run 'umount $nfsmp $tmpnfsmp'
+        rlPhaseEnd
+    fi
+
+    rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv4
+        run 'echo "$expdir *(ro,sync,no_root_squash)" >/etc/exports'
+        run 'echo "$subexpdir $host(ro,sync,no_root_squash)" >>/etc/exports'
+        run 'service_nfs restart'
+        #avoid issues restarting the server too quickly
+        sleep 10
+        run 'showmount -e' -
+        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
+        run 'mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp'
+        run 'umount $nfsmp $tmpnfsmp'
+    rlPhaseEnd
+    if [ -n "$ipv6s" ]; then
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv6
+            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
+            run 'mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp'
+            run 'umount $nfsmp $tmpnfsmp'
+        rlPhaseEnd
+    fi
+    rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-host
+        run 'mount -o vers=$V $host:$expdir $nfsmp'
+        run 'mount -o vers=$V $host:$subexpdir $tmpnfsmp'
+        run 'umount $nfsmp $tmpnfsmp'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-nfsV$V-default-option-overridden-by-client-specific-option
+        run "echo '$expdir -ro,sync *(rw,no_root_squash)' >/etc/exports"
+        run "service_nfs restart"
+        run "mount -o vers=$V $host:$expdir $nfsmp"
+        run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "exports option should be overridden by client specific."
+        run "rm -rf $nfsmp/test*"
+        run "umount $nfsmp"
+        run "echo '$expdir -ro,sec=sys,sync *(rw,no_root_squash)' >/etc/exports" 0 "sec=sys may cause it to be failed."
+        run "exportfs -rv"
+        run "mount -o vers=$V $host:$expdir $nfsmp"
+        run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "exports option should be overridden by client specific."
+        run "rm -rf $nfsmp/test*"
+        run "umount $nfsmp"
+    rlPhaseEnd
+done
+
+    rlPhaseStartTest do-Test-exports-options-twice
+        run 'echo "/ *(sync,hide,no_wdelay)" > /etc/exports'
+        run "service_nfs restart"
+        #avoid issues restarting the server too quickly
+        sleep 10
+
+        # Count all options from list printed by exportfs -s(rhel-7) or exportfs -v(rhel-6)
+        allOptions=$( (exportfs -s 2>/dev/null || exportfs -v) | sed 's/^.*(//;s/)$//;s/,/\n/g' | wc -l)
+        # Count unique options from list printed by exportfs -s(rhel-7) or exportfs -v(rhel-6)
+        uniqOptions=$( (exportfs -s 2>/dev/null || exportfs -v) | sed 's/^.*(//;s/)$//;s/,/\n/g' | sort | uniq | wc -l)
+
+        log "{Info} exportfs -s(rhel-7) or exportfs -v(rhel-6) will print option list for each export path"
+        log "{Info} All options printed by exportfs -s(rhel-7) or exportfs -v(rhel-6) (sorted):"
+        run "(exportfs -s 2>/dev/null || exportfs -v) | sed 's/^.*(//;s/)$//;s/,/\n/g' | sort"
+        log "{Info} For exported path '/', there are $allOptions options printed in all options list and $uniqOptions of them are unique"
+        run 'test $uniqOptions -eq $allOptions' 0 "Should not output any options twice, quantity of all options should be equal to quantity of unique options"
+        for opt in sync hide no_wdelay; do
+            run "(exportfs -s 2>/dev/null || exportfs -v) | grep -q $opt" 0 "Option list should contain option $opt specified in /etc/exports"
+        done
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-server-side-using-bind-mount
+        run "dd if=/dev/zero of=workspace.image bs=3M count=500"
+        run "mkfs -t ext3 -F workspace.image"
+        run "mkdir -p /workspace"
+        run "mount -o loop workspace.image /workspace"
+        run "mkdir -p /workspace/vmcore /srv/nfs/vmcore"
+        run "touch /workspace/work_dir /workspace/vmcore/vmcore_dir"
+        run "mount --bind /workspace/vmcore /srv/nfs/vmcore"
+        run "echo '/srv/nfs/vmcore *(rw,no_root_squash)' > /etc/exports"
+        run "echo '/workspace *(rw,no_root_squash)' >> /etc/exports"
+        run "service_nfs restart"
+        #avoid issues restarting the server too quickly
+        sleep 10
+        run "mount $host:/workspace $nfsmp"
+        run "ls $nfsmp/work_dir"
+        run "umount $nfsmp"
+        run "exportfs -au" && run "service_nfs stop"
+        run "umount /srv/nfs/vmcore"
+        run "umount /workspace"
+        run "rm -rf /workspace /srv/nfs/vmcore"
+        run "rm workspace.image"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-mount-nfsv4-show-wrong-port
+        run "echo '$expdir *(rw,no_root_squash)' >>/etc/exports"
+        run "service_nfs restart"
+        #avoid issues restarting the server too quickly
+        sleep 10
+        run "exportfs -v"
+        run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp"
+        run "mount -t nfs4 | grep $nfsmp" -
+        run "mount -t nfs4 | grep $nfsmp | grep -q port=2049" 0 "Should show port=2049"
+        run "umount $nfsmp"
+        run "echo '[nfsd]' > /etc/nfs.conf"
+        run "echo 'port=20050' >> /etc/nfs.conf"
+        run "service_nfs restart"
+        run "sleep 10"
+        run "rpcinfo -p | grep -w nfs | grep 20050"
+        run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp" -
+        if [ $? -eq 0 ]; then
+            run "mount -t nfs4" -
+            run "mount -t nfs4 | grep -q port=20050" 0 "Should show port=20050"
+            run "umount $nfsmp"
+        fi
+        run "mount -t nfs -o vers=4,port=0 localhost:$expdir $nfsmp" -
+        if [ $? -eq 0 ]; then
+            run "mount -t nfs4" -
+            run "mount -t nfs4 | grep -q port=20050" 0 "Should show port=20050"
+            run "umount $nfsmp"
+        fi
+        run "mount -t nfs -o vers=4,port=20050 localhost:$expdir $nfsmp"
+        run "mount -t nfs4 | grep $nfsmp" -
+        run "mount -t nfs4 | grep $nfsmp | grep -q port=20050" 0 "Should show port=20050"
+        run "umount $nfsmp"
+    rlPhaseEnd
+
+    rlPhaseStartCleanup do-Cleanup-
+        run 'rm -rf $expdir $nfsmp $subexpdir $tmpnfsmp'
+        rlFileRestore
+        run "service_nfs restart"
+        #avoid issues restarting the server too quickly
+        sleep 10
+    rlPhaseEnd
+rlJournalEnd
+#rlJournalPrintText
+#enable_avc_check
diff --git a/tests/export-mount-local/subtest.yml b/tests/export-mount-local/subtest.yml
new file mode 100644
index 0000000..1a77920
--- /dev/null
+++ b/tests/export-mount-local/subtest.yml
@@ -0,0 +1 @@
+attr: {ssched: yes}
diff --git a/tests/exportfs/PURPOSE b/tests/exportfs/PURPOSE
new file mode 100644
index 0000000..3299ed8
--- /dev/null
+++ b/tests/exportfs/PURPOSE
@@ -0,0 +1,2 @@
+Description: test for command exportfs
+Author: Stevens Yin <jiyin@redhat.com>
diff --git a/tests/exportfs/_env b/tests/exportfs/_env
new file mode 100644
index 0000000..b57092a
--- /dev/null
+++ b/tests/exportfs/_env
@@ -0,0 +1,7 @@
+export TOPLEVEL_NAMESPACE=nfs-utils
+export PKG_NAMESPACE=nfs-utils
+export RELATIVE_PATH=exportfs
+export PACKAGE=nfs-utils
+export PACKAGE_NAME=nfs-utils
+export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
+export TEST=/nfs-utils/exportfs
diff --git a/tests/exportfs/runtest.sh b/tests/exportfs/runtest.sh
new file mode 100755
index 0000000..8e34a8c
--- /dev/null
+++ b/tests/exportfs/runtest.sh
@@ -0,0 +1,313 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: test for command exportfs
+#   Author: Stevens Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2013 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+#===============================================================================
+
+#setting locale as test check infomration on man pages
+export LC_ALL=en_US.utf8
+
+BZ=exportfs
+nfsmp=/mnt/nfsmp-$BZ
+expdir=/expdir-$BZ
+prog=exportfs
+
+rlJournalStart
+    rlPhaseStartSetup do-Setup
+        # Load beakerlib you needed
+        rlImport kernel/base
+        envinfo
+        read IP4 _nil <<<$(getDefaultIp)
+        read IP6 _nil <<<$(getDefaultIp 6)
+        if echo "$HOSTNAME" | grep -q "localhost"; then
+            hostnamectl set-hostname exportfs.test
+        fi
+        #clean nfs garbage, avoid affect from pre case
+        { exportfs -ua; service nfs stop &>/dev/null; }
+        rlFileBackup /etc/sysconfig/nfs /etc/exports
+        rlFileBackup --clean /etc/exports.d/
+        run 'rm -f /etc/exports.d/*'
+        run 'mkdir -p $nfsmp $expdir'
+        run 'echo "$expdir *(rw,no_root_squash,fsid=0)" > /etc/exports'
+        service_nfs start
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test"-$prog-with-wrong-option"
+        run 'exportfs -xxxx 2>&1' 1-255  "should exit with an error code"
+        run 'exportfs -xxxx 2>&1 | egrep -i "(usage:|try.*for more info)"' 0  "should output usage to user"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test"-$prog-IpV6"
+        run 'echo "[$IP6]:$expdir"' -
+        run 'exportfs -vi "[$IP6]:$expdir"'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-exportfs-a-and-o-check
+        run 'cp /etc/exports /etc/exports.bak'
+        run 'mkdir ${expdir}2'
+        run 'echo "${expdir}2 *(ro)" >>/etc/exports'
+        run 'exportfs -a' 0 "exportfs -a to export all directories"
+        run 'showmount -e'
+        run 'test $(showmount -e | grep $expdir | wc -l) = 2' 0  "there should be two expdir entries"
+        run 'exportfs -v'
+        run 'exportfs -v | sed -n -e "/\t/! {N; s/[\n\t]/ /g;p}" -e "/\t/p" |
+                grep "${expdir}2" | grep ro | grep -w root_squash' 0  "check the the export options"
+
+        run 'exportfs -i -o rw,no_root_squash *:${expdir}2' 0  "exportfs -i -o override default export options"
+        run 'exportfs -v'
+        run 'exportfs -v | sed -n -e "/\t/! {N; s/[\n\t]/ /g;p}" -e "/\t/p" |
+                grep "${expdir}2" | grep rw | grep -w no_root_squash' 0  "check if the options be override"
+        run 'mv /etc/exports.bak /etc/exports' 0 "Restore /etc/exports"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-reexport-check
+        run 'exportfs -rv' 0 "exportfs -rv to reexport all directories"
+        run 'exportfs -v | grep "${expdir}2"' 1  "${expdir}2 removed from /etc/exports so no entry about it exported"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-exportfs-u-check
+        run 'exportfs -u' 0  "exportfs -u unexport one or more directories"
+        run 'showmount -e | grep "$expdir"' 0  "$expdir unexport"
+        run 'exportfs *:${expdir}2'
+        run 'exportfs' -
+        run "exportfs -v -u *:$expdir" 0 "unexport one directory only"
+        run 'exportfs' -
+        run "exportfs | grep '${expdir}2'" 0 "${expdir}2 should not be unexported"
+        run 'exportfs -ua'
+        run 'exportfs -f' 0 "exportfs -f flush everything out of the kernel?s export table"
+        run 'rm -rf ${expdir}2'
+    rlPhaseEnd
+
+    # test NFS_MAXPATHLEN(1024) boundary value test
+    dname=$(echo {1..88}|sed 's/ /_/g')    #dname with 254 chars
+    fpath=/$dname/$dname/$dname/$dname     #fpath with 1020 chars
+    fpath2=/$dname/$dname/$dname/$dname/abc   #fpath with 1024 chars
+    fpath3=/$dname/$dname/$dname/$dname/abckkkk   #fpath with 1028 chars
+    rlPhaseStartTest do-Test-exportfs-pathlenth-${#fpath}-${#fpath2}-${#fpath3}
+        run "mkdir -p $fpath" 0 "create a long export path(${#fpath})"
+        run "mkdir -p $fpath2" 0 "create a long export path(${#fpath2})"
+        run "mkdir -p $fpath3" 0 "create a long export path(${#fpath3})"
+        run "exportfs -vi $IP4:$fpath &>std.log" 0 "exportfs long path(${#fpath}) should success"
+        run 'cat std.log' -
+        run 'grep "does not support NFS export" std.log' 1
+
+        run "exportfs -vi $IP4:$fpath2 &>std2.log" 0 "exportfs long path(${#fpath2}) should success"
+        run 'cat std2.log' -
+        run 'grep "does not support NFS export" std2.log' 1
+
+        run "exportfs -vi $IP4:$fpath3 &>std3.log" 1 "exportfs long path(${#fpath3}) should fail"
+        run 'cat std3.log' -
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-exportfs-dir-with-white-space
+        run 'mkdir -p "/dir with white spaces"'
+        run 'exportfs -vi $IP4:"/dir with white spaces"'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-exportfs-dir-invalid-arg-not-exist
+        run 'exportfs -ua; exportfs -i *:/not.exist &> stdout.log' 1-255
+        run 'cat stdout.log' -
+        run 'test -n stdout.log' 0 "Path not exist, should output error info to user."
+        run 'cat stdout.log | grep -i usage' 0,1 "should output the usage for invalid argument"
+        run 'exportfs' -
+        run 'test -z "$(exportfs)"' 0,1 "should not exported the invalid path"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-exportfs-dir-without-uuid-and-fsid
+        run 'exportfs -ua; exportfs -i *:/dev/shm &> stdout.log' 1-255
+        run 'cat stdout.log' -
+        run 'test -n stdout.log' 0 "Path no uuid and fsid, should output error info to user"
+        run 'exportfs' -
+        run 'test -z "$(exportfs)"' 0,1 "should not exported the invalid path"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-exportfs-when-/proc/fs/nfsd-not-mount
+        run 'mkdir -p ${expdir}_tmp'
+        run 'service nfs start'
+        run 'pkill rpc.mountd && umount /proc/fs/nfsd'
+        run 'exportfs -iv *:${expdir}_tmp'
+        run 'mount -t nfsd nfsd /proc/fs/nfsd' 0-255 "restore env: mount nfsd"
+        run 'rm -rf ${expdir}_tmp'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-option-nordirplus
+        #nfsv3 export option nordirplus support test
+        run 'service nfs start'
+        run 'exportfs -i -o nordirplus "*:$expdir"'
+        run 'mount -o vers=3 localhost:$expdir $nfsmp'
+        run 'grep $nfsmp /proc/mounts'
+        run 'grep nfs /proc/mounts | grep nordirplus' -
+        run 'man 5 exports | col -b | grep nordirplus'
+        run 'umount $nfsmp'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-extra-export.d-files-base
+        # test files under /etc/exports.d
+        run 'rm -rf /etc/exports.d'
+        run 'exportfs -r 2>&1 | grep "No such file or directory"' 1 "should not output garbage log"
+        run 'mkdir -p /etc/exports.d'
+        run 'echo "$expdir *(rw,no_root_squash)" > /etc/exports.d/test.exports'
+        run 'cp /etc/exports /etc/exports.bak'
+        run 'echo "" > /etc/exports'
+        run 'cat /etc/exports.d/test.exports' -
+        run 'exportfs -ua; exportfs -a' 0 "export all directories"
+        run 'showmount -e | grep $expdir'
+        run 'mount localhost:$expdir $nfsmp'
+        run 'grep $nfsmp /proc/mounts'
+        run 'umount $nfsmp'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-extra-export.d-files-max-filelen
+        name_max=$(getconf NAME_MAX $expdir)
+        min_export_sz=$(expr length ".exports")
+        max_export_len=$(($name_max-$min_export_sz))
+        run 'mkdir ${expdir}.max_length'
+        run 'echo "${expdir}.max_length *(ro)" > /etc/exports.d/$(printf "%0${max_export_len}d").exports'
+        run 'ls -la /etc/exports.d/' -
+        run 'exportfs -rv' 0 "exportfs -rv to reexport all directories"
+        run 'showmount -e | grep "max_length"'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-extra-export.d-files-filename-format
+        run 'mkdir ${expdir}.should_ignored'
+        run 'echo "${expdir}.should_ignored *(rw)" > /etc/exports.d/.ignored.exports'
+        run 'echo "${expdir}.should_ignored *(rw)" > /etc/exports.d/ignored.export'
+        run 'echo "${expdir}.should_ignored *(rw)" > /etc/exports.d/exports'
+        run 'ls -la /etc/exports.d/' -
+        run 'exportfs -rv' 0 "exportfs -rv to reexport all directories"
+        run 'showmount -e | grep "should_ignored"' 1
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-extra-export.d-files-filetype-link
+        run 'ln -s /etc/exports.d/ignored.export /etc/exports.d/linked.exports'
+        run 'ls -la /etc/exports.d/' -
+        run 'exportfs -rv' 0 "exportfs -rv to reexport all directories"
+        run 'showmount -e | grep "should_ignored"' 0 "should consider the link file"
+        run 'test $(showmount -e | grep $expdir | wc -l) = 3' 0 "there should be two expdir entries"
+        run 'rm -rf ${expdir}.*'
+        run 'rm -rf /etc/exports.d'
+        run 'mv /etc/exports.bak /etc/exports' 0 "Restore /etc/exports"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-option-mountpoint
+        run "service_nfs start"
+        run "exportfs -ua"
+        run "mkdir -p ${expdir}_share"
+        run "exportfs -i *:${expdir}_share -o mp"
+        run "exportfs -v" -
+        run "mountpoint ${expdir}_share" 1-255 "It is not mounted yet"
+        # The mount point will still show... but when trying to
+        # mount the directory the client mount should be failed
+        run "showmount -e | grep share" -
+        run "timeout 60 mount localhost:${expdir}_share $nfsmp" 1-123,125-255 "Should be failed without hang"
+        [ $? -eq 0 ] && run "umount $nfsmp"
+        log "{Info} Creating a small fs on loopback device and mount it."
+        run "dd if=/dev/zero of=fs_tmp.img bs=1M count=100" -
+        run "losetup /dev/loop0 fs_tmp.img" -
+        run "mkfs /dev/loop0" -
+        run "mount /dev/loop0 ${expdir}_share"
+        run "mountpoint ${expdir}_share" 0 "It should be mounted now"
+        run "showmount -e | grep share" 0 "Should be listed in output of showmount -e now"
+        run "mount localhost:${expdir}_share $nfsmp" 0 "Should success now"
+        [ $? -eq 0 ] && run "umount $nfsmp"
+        log "{Info} Recovering it."
+        run "service_nfs stop"
+        run "umount ${expdir}_share"
+        run "losetup -d /dev/loop0" -
+        run "rm -f fs_tmp.img" -
+        run "rm -rf ${expdir}_share"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"exportfs -u incorrectly exits with a 1 whenever the exportlist has multiple FQDN exports"
+        run "exportfs -ua"
+        run "exportfs -v" -
+        run "exportfs -o rw,sync localhost:$expdir"
+        run "exportfs -o rw,sync $IP4:$expdir"
+        run "exportfs -v" -
+        run 'test $(exportfs -v | grep $expdir | wc -l) = 2'
+        run "exportfs -u $IP4:$expdir" 0 "should not exit with 1 when the exportlist has multiple FQDN exports"
+        run "exportfs -v" -
+        run 'test $(exportfs -v | grep $expdir | wc -l) = 1'
+        run "exportfs -u localhost:$expdir"
+        run "exportfs -v" -
+        run 'test $(exportfs -v | grep $expdir | wc -l) = 0'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"exportfs -u cannot unexport when the specified path involves a trailing /"
+        run "exportfs -ua"
+        run "exportfs -o rw,sync localhost:$expdir"
+        run "exportfs -u not.exist:$expdir" 1-255 "should be failed and return error code"
+        run "exportfs -v" -
+        run "test $(exportfs | wc -l) -ne 0" 0 "Should not be cleared as previous cmd failed"
+        run "exportfs -u localhost:$expdir/" 0 "Should unexport even if path involves trailing /"
+        run "exportfs -v" -
+        run "test $(exportfs | wc -l) -eq 0" 0 "Should have nothing to export"
+        run "exportfs -ua"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"exportfs -u can exit with status 1 if there are multiple ip exports that cannot be resolved to hostnames"
+        # Should test with un-used ip address
+        run "ping -c 1 192.168.1.100 >/dev/null || ping -c 1 192.168.1.101 >/dev/null" 1
+        [ "$?" = "0" ] && {
+            log "{WARN} Should test with un-used ip address, skip the test."
+            report_result $TEST FAIL
+            exit 0
+        }
+        run "exportfs -ua && exportfs -v" -
+        log "{INFO} Test with ip that cannot be resolved to a hostname."
+        run "exportfs -o rw,sync 192.168.1.100:$expdir"
+        run "exportfs -o rw,sync 192.168.1.101:$expdir"
+        run "exportfs -v" -
+        run 'test $(exportfs -v | grep $expdir | wc -l) = 2'
+        run "exportfs -u 192.168.1.101:$expdir" 0 "Should not exit with 1 if unexports successfully."
+        run "exportfs -v" -
+        run 'test $(exportfs -v | grep $expdir | wc -l) = 1'
+        run "exportfs -u 192.168.1.100:$expdir" 0 "Should not exit with 1 if unexports successfully."
+        run "exportfs -v" -
+        run 'test $(exportfs -v | grep $expdir | wc -l) = 0'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-'exportfs: support "security_label" export option'
+        run "exportfs -ua && exportfs -v" -
+        run "exportfs -o security_label localhost:$expdir"
+        run "exportfs -v" -
+        run "exportfs -v | grep -q security_label"
+        run "exportfs -ua"
+    rlPhaseEnd
+
+    rlPhaseStartCleanup do-Cleanup
+        rlFileRestore
+        if echo "$HOSTNAME" | grep -q "localhost"; then
+            hostnamectl set-hostname $HOSTNAME
+        fi
+        rm -rf $nfsmp $expdir
+        run "service_nfs restart"
+    rlPhaseEnd
+rlJournalEnd
+#rlJournalPrintText
+
diff --git a/tests/mount/PURPOSE b/tests/mount/PURPOSE
new file mode 100644
index 0000000..3c215eb
--- /dev/null
+++ b/tests/mount/PURPOSE
@@ -0,0 +1,2 @@
+Description: Test for command mount.nfs{,4}
+Author: Stevens Yin <jiyin@redhat.com>
diff --git a/tests/mount/_env b/tests/mount/_env
new file mode 100644
index 0000000..d016f7c
--- /dev/null
+++ b/tests/mount/_env
@@ -0,0 +1,7 @@
+export TOPLEVEL_NAMESPACE=nfs-utils
+export PKG_NAMESPACE=nfs-utils
+export RELATIVE_PATH=mount
+export PACKAGE=nfs-utils
+export PACKAGE_NAME=nfs-utils
+export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
+export TEST=/nfs-utils//mount
diff --git a/tests/mount/runtest.sh b/tests/mount/runtest.sh
new file mode 100755
index 0000000..fb2f585
--- /dev/null
+++ b/tests/mount/runtest.sh
@@ -0,0 +1,113 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: Test for command mount.nfs{,4}
+#   Author: Stevens Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2013 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+#===============================================================================
+
+mnt=/nfs-mount
+expdir=/expdir
+expdir_with_more_slash=$expdir///expdir-mount
+prog=mount.nfs
+
+rlJournalStart
+    rlPhaseStartSetup do-Setup
+    # Load beakerlib you needed
+    rlImport kernel/base
+    envinfo
+    read IP4 _nil <<<$(getDefaultIp)
+    rlFileBackup /etc/sysconfig/nfs /etc/exports
+	run "mkdir -p $mnt $expdir $expdir_with_more_slash"
+	run "echo '$expdir *(rw,no_root_squash)' > /etc/exports"
+	run "echo '$expdir_with_more_slash *(rw,no_root_squash)' >> /etc/exports"
+	run 'service_nfs restart'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog-with-wrong-option
+	run "$prog -xxxx" 1-255 "should exit with an error code"
+	run "$prog -xxxx 2>&1 | egrep -i '(usage:|try.*for more info)'" 0 "should output usage to user"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog-without-args
+	run "$prog" 1-255 "should exit with an error code"
+	run "$prog 2>&1 | egrep -i '(usage:|try.*for more info)'" 0 "should output usage to user"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog--h
+	run "$prog -h" -
+	std=$($prog -h 2>&1)
+	run "$prog -h 2>&1 | egrep -i usage:" 0 "should output usage to user"
+	[ $? = 0 ] && {
+		options=$(echo "$std"|grep -o '\[-[a-z]\+\]')
+		[ ${#options} -gt 3 ] && {
+		optionNuma=$((${#options} - 3))
+		optionNumb=$(echo "$std" | sed -n "/\t-$options/p" | wc -l)
+		optionNumc=$(echo "$std" | sed -n "/\t-[a-zA-Z]/p" | wc -l)
+		run "test $optionNuma = $optionNumb"
+		run "test $optionNuma = $optionNumc"
+		run 'echo "$std" | sed -n "/\t-$options/p" | grep "		"' 1
+		}
+	}
+    rlPhaseEnd
+
+if rpcinfo -p | awk '$2=="2"' | grep -q -w nfs; then
+    rlPhaseStartTest do-Test-$prog--o-vers=2
+	run "$prog localhost:$expdir $mnt -o vers=2"
+	run "umount -vvv $mnt &> >(tee verbose.log)"
+	run 'test $(wc -l <verbose.log) -gt 0'
+    rlPhaseEnd
+fi
+
+    rlPhaseStartTest do-Test-$prog-o-vers=3
+	run "$prog localhost:$expdir $mnt -o vers=3"
+	run "umount -vvv $mnt &> >(tee verbose.log)"
+	run 'test $(wc -l <verbose.log) -gt 0'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog-default-option
+	run "$prog localhost:$expdir $mnt"
+	run "umount -vvv $mnt &> >(tee verbose.log)"
+	run 'test $(wc -l <verbose.log) -gt 0'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog-with-more-slash-after-:
+	run "$prog localhost://$expdir $mnt"
+	run "umount -vvv $mnt"
+    rlPhaseEnd
+    rlPhaseStartTest do-Test-$prog-with-more-slash-in-export-path
+	run "$prog localhost:$expdir_with_more_slash $mnt"
+	run "umount -vvv $mnt"
+    rlPhaseEnd
+
+    rlPhaseStartCleanup do-Cleanup
+    rlFileRestore
+	run "service_nfs restart"
+	rm -rf $mnt $expdir $expdir_with_more_slash
+    rlPhaseEnd
+rlJournalEnd
+#rlJournalPrintText
+
diff --git a/tests/nfs-mount-options-all/PURPOSE b/tests/nfs-mount-options-all/PURPOSE
new file mode 100644
index 0000000..191d93c
--- /dev/null
+++ b/tests/nfs-mount-options-all/PURPOSE
@@ -0,0 +1,3 @@
+Description:
+	Test nfs general mount options supported by all nfs versions.
+	Especially test it within specific scenarioes.
diff --git a/tests/nfs-mount-options-all/_env b/tests/nfs-mount-options-all/_env
new file mode 100644
index 0000000..bfd8320
--- /dev/null
+++ b/tests/nfs-mount-options-all/_env
@@ -0,0 +1,7 @@
+export TOPLEVEL_NAMESPACE=nfs-utils
+export PKG_NAMESPACE=nfs-utils
+export RELATIVE_PATH=nfs-mount-options-all
+export PACKAGE=nfs-utils
+export PACKAGE_NAME=nfs-utils
+export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
+export TEST=/nfs-utils/nfs-mount-options-all
diff --git a/tests/nfs-mount-options-all/runtest.sh b/tests/nfs-mount-options-all/runtest.sh
new file mode 100644
index 0000000..3ac4857
--- /dev/null
+++ b/tests/nfs-mount-options-all/runtest.sh
@@ -0,0 +1,347 @@
+#!/bin/bash
+# set -x # uncomment for debugging
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: Test for nfs mount options
+#   Author: Bill Peck <bpeck@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2006 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+#===============================================================================
+
+TESTNAME=${TEST/*\//}
+expdir=/exportdir/home
+nfsmp=/mnt/$TESTNAME
+
+ORIGINAL_HOSTNAME=$HOSTNAME
+
+rlJournalStart
+    rlPhaseStartSetup do-$role-Setup-
+    # Load beakerlib you needed
+    rlImport kernel/base
+    envinfo
+	rlFileBackup /etc/sysconfig/nfs /etc/exports
+	if echo "$HOSTNAME" | grep -q "localhost"; then
+		# In case "localhost.localdomain"
+		hostnamectl set-hostname nfs-mount-options-all.test
+		HOSTNAME=nfs-mount-options-all.test
+	fi
+	run 'rm -rf $expdir $nfsmp && mkdir -p $expdir $nfsmp'
+	run 'chmod 777 $expdir'
+	run 'echo "$expdir  *(rw,sync,no_root_squash)" >/etc/exports'
+	run 'service_nfs restart'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-$role-Test-fg_bg_retry_devil
+	read IP4 _nil <<<$(getDefaultIp)
+	run 'iptables -F' -
+	MNT_OPTS="vers=3,soft,fg,retry=1"
+	log "{Info} Retry 1 minute (60s) NFS mount in *foreground* before giving up."
+	run 'iptables -A INPUT -s $IP4 -j DROP' -
+	run 'iptables -L' -
+	run 'sleep 10'
+	start_time=$(date +%s)
+	run "mount ${IP4}:$expdir $nfsmp -o ${MNT_OPTS}" 1-255
+	retry_time=$((`date +%s` - start_time))
+	log "{Info} Actually the nfs.mount hang $retry_time seconds."
+	run 'ps aux | grep -v grep | grep ${MNT_OPTS}' 1
+	run 'iptables -F' -
+	run 'ip6tables -F' -
+	run 'mountpoint $nfsmp && umount $nfsmp' 1
+
+	MNT_OPTS="vers=3,soft,bg,retry=1"
+	log "{Info} Retry 1 minute (60s) NFS mount in *background* before giving up."
+	run 'iptables -A INPUT -s $IP4 -j DROP' -
+	run 'iptables -L' -
+	run 'sleep 10'
+	# When background exit and fork an childprocess, still, returns 0
+	run "mount ${IP4}:$expdir $nfsmp -o ${MNT_OPTS}" 0  "should return ok"
+	if [ $? -eq 0 ]; then
+		# bg ground, the mount fork an child process
+		run 'ps aux | grep -v grep | grep ${MNT_OPTS}' 0  "works in bg.. show background process"
+		[ $? = 0 ] && {
+			log "{Info} We are sleeping a little longer than 60 seconds (retry=1)."
+			run "sleep $((retry_time + 10))" 0 "Actually a little more than $retry_time seconds."
+			# demo mounting process should exit after 60s as retry=1 (minute)
+			run 'ps aux | grep -v grep | grep ${MNT_OPTS}' 1  "retry=1 for 60s should works file after sleep 70s"
+		}
+	fi
+	run 'iptables -F' -
+	# should not mount successfully as it expired
+	run 'mountpoint $nfsmp && umount $nfsmp' 1
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-retry-option-should-not-be-ignored
+	# test retry of the default value (2 minutes) for foreground - NFS(5)
+	run "service_nfs stop"
+	run "mount ${HOSTNAME}:$expdir $nfsmp &"
+	run "sleep 100 ; service_nfs start ; sleep 10"
+	run "nfsstat -m | grep $nfsmp" 0
+	[ $? = 0 ] && run "umount $nfsmp"
+
+	# test retry of 10 minutes for foreground
+	MNT_OPTS="retry=10"
+	log "\n{Info} ${MNT_OPTS}"
+	run "service_nfs stop"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS} &"
+	run "sleep 10 ; service_nfs start ; sleep 10"
+	run "nfsstat -m | grep $nfsmp" 0
+	[ $? = 0 ] && run "umount $nfsmp"
+
+	# test retry of 100 minutes for background
+	MNT_OPTS="bg,retry=100"
+	log "\n{Info} ${MNT_OPTS}"
+	run "service_nfs stop"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run "sleep 10 ; service_nfs start ; sleep 10"
+	run "nfsstat -m | grep $nfsmp"
+	[ $? = 0 ] && run "umount $nfsmp"
+
+	# test retry of the default value (10000 minutes) for background - NFS(5)
+	MNT_OPTS="bg"
+	log "\n{Info} ${MNT_OPTS}"
+	run "service_nfs stop"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run "sleep 10 ; service_nfs start ; sleep 10"
+	run "nfsstat -m | grep $nfsmp"
+	[ $? = 0 ] && run "umount $nfsmp"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-$role-Test-resvport_noresvport_test
+	run 'service_nfs restart'
+	MNT_OPTS="resvport"
+	log "{Info} ${MNT_OPTS}"
+	run 'mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}' 0
+	run 'mountpoint $nfsmp && umount $nfsmp'
+
+	MNT_OPTS="noresvport"
+	log "{Info} ${MNT_OPTS}"
+	run 'mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}' 1-255  "should got permission denied"
+	run 'mountpoint $nfsmp && umount $nfsmp' 1
+    rlPhaseEnd
+
+    rlPhaseStartTest do-$role-Test-cache_nocache_test
+	MNT_OPTS="noac"
+	log "\n{Info} ${MNT_OPTS}"
+	run 'chmod 777 $expdir'
+	run 'touch $expdir/foo.txt && chmod 777 $expdir/foo.txt'
+	run 'service_nfs restart'
+	run 'mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}' 0
+	[ $? -eq 0 ] && {
+		ATTR_TMP1=$(ls -al $nfsmp | grep foo.txt | awk '{ print $1 }')
+		chmod 666 $expdir/foo.txt
+		sleep 1
+		ATTR_TMP2=$(ls -al $nfsmp | grep foo.txt | awk '{ print $1 }')
+		log "{Info} $ATTR_TMP1 ~ $ATTR_TMP2"
+		run "[ x"$ATTR_TMP1" != x"$ATTR_TMP2" ]" 0  "with noac, attribution should not cached"
+	}
+	run 'mountpoint $nfsmp && umount $nfsmp'
+	run 'rm -f $expdir/foo.txt'
+
+	MNT_OPTS="ac,acregmin=20,acregmax=40,acdirmin=30,acdirmax=60"
+	log "\n{Info} ${MNT_OPTS}"
+	run 'touch $expdir/foo.txt && chmod 777 $expdir/foo.txt'
+	run 'mkdir $expdir/foo.dir && chmod 777 $expdir/foo.dir'
+	run 'mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}'
+	[ $? -eq 0 ] && {
+		ATTR_TMPREG1=$(ls -al $nfsmp | grep foo.txt | awk '{ print $1 }')
+		ATTR_TMPDIR1=$(ls -al $nfsmp | grep foo.dir | awk '{ print $1 }')
+		chmod 666 $expdir/foo.txt
+		chmod 555 $expdir/foo.dir
+		sleep 7
+		ATTR_TMPREG2=$(ls -al $nfsmp | grep foo.txt | awk '{ print $1 }')
+		sleep 7   #7+7
+		ATTR_TMPDIR2=$(ls -al $nfsmp | grep foo.dir | awk '{ print $1 }')
+		sleep 30  #7+7+30
+		ATTR_TMPREG3=$(ls -al $nfsmp | grep foo.txt | awk '{ print $1 }')
+		sleep 20  #7+7+30+20
+		ATTR_TMPDIR3=$(ls -al $nfsmp | grep foo.dir | awk '{ print $1 }')
+
+		log "{Info} Regfile Attribution: $ATTR_TMPREG1 ~ $ATTR_TMPREG2 ~ $ATTR_TMPREG3"
+		run '[ x"$ATTR_TMPREG1" == x"$ATTR_TMPREG2" -a x"$ATTR_TMPREG1" != x"$ATTR_TMPREG3" ]'
+
+		log "{Info} Directory Attribution: $ATTR_TMPDIR1 ~ $ATTR_TMPDIR2 ~ $ATTR_TMPDIR3"
+		run '[ x"$ATTR_TMPDIR1" == x"$ATTR_TMPDIR2" -a x"$ATTR_TMPDIR1" != x"$ATTR_TMPDIR3" ]'
+	}
+	run 'mountpoint $nfsmp && umount $nfsmp'
+	run 'rm -f $expdir/foo.txt'
+	run 'rm -rf $expdir/foo.dir'
+
+	MNT_OPTS="ac,actimeo=20"
+	log "\n{Info} ${MNT_OPTS}"
+	run 'mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}'
+	[ $? -eq 0 ] && {
+		run 'grep ${TESTNAME} /proc/mounts | grep "acregmin=20" | grep "acregmax=20" | grep "acdirmin=20" | grep "acdirmax=20"'
+	}
+	run 'mountpoint $nfsmp && umount $nfsmp'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-$role-Test-sharecache_nosharecache_test
+	MNT_OPTS="vers=3,nosharecache"
+	MNT_OPTS="nosharecache,ac,acregmin=30,acregmax=60"
+	log "\n{Info} ${MNT_OPTS}"
+	run 'chmod 777 $expdir'
+	run 'touch $expdir/foo.txt && chmod 777 $expdir/foo.txt'
+	run 'mkdir -p $nfsmp-{1,2}'
+	run 'service_nfs restart'
+
+	run 'mount ${HOSTNAME}:$expdir $nfsmp-1 -o ${MNT_OPTS} &&
+	     mount ${HOSTNAME}:$expdir $nfsmp-2 -o ${MNT_OPTS}'
+	[ $? = 0 ] && {
+		chmod 555  $nfsmp-1/foo.txt
+		sleep 1
+		chmod 444  $nfsmp-2/foo.txt
+
+		ATTR_TMPREG1=$(ls -al $nfsmp-1 | grep foo.txt | awk '{ print $1 }')
+		ATTR_TMPREG2=$(ls -al $nfsmp-2 | grep foo.txt | awk '{ print $1 }')
+		ATTR_TMPREG3=$(ls -al $expdir/ | grep foo.txt | awk '{ print $1 }')
+
+		log "{Info} $ATTR_TMPREG1 ~ $ATTR_TMPREG2 ~ $ATTR_TMPREG3"
+		run '[ x"$ATTR_TMPREG1" == x"$ATTR_TMPREG2" -a x"$ATTR_TMPREG1" == x"$ATTR_TMPREG3" ]'
+	}
+	run 'mountpoint $nfsmp-1 && umount $nfsmp-1'
+	run 'mountpoint $nfsmp-2 && umount $nfsmp-2'
+	run 'rm -f $expdir/foo.txt'
+	run 'rm -rf $nfsmp-{1,2}'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-$role-Test-lookupcache_test
+	MNT_OPTS="ac,acdirmin=30,acdirmax=60,lookupcache=pos"
+	log "\n{Info} ${MNT_OPTS}"
+	run 'chmod 777 $expdir'
+	run 'mkdir -p $expdir/foodir && touch $expdir/foodir/foo-1.txt'
+	run 'service_nfs restart'
+	run 'mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}'
+	[ $? = 0 ] && {
+		run 'ls -l $nfsmp/foodir/ | grep foo-1.txt'
+		run 'rm -f $expdir/foodir/foo-1.txt'
+		run 'sleep 1' -
+		log "{Info} Checking again..."
+		run 'ls -l $nfsmp/foodir/ | grep foo-1.txt' 1
+		run 'umount $nfsmp'
+	}
+	run 'rm -fr $expdir'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-$role-Test-rsize-wsize
+	minSize=1024
+	minFixSize=4096
+	#maxSize=1048576
+	run "cat /proc/fs/nfsd/max_block_size" 0 "The default max block size varies depending on RAM size, with a maximum of 1M."
+	maxSize=$(cat /proc/fs/nfsd/max_block_size)
+	run 'mkdir -p $expdir'
+	run 'echo "$expdir  *(rw,sync,no_root_squash)" > /etc/exports'
+	run 'service_nfs restart'
+	MNT_OPTS="rsize=1024,wsize=1024"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run 'grep $nfsmp /proc/mounts' -
+	run "cat /proc/mounts | grep -q $MNT_OPTS"
+	run 'umount $nfsmp'
+	MNT_OPTS="rsize=8192,wsize=8192"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run 'grep $nfsmp /proc/mounts' -
+	run "cat /proc/mounts | grep -q $MNT_OPTS"
+	run 'umount $nfsmp'
+	MNT_OPTS="rsize=1,wsize=255" # less than min_size($minSize)
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run 'grep $nfsmp /proc/mounts' -
+	run "cat /proc/mounts | grep -q rsize=$minFixSize,wsize=$minFixSize" 0  "Specified values lower than $minSize are replaced with $minFixSize"
+	run 'umount $nfsmp'
+	MNT_OPTS="rsize=1048577,wsize=2048576" # great than max_size($maxSize)
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run 'grep $nfsmp /proc/mounts' -
+	run "cat /proc/mounts | grep -q rsize=$maxSize,wsize=$maxSize" 0  "Specified values more than $maxSize are replaced with $maxSize"
+	run 'umount $nfsmp'
+	MNT_OPTS="rsize=0,wsize=0"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}"
+	run 'grep $nfsmp /proc/mounts' -
+	run "cat /proc/mounts | grep -q rsize=$maxSize,wsize=$maxSize" 0  "Specified values more than $maxSize are replaced with $maxSize"
+	run 'umount $nfsmp'
+	MNT_OPTS="rsize=-1,wsize=-3"
+	run "mount ${HOSTNAME}:$expdir $nfsmp -o ${MNT_OPTS}" 1-255
+    rlPhaseEnd
+
+for V in $(ls_nfsvers); do
+    rlPhaseStartTest do-$role-NFS-mount-options-can-be-lost-when-using-bg-option-vers${V}
+	run 'service_nfs stop'
+	run 'mount -v -t nfs -o rw,bg,hard,nointr,tcp,vers=$V,timeo=600,rsize=32768,wsize=32768,actimeo=0,noac localhost:$expdir $nfsmp'
+	run 'service_nfs start'
+	run 'while ! grep -q $nfsmp /proc/mounts; do sleep 15; done' -
+	run 'grep $nfsmp /proc/mounts'
+	run 'grep $nfsmp /proc/mounts | grep -q "rw,sync"'
+	if [ "$V" = "2" ]; then
+		run 'grep $nfsmp /proc/mounts | grep -q "vers=$V,rsize=8192,wsize=8192"'
+	else
+		run 'grep $nfsmp /proc/mounts | grep -q "vers=$V,rsize=32768,wsize=32768"'
+	fi
+	run 'grep $nfsmp /proc/mounts | grep -q "acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,hard,noac,proto=tcp"'
+	run 'grep $nfsmp /proc/mounts | grep -q "timeo=600,retrans=2,sec=sys"'
+	run "umount $nfsmp"
+    rlPhaseEnd
+done
+
+    rlPhaseStartTest do-$role-Test-"mount-nfs-needs-descriptive-error-when-nfsvers-specified-incorrectly"
+	run "log=`mktemp -q`" 0 "Creating temporary log file"
+	log "{Info} Specify the invalid value."
+	for vers in {"v3","vers","+","*",""}; do
+		run "mount -t nfs -o vers=$vers localhost:$expdir $nfsmp 2>$log" 32 \
+		    "should be failed as expected using invalid value"
+		run "mount -t nfs -o nfsvers=$vers localhost:$expdir $nfsmp 2>>$log" 32 \
+		    "should be failed as expected using invalid value"
+		run "cat $log" -
+		run "egrep -q 'Bad nfs mount parameter|parsing error|invalid value' $log"
+		run ">$log" 0 "clear $log content"
+	done
+	log "{Info} Specify the valid number (maybe not supported)."
+	run "ls_nfsvers" -
+	for vers in {1,2,3,4,5,23}; do
+		if ls_nfsvers | grep -q "^$vers"; then
+			run "mount -t nfs -o vers=$vers localhost:$expdir $nfsmp"
+			run "umount $nfsmp"
+			run "mount -t nfs -o nfsvers=$vers localhost:$expdir $nfsmp"
+			run "umount $nfsmp"
+		else
+			run "mount -t nfs -o vers=$vers localhost:$expdir $nfsmp 2>$log" 32 \
+			    "should be failed as expected using unsupported version"
+			[ $? = 0 ] && run "umount $nfsmp"
+			run "mount -t nfs -o nfsvers=$vers localhost:$expdir $nfsmp 2>>$log" 32 \
+			    "should be failed as expected using unsupported version"
+			[ $? = 0 ] && run "umount $nfsmp"
+			run "cat $log" -
+			run "egrep -q 'not supported|parsing error|invalid value|call failed' $log"
+			run ">$log" 0 "clear $log content"
+		fi
+	done
+	run "rm -f $log" 0 "Remove temporary log file"
+    rlPhaseEnd
+
+    rlPhaseStartCleanup do-$role-Cleanup-
+	run 'mountpoint $nfsmp && umount $nfsmp' 1
+	hostnamectl set-hostname $ORIGINAL_HOSTNAME
+	run 'rm -rf $expdir $nfsmp'
+	rlFileRestore
+	run 'service_nfs restart'
+    rlPhaseEnd
+rlJournalEnd
+#rlJournalPrintText
+
diff --git a/tests/systemd-nfs/PURPOSE b/tests/systemd-nfs/PURPOSE
new file mode 100644
index 0000000..556df42
--- /dev/null
+++ b/tests/systemd-nfs/PURPOSE
@@ -0,0 +1 @@
+# nothing
diff --git a/tests/systemd-nfs/_env b/tests/systemd-nfs/_env
new file mode 100644
index 0000000..d90f45d
--- /dev/null
+++ b/tests/systemd-nfs/_env
@@ -0,0 +1,7 @@
+export TOPLEVEL_NAMESPACE=nfs-utils
+export PKG_NAMESPACE=nfs-utils
+export RELATIVE_PATH=systemd-nfs
+export PACKAGE=nfs-utils
+export PACKAGE_NAME=nfs-utils
+export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
+export TEST=/nfs-utils/systemd-nfs
diff --git a/tests/systemd-nfs/runtest.sh b/tests/systemd-nfs/runtest.sh
new file mode 100755
index 0000000..227ec36
--- /dev/null
+++ b/tests/systemd-nfs/runtest.sh
@@ -0,0 +1,287 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: test for: nfs
+#   Author: Jianhong Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2014 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+#===============================================================================
+
+#signal trap
+trap "cleanup" SIGINT SIGTERM SIGHUP SIGQUIT
+cleanup() {
+	rlFileRestore
+	run 'service_nfsconfig restart'
+	#rm -rf $expdir $nfsmp
+}
+
+#global var define
+serv=nfs
+rpm -q systemd || {
+	echo "{Warn} no systemd installed, skip the test"
+	report_result $TEST PASS
+	exit 0
+}
+
+rlJournalStart
+    rlPhaseStartSetup do-Setup-
+    # Load beakerlib you needed
+    rlImport kernel/base
+    envinfo
+	rlFileBackup /etc/exports /etc/sysconfig/nfs
+	run 'echo "/usr/share *(ro)" >/etc/exports'
+	run 'echo "RPCNFSDARGS=8" >/etc/sysconfig/nfs' 0  "avoid invalid config file"
+	run 'service_nfsconfig restart' 0  "RHEL-7.1 or later need restart nfs-config to reload /etc/sysconfig/nfs"
+	run "useradd testuserqa" -
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-start
+	run "service_$serv start" 0 "Service must start without problem"
+	run "service_$serv status" 0 "Then Status command"
+	run "service_$serv start" 0 "Already started service"
+	run "service_$serv status" 0 "Again status command"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-restart
+	run "service_$serv restart" 0 "Restarting of service"
+	run "service_$serv status" 0 "Status command"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-stop
+	run "service_$serv stop" 0 "Stopping service"
+	run "service_$serv status" 3 "Status of stopped service"
+	run "service_$serv stop" 0 "Stopping service again"
+	run "service_$serv status" 3 "Status of stopped service"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"insufficient-rights"
+	run "service_$serv restart " 0 "Starting service for restarting under nonpriv user"
+	run "su testuserqa -c 'service_$serv stop'" 1,4 "Insufficient rights, stopping service under nonprivileged user must fail"
+	run "su testuserqa -c 'service_$serv start'" 0,1,4 "Insufficient rights, starting service under nonprivileged user must fail or pass as already started"
+	run "su testuserqa -c 'service_$serv status'" 0 "Sufficient rights, service status should be accessible to nonprivileged users"
+	run "service_$serv stop" 0 "Stopping service for starting under nonpriv user"
+	run "su testuserqa -c 'service_$serv start'" 1,4 "Insufficient rights, starting of stopped service under nonprivileged user must fail"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"operations"
+	run "service_$serv start" 0 "Service have to implement start function"
+	run 'sleep 5' 0  "sleep a while avoid the start rate limit"
+	run "service_$serv restart" 0 "Service have to implement restart function"
+	run "service_$serv status" 0 "Service have to implement status function"
+	run 'sleep 5' 0  "sleep a while avoid the start rate limit"
+	run "service_$serv condrestart" 0 "Service have to implement condrestart function"
+	[ $? != 0 ] && run "journalctl -xn" -
+	run 'sleep 5' 0  "sleep a while avoid the start rate limit"
+	run "service_$serv try-restart" 0 "Service have to implement try-restart function"
+	[ $? != 0 ] && run "journalctl -xn" -
+	run "service_$serv reload" 0 "Service have to implement reload function"
+	[ $? != 0 ] && run "journalctl -xn" -
+	run "service_$serv force-reload" 0 "Service have to implement force-reload function"
+	[ $? != 0 ] && run "journalctl -xn" -
+	run "service_$serv noexistop" 2 "Testing proper return code when nonexisting function"
+    rlPhaseEnd
+
+    # Should do nothing if a service is already stopped or not running (according to manpage of systemctl)
+    # http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic.html#INISCRPTACT
+    rlPhaseStartTest do-Test-"operations-stopped"
+	run "service_$serv stop" 0 "Service have to implement stop function"
+	run "service_$serv condrestart" 0 "Service have to implement condrestart function"
+	run "service_$serv try-restart" 0 "Service have to implement try-restart function"
+	run "service_$serv force-reload" 0 "Service have to implement force-reload function"
+	run "service_$serv status" 3 "Above oprations should do nothing if service are not running"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-enable-disable-$serv
+	if systemctl --quiet is-enabled $serv; then
+		run "systemctl disable $serv" 0 "Disable service on boot"
+		run "systemctl is-enabled $serv" 1 "Check whether service is disabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "systemctl enable $serv" 0 "Enable service on boot"
+		run "systemctl is-enabled $serv" 0 "Check whether service is enabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+	else
+		run "systemctl enable $serv" 0 "Enable service on boot"
+		run "systemctl is-enabled $serv" 0 "Check whether service is enabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "systemctl disable $serv" 0 "Disable service on boot"
+		run "systemctl is-enabled $serv" 1 "Check whether service is disabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+	fi
+    rlPhaseEnd
+
+    # ystemctl enable fails for symlinks in /usr/lib/systemd/system
+    # Use a workaround to test enable/disable with nfs-server.service
+    rlPhaseStartTest do-Test-enable-disable-nfs-server
+	if systemctl --quiet is-enabled nfs-server; then
+		run "systemctl disable nfs-server" 0 "Disable nfs-serverice on boot"
+		run "systemctl is-enabled nfs-server" 1 "Check whether nfs-serverice is disabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "systemctl enable nfs-server" 0 "Enable nfs-serverice on boot"
+		run "systemctl is-enabled nfs-server" 0 "Check whether nfs-serverice is enabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+	else
+		run "systemctl enable nfs-server" 0 "Enable nfs-serverice on boot"
+		run "systemctl is-enabled nfs-server" 0 "Check whether nfs-serverice is enabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "systemctl disable nfs-server" 0 "Disable nfs-serverice on boot"
+		run "systemctl is-enabled nfs-server" 1 "Check whether nfs-serverice is disabled"
+		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+	fi
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-nfsv4-only
+	run 'service nfs stop'
+	# MOUNTD_NFS_V2 MOUNTD_NFS_V3 was not supported in RHEL-7.x
+	run 'echo -e "RPCMOUNTDOPTS=\"-N 2 -N 3\"" >>/etc/sysconfig/nfs' 0  "enabling nfsv4 only"
+	# If in RHEL-7.1 or later need restart nfs-config service to flush /etc/sysconfig/nfs to /run/sysconfig/nfs-utils
+	# But since RHEL-7.3, nfs-config change to be ru-run during the dependent service starting
+	run 'service_nfsconfig status &>/dev/null && service_nfsconfig restart' -
+	run 'cat /run/sysconfig/nfs-utils | grep RPCMOUNTDARGS | grep "\""' 0  "quote variable in /run/sysconfig/nfs-utils"
+	run 'sleep 5' 0  "sleep a while avoid service script bug"
+	run 'service_nfs start'
+	run 'rpcinfo -s | grep -w mountd' 1 "if nfsv4 only, no mountd info in rpcinfo"
+	rlFileRestore /etc/sysconfig/nfs
+	run 'service_nfsconfig restart'
+    rlPhaseEnd
+
+    # Since nfs-service no longer starts the daemons in question. They are now split
+    # into their own services (nfs-mountd.service, rpc-statd.service, nfs-idmapd.service).
+    # Then `systemctl status nfs-server.service` cannot accurately reflect the
+    # state of the combination of daemons that are needed for a working NFS server.
+    rlPhaseStartTest do-Test-"nfs-server-is-active-even-processes-terminated"
+	run 'service_nfs restart'
+	run 'pkill rpc.mountd' -
+	run 'killall -9 nfsd' -
+	run 'ps axf | grep -e "rpc.mountd" -e "nfsd"' -
+	run 'service nfs-mountd status' 1-255
+	run 'rpcinfo -t localhost 100005' 1 "pings mountd"
+	log '{Info} nfsserver resource agent has been updated to monitor all its daemons'
+	run 'service_nfs status' 1-255,0
+	run 'service_nfs status 2>&1 | grep "active"' -
+	run 'service_nfs stop'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"should-auto-mount-/proc/fs/nfsd"
+	run 'service_nfs restart'
+	run 'service_nfs stop'
+	run 'umount /proc/fs/nfsd'
+	run 'service_nfs start 2>&1 | grep "mount -t nfsd"' 1 "should auto mount nfsd"
+	run 'mount -t nfsd nfsd /proc/fs/nfsd' -
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"use-rpcbind.service-in-nfs-server.service"
+	run "systemctl reset-failed" 0 "workaround for failure of starting too often"
+	log "{Info} Starting nfs while rpcbind is stopped"
+	run "service rpcbind stop; service rpcbind stop" 0 "stop twice as workaround"
+	run "service rpcbind status" 3 "rpcbind.service should be stopped"
+	run "service nfs restart"
+	run "service nfs status" 0 "should start nfs successfully"
+	run "service rpcbind status" 0 "starting nfs should bring rpcbind up"
+
+	log "{Info} Starting nfs while rpcbind is active"
+	run "service rpcbind start"
+	run "service rpcbind status" 0 "rpcbind should be active"
+	run "service nfs restart"
+	run "service nfs status" 0 "should start nfs successfully"
+	run "service rpcbind status" 0 "starting nfs should keep rpcbind up"
+
+	log "{Info} Stopping nfs while rpcbind is active"
+	run "service rpcbind start"
+	run "service rpcbind status" 0 "rpcbind should be active"
+	run "service nfs start; service nfs status"
+	run "service nfs stop; service nfs status" 3
+	run "service rpcbind status" 0 "stopping nfs should keep rpcbind up"
+
+	log "{Info} Stopping nfs while rpcbind is stopped"
+	run "service nfs start" 0 "firstly start nfs since it can bring rpcbind up"
+	run "service nfs status" 0 "should start nfs successfully"
+	run "service rpcbind stop; service rpcbind stop" 0 "stop twice as workaround"
+	run "service rpcbind status" 3 "rpcbind should be stopped"
+	run "service nfs stop"
+	# If a daemon tries to connect to port 111 systemd will start rpcbind automaticly
+	run "service rpcbind status" 0 "stopping nfs should bring rpcbind up"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"restarting rpbind also restart the the nfs server"
+	run "systemctl reset-failed" 0 "workaround for failure of starting too often"
+	log "{Info} Starting rpcbind while nfs is stopped"
+	run "service nfs stop"
+	run "service nfs status" 3 "nfs should be stopped"
+	run "service rpcbind restart"
+	run "service nfs status" 3 "starting rpcbind should NOT bring nfs up"
+
+	log "{Info} Starting rpcbind while nfs is active"
+	run "service nfs start"
+	run "service nfs status" 0 "nfs should be active"
+	run "service rpcbind restart"
+	run "service nfs status" 0 "starting rpcbind should NOT interfere nfs"
+
+	log "{Info} Stopping rpcbind while nfs is active"
+	run "service nfs start"
+	run "service nfs status" 0 "nfs should be active"
+	run "service rpcbind start; service rpcbind stop"
+	run "service nfs status" 0 "stopping rpcbind should NOT bring nfs down"
+
+	log "{Info} Stopping rpcbind while nfs is stopped"
+	run "service nfs stop"
+	run "service nfs status" 3 "nfs should be stopped"
+	run "service rpcbind start; service rpcbind stop"
+	run "service nfs status" 3 "stopping rpcbind should NOT interfere nfs"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-fix-long-nfsd-startup-delay-in-absence-of-rpcbind
+	run "systemctl stop rpcbind"
+	run "systemctl stop nfs-server"
+	run "systemctl mask rpcbind" 0 "Mask systemd service rpcbind.service"
+	run "timeLimitRun 10 systemctl start nfs-server" 1-255 "Start service nfs-server without rpcbind will be failed due to systemd unit dependency"
+	run "systemctl unmask rpcbind"
+	run "timeLimitRun 10 systemctl stop nfs-server" -
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"nfs-utils need to cause gssproxy reload"
+        run "cp /etc/gssproxy/gssproxy.conf /etc/gssproxy/gssproxy.conf.backup" 0 "backuping"
+        run "echo '[gssproxy]' > /etc/gssproxy/gssproxy.conf"
+        run "echo 'debug = true' >> /etc/gssproxy/gssproxy.conf"
+        run "systemctl restart gssproxy"
+#FIXME when BZ#1535424 is fixed. Should not use /var/log/messages as it is not used on Fedora any more.
+        run "echo '' > /var/log/messages"
+        run "systemctl restart nfs"
+        run "systemctl status nfs"
+        run "systemctl status gssproxy"
+        run "cat /var/log/messages | grep 'gssproxy:'" -
+        run "cat /var/log/messages | grep -q 'gssproxy:.*loaded'" 0 "should re-reading config"
+        run "mv /etc/gssproxy/gssproxy.conf.backup /etc/gssproxy/gssproxy.conf" 0 "recovering"
+        run "systemctl restart gssproxy"
+    rlPhaseEnd
+
+    rlPhaseStartCleanup do-Cleanup-
+	run "userdel -rf testuserqa" -
+	rlFileRestore
+	run 'timeLimitRun 10 service_nfsconfig restart'
+    rlPhaseEnd
+
+rlJournalEnd
+#rlJournalPrintText
+#enable_avc_check
diff --git a/tests/systemd-nfs/subtest.yml b/tests/systemd-nfs/subtest.yml
new file mode 100644
index 0000000..705c8b0
--- /dev/null
+++ b/tests/systemd-nfs/subtest.yml
@@ -0,0 +1,2 @@
+attr: {ssched: yes.dangerous}
+attr: {ssched: yes.dangerous}, setup: [--kernel-options=ipv6.disable=1]
diff --git a/tests/tests.yml b/tests/tests.yml
new file mode 100644
index 0000000..8b5bd0d
--- /dev/null
+++ b/tests/tests.yml
@@ -0,0 +1,20 @@
+---
+# Tests that run in classic context
+- hosts: localhost
+  roles:
+  - role: standard-test-rhts
+    use_beakerlib_libraries: yes
+    tags:
+    - classic
+    tests:
+    - exportfs
+    - export-mount-local
+    - mount
+    - nfs-mount-options-all
+    - systemd-nfs
+    - umount
+    required_packages:
+    - bind-utils        # export-mount-local needs this package
+    - findutils         # beakerlib needs find command
+    - nfs-utils
+    - redhat-lsb-core   # lsb_release is needed by tests
diff --git a/tests/umount/PURPOSE b/tests/umount/PURPOSE
new file mode 100644
index 0000000..9f896d5
--- /dev/null
+++ b/tests/umount/PURPOSE
@@ -0,0 +1,2 @@
+Description: Test for command umount.nfs{,4}
+Author: Stevens Yin <jiyin@redhat.com>
diff --git a/tests/umount/_env b/tests/umount/_env
new file mode 100644
index 0000000..dd7d64f
--- /dev/null
+++ b/tests/umount/_env
@@ -0,0 +1,7 @@
+export TOPLEVEL_NAMESPACE=nfs-utils
+export PKG_NAMESPACE=nfs-utils
+export RELATIVE_PATH=umount
+export PACKAGE=nfs-utils
+export PACKAGE_NAME=nfs-utils
+export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
+export TEST=/nfs-utils/umount
diff --git a/tests/umount/runtest.sh b/tests/umount/runtest.sh
new file mode 100644
index 0000000..8dee5c7
--- /dev/null
+++ b/tests/umount/runtest.sh
@@ -0,0 +1,122 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: Test for command umount.nfs{,4}
+#   Author: Stevens Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2013 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+#===============================================================================
+
+mnt=/nfs-mount
+expDir=/expDir
+prog=umount.nfs
+
+rlJournalStart
+    rlPhaseStartSetup do-Setup
+    # Load beakerlib you needed
+    rlImport kernel/base
+    envinfo
+    read IP4 _nil <<<$(getDefaultIp)
+    rlFileBackup /etc/sysconfig/nfs /etc/exports
+	run "mkdir -p $mnt $expDir"
+	run "echo '$expDir *(rw,no_root_squash,fsid=0)' > /etc/exports"
+	run 'service_nfs restart'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog-with-wrong-option
+	run "$prog -xxxx" 1-255 "should exit with an error code"
+	run "$prog -xxxx 2>&1 | egrep -i '(usage:|try.*for more info)'" 0 "should output usage to user"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog-without-args
+	run "$prog" 1-255 "should exit with an error code"
+	run "$prog 2>&1 | egrep -i '(usage:|try.*for more info)'" 0 "should output usage to user"
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-$prog--h
+	run "$prog -h" -
+	std=$($prog -h 2>&1)
+	run "$prog -h 2>&1 | egrep -i usage:"
+	[ $? = 0 ] && {
+		options=$(echo "$std"|grep -o '\[-[a-z]\+\]')
+		[ ${#options} -gt 3 ] && {
+			optionNuma=$((${#options} - 3))
+			optionNumb=$(echo "$std" | sed -n "/\t-$options/p" | wc -l)
+			optionNumc=$(echo "$std" | sed -n "/\t-[a-zA-Z]/p" | wc -l)
+			run "test $optionNuma = $optionNumb"
+			run "test $optionNuma = $optionNumc"
+			run 'echo "$std" | sed -n "/\t-$options/p" | grep "		"' 1
+		}
+	}
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-Cannot-umount-NFS-mp-with-spaces
+	serv=localhost
+	expdirWithSpaces="/expdir with spaces"
+	nfsmpWithSpaces="/mnt/nfsmp with spaces"
+	run 'mkdir -p "$expdirWithSpaces" "$nfsmpWithSpaces"'
+	run 'echo "\"$expdirWithSpaces\" *(rw,no_root_squash,fsid=0)" > /etc/exports'
+	run 'service_nfs restart'
+	run 'service_nfs restart 2>&1 | grep "expdir with spaces does not support"' 1 \
+	    "exportfs give incorrect message for mount dir containing spaces"
+	run 'mount -t nfs "$serv:$expdirWithSpaces" "$nfsmpWithSpaces"' 0  "mount dir with spaces"
+	run 'grep "$nfsmpWithSpaces" /proc/mounts' -
+	run 'umount "$nfsmpWithSpaces"' 0  "umount dir with spaces"
+	run 'grep "$nfsmpWithSpaces" /proc/mounts' 1 "cat /proc/mounts and umount successfully"
+	run 'rm -rf "$expdirWithSpaces" "$nfsmpWithSpaces"'
+    rlPhaseEnd
+
+    rlPhaseStartTest do-Test-"[nfsv3] umount.nfs: Failed to find '' protocol"
+	log "{Info} Creating a small (separate) fs on a loopback device."
+	run "dd if=/dev/zero of=fs.img bs=1M count=1000" -
+	run "losetup /dev/loop0 fs.img" -
+	run "mkfs.ext4 /dev/loop0" -
+	run "mkdir $expDir/foo"
+	run "mount /dev/loop0 $expDir/foo"
+	log "{Info} Listing the contents of the directory to trigger a submount."
+	run "echo '$expDir *(crossmnt)' > /etc/exports"
+	run "service_nfs restart"
+	run "mount localhost:$expDir $mnt -o vers=3"
+	run "ls $mnt/foo"
+	run "cat /proc/mounts | grep $mnt" -
+	run "umount $mnt/foo &>stdout.log"
+	run "cat stdout.log" -
+	run "cat stdout.log | grep -q 'Failed'" 1 "should not output error msg"
+	run "umount $mnt"
+	log "{Info} Recovering it."
+	run "service_nfs stop"
+	run "umount $expDir/foo"
+	run "rm -rf $expDir/foo"
+	run "losetup -d /dev/loop0" -
+	run "rm -f fs.img" -
+    rlPhaseEnd
+
+    rlPhaseStartCleanup do-Cleanup
+	rlFileRestore
+    rm -rf $mnt $expDir
+    rlPhaseEnd
+rlJournalEnd
+#rlJournalPrintText
+

From 5218121ee7e9c9ed75f3d1b91bae0b2a15f154b2 Mon Sep 17 00:00:00 2001
From: Bruno Goncalves <bgoncalv@redhat.com>
Date: Jan 17 2019 20:02:54 +0000
Subject: [PATCH 2/6] fixed some test issues


---

diff --git a/tests/exportfs/runtest.sh b/tests/exportfs/runtest.sh
index 8e34a8c..69d9532 100755
--- a/tests/exportfs/runtest.sh
+++ b/tests/exportfs/runtest.sh
@@ -48,7 +48,7 @@ rlJournalStart
             hostnamectl set-hostname exportfs.test
         fi
         #clean nfs garbage, avoid affect from pre case
-        { exportfs -ua; service nfs stop &>/dev/null; }
+        { exportfs -ua; service_nfs stop &>/dev/null; }
         rlFileBackup /etc/sysconfig/nfs /etc/exports
         rlFileBackup --clean /etc/exports.d/
         run 'rm -f /etc/exports.d/*'
@@ -148,7 +148,7 @@ rlJournalStart
 
     rlPhaseStartTest do-Test-exportfs-when-/proc/fs/nfsd-not-mount
         run 'mkdir -p ${expdir}_tmp'
-        run 'service nfs start'
+        run 'service_nfs start'
         run 'pkill rpc.mountd && umount /proc/fs/nfsd'
         run 'exportfs -iv *:${expdir}_tmp'
         run 'mount -t nfsd nfsd /proc/fs/nfsd' 0-255 "restore env: mount nfsd"
@@ -157,7 +157,7 @@ rlJournalStart
 
     rlPhaseStartTest do-Test-option-nordirplus
         #nfsv3 export option nordirplus support test
-        run 'service nfs start'
+        run 'service_nfs start'
         run 'exportfs -i -o nordirplus "*:$expdir"'
         run 'mount -o vers=3 localhost:$expdir $nfsmp'
         run 'grep $nfsmp /proc/mounts'
diff --git a/tests/systemd-nfs/runtest.sh b/tests/systemd-nfs/runtest.sh
index 227ec36..63d8593 100755
--- a/tests/systemd-nfs/runtest.sh
+++ b/tests/systemd-nfs/runtest.sh
@@ -38,7 +38,7 @@ cleanup() {
 }
 
 #global var define
-serv=nfs
+serv=nfs-server
 rpm -q systemd || {
 	echo "{Warn} no systemd installed, skip the test"
 	report_result $TEST PASS
diff --git a/tests/tests.yml b/tests/tests.yml
index 8b5bd0d..865464b 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -2,7 +2,7 @@
 # Tests that run in classic context
 - hosts: localhost
   roles:
-  - role: standard-test-rhts
+  - role: standard-test-beakerlib
     use_beakerlib_libraries: yes
     tags:
     - classic
@@ -16,5 +16,6 @@
     required_packages:
     - bind-utils        # export-mount-local needs this package
     - findutils         # beakerlib needs find command
+    - iptables          # nfs-mount-options-all needs this package
     - nfs-utils
     - redhat-lsb-core   # lsb_release is needed by tests

From 69a4cec52d5d1803bfa88670501b4f8d1dcd9481 Mon Sep 17 00:00:00 2001
From: Bruno Goncalves <bgoncalv@redhat.com>
Date: Jan 18 2019 17:24:32 +0000
Subject: [PATCH 3/6] sync export-mount-local and systemd-nfs with tests from QE


---

diff --git a/tests/export-mount-local/Makefile b/tests/export-mount-local/Makefile
new file mode 100644
index 0000000..6ddfa94
--- /dev/null
+++ b/tests/export-mount-local/Makefile
@@ -0,0 +1,76 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: test for: export-mount
+#   Author: Jianhong Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2014 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#Generate and export TEST= PACKAGE=
+TENV=_env
+ifeq ($(PKG_TOP_DIR),)
+    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    export _TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    -include $(PKG_TOP_DIR)/env.mk
+endif
+include $(TENV)
+ifeq ($(_TOP_DIR),)
+    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
+endif
+#===============================================================================
+export TESTVERSION=1.0
+
+BUILT_FILES=
+FILES=$(TENV) $(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
+. /usr/share/beakerlib/beakerlib.sh || exit 1; \
+. runtest.sh )
+
+build: $(BUILT_FILES)
+	test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+	rm -f *~ $(BUILT_FILES)
+
+-include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+	@echo "Owner:           Jianhong Yin <jiyin@redhat.com>" > $(METADATA)
+	@echo "Name:            $(TEST)" >> $(METADATA)
+	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)
+	@echo "Path:            $(TEST_DIR)" >> $(METADATA)
+	@echo "Description:     test for: export-mount" >> $(METADATA)
+	@echo "Type:            function" >> $(METADATA)
+	@echo "Type:            $(PACKAGE)-level-tier1" >> $(METADATA)
+	@echo "TestTime:        30m" >> $(METADATA)
+	@echo "RunFor:          $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        $(PACKAGE)" >> $(METADATA)
+	@echo "Priority:        Normal" >> $(METADATA)
+	@echo "License:         GPLv2" >> $(METADATA)
+	@echo "Requires:	library(kernel/base)" >> $(METADATA)
+	@echo "Requires:	nfs-utils" >> $(METADATA)
+	@echo "Requires:	bind-utils" >> $(METADATA)
+	@echo "RhtsRequires:	library(kernel/base)" >> $(METADATA)
+	rhts-lint $(METADATA)
diff --git a/tests/export-mount-local/runtest.sh b/tests/export-mount-local/runtest.sh
index e72e0f4..60d0c90 100755
--- a/tests/export-mount-local/runtest.sh
+++ b/tests/export-mount-local/runtest.sh
@@ -1,39 +1,43 @@
 #!/bin/bash
 # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#   Description: test for: export-mount
+#   Description: test for: export-mount-local
 #   Author: Jianhong Yin <jiyin@redhat.com>
-#
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 #
 #   Copyright (c) 2014 Red Hat, Inc.
 #
-#   This program is free software: you can redistribute it and/or
-#   modify it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation, either version 2 of
-#   the License, or (at your option) any later version.
+#   This copyrighted material is made available to anyone wishing
+#   to use, modify, copy, or redistribute it subject to the terms
+#   and conditions of the GNU General Public License version 2.
 #
 #   This program is distributed in the hope that it will be
 #   useful, but WITHOUT ANY WARRANTY; without even the implied
 #   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-#   PURPOSE.  See the GNU General Public License for more details.
+#   PURPOSE. See the GNU General Public License for more details.
 #
-#   You should have received a copy of the GNU General Public License
-#   along with this program. If not, see http://www.gnu.org/licenses/.
+#   You should have received a copy of the GNU General Public
+#   License along with this program; if not, write to the Free
+#   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+#   Boston, MA 02110-1301, USA.
 #
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 [ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
 . /usr/share/beakerlib/beakerlib.sh || exit 1
 
+# Load beakerlib you needed
+rlImport kernel/base
+envinfo
+#disable_avc_check
+
 #===============================================================================
 
 #signal trap
 trap "cleanup" SIGINT SIGTERM SIGHUP SIGQUIT
 cleanup() {
-	rlFileRestore
-	rm -rf $expdir $nfsmp
+        rlFileRestore
+        rm -rf $expdir $nfsmp
 }
 
 #global var define
@@ -41,202 +45,180 @@ BZ=exp-mount-local
 expdir=/exportDir-$BZ
 nfsmp=/mnt/nfsmp-$BZ
 subexpdir=/exportDir-$BZ/sub
-tmpnfsmp=/tmp/nfsmp-$BZ
+tmpnfsmp=${nfsmp}-tmp
 
-host="$HOSTNAME"
+read ipv4 _nil <<<$(getDefaultIp)
+read ipv6s _nil <<<$(getDefaultIp 6)
+ipv6="[$ipv6s]"
 # in case "localhost.localdomain"
-echo "$host" | grep -q "localhost" && host="localhost"
+if echo "$HOSTNAME" | grep -q "localhost"; then
+    ORIGINAL_HOSTNAME="$HOSTNAME"
+    HOSTNAME="$BZ"
+    hostnamectl set-hostname "$HOSTNAME"
+fi
+host="$HOSTNAME"
 
 rlJournalStart
     rlPhaseStartSetup do-Setup-
-        # Load beakerlib you needed
-        rlImport kernel/base
-        read ipv4 _nil <<<$(getDefaultIp)
-        read ipv6s _nil <<<$(getDefaultIp 6 global)
-        ipv6="[$ipv6s]"
-        envinfo
-        rlFileBackup /etc/exports /etc/sysconfig/nfs /etc/nfs.conf /etc/hosts
-        if [ "$host" = "localhost" ]; then
+        rlFileBackup /etc/{exports,auto.master} /etc/sysconfig/{nfs,autofs} /etc/nfs.conf /etc/hosts
+        if [ -n "ORIGINAL_HOSTNAME" ]; then
             run "echo '$ipv4 $host' >> /etc/hosts"
-            if [ -n "$ipv6s" ]; then
-                run "echo '$ipv6s $host' >> /etc/hosts"
-            fi
+            run "echo '$ipv6s $host' >> /etc/hosts"
             run "cat /etc/hosts" -
         fi
-        run 'rm -rf $expdir $nfsmp && mkdir -p $expdir $nfsmp'
-        run 'rm -rf $subexpdir $tmpnfsmp && mkdir -p $subexpdir $tmpnfsmp'
-        run 'echo "/tmp *(ro,sync)" >/etc/exports'
-        run 'service_nfs restart'
-        #avoid issues restarting the server too quickly
-        sleep 10
-        run 'ls_nfsvers'
+        run "rm -rf $expdir $nfsmp && mkdir -p $expdir $nfsmp"
+        run "rm -rf $subexpdir $tmpnfsmp && mkdir -p $subexpdir $tmpnfsmp"
+        run "service_nfs restart"
+        run "ls_nfsvers"
     rlPhaseEnd
 
-for V in $(ls_nfsvers); do
-    rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv4
-        run "exportfs -au && exportfs -iv $ipv4:$expdir -o ro,sync,no_root_squash"
-        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
-        run 'umount $nfsmp'
-    rlPhaseEnd
-    if [ -n "$ipv6s" ]; then
+    for V in $(ls_nfsvers); do
+        # export by IPv4 and try to mount it
+        rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv4
+            run "exportfs -au && exportfs -iv $ipv4:$expdir -o ro,sync,no_root_squash"
+            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
+            run "umount $nfsmp"
+        rlPhaseEnd
         rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv6-x
-            run 'mount -o vers=$V $ipv6:$expdir $nfsmp' 1-255
-            [ $? = 0 ] && run "umount $nfsmp"
+            if [ -n "$ipv6s" ]; then
+                run "mount -o vers=$V $ipv6:$expdir $nfsmp" 1-255
+                [ $? = 0 ] && run "umount $nfsmp"
+            fi
+        rlPhaseEnd
+        rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-host-bz876847
+            run "mount -o vers=$V $host:$expdir $nfsmp"
+            run "umount $nfsmp"
         rlPhaseEnd
-    fi
-    rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-host
-        run 'mount -o vers=$V $host:$expdir $nfsmp'
-        run 'umount $nfsmp'
-    rlPhaseEnd
 
-    if [ -n "$ipv6s" ]; then
-        rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv6
-            run "exportfs -au && exportfs -iv $ipv6:$expdir -o ro,sync,no_root_squash"
-            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
-            run 'umount $nfsmp'
+        if [ -n "$ipv6s" ]; then
+            # export by IPv6 and try to mount it
+            rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv6
+                run "exportfs -au && exportfs -iv $ipv6:$expdir -o ro,sync,no_root_squash"
+                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
+                run "umount $nfsmp"
+            rlPhaseEnd
+            rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv4-x
+                run "mount -o vers=$V $ipv4:$expdir $nfsmp" 1-255
+                [ $? = 0 ] && run "umount $nfsmp"
+            rlPhaseEnd
+            rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-host
+                run "dig -t aaaa $HOSTNAME +short" 0 "To get the IPv6 address"
+                if [ -n "$ipv6s" ]; then
+                    run "mount -o vers=$V $host:$expdir $nfsmp"
+                    run "umount $nfsmp"
+                fi
+            rlPhaseEnd
+        fi
+
+        # export by hostname and try to mount it
+        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-host
+            run "exportfs -au && exportfs -iv $host:$expdir -o ro,sync,no_root_squash"
+            run "mount -o vers=$V $host:$expdir $nfsmp"
+            run "umount $nfsmp"
         rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv4-x
-            run 'mount -o vers=$V $ipv4:$expdir $nfsmp' 1-255
-            [ $? = 0 ] && run "umount $nfsmp"
+        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv4
+            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
+            run "umount $nfsmp"
         rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-host
-            if [ -n "$(dig -t aaaa $HOSTNAME +short)" ]; then
-                run 'mount -o vers=$V $host:$expdir $nfsmp'
-                run 'umount $nfsmp'
+        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv6
+            run "dig -t aaaa $HOSTNAME +short" 0 "To get the IPv6 address"
+            if [ -n "$ipv6s" ]; then
+                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
+                run "umount $nfsmp"
             fi
         rlPhaseEnd
-    fi
 
-    rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-host
-        run "exportfs -au && exportfs -iv $host:$expdir -o ro,sync,no_root_squash"
-        run 'mount -o vers=$V $host:$expdir $nfsmp'
-        run 'umount $nfsmp'
-    rlPhaseEnd
-    rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv4
-        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
-        run 'umount $nfsmp'
-    rlPhaseEnd
-    if [ -n "$ipv6s" ]; then
-        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv6
-            if [ -n "$(dig -t aaaa $HOSTNAME +short)" ]; then
-                run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
-                run 'umount $nfsmp'
+        # export sub-directory by IPv4 and try to mount it
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv4
+            run "echo '$expdir *(ro,sync,no_root_squash)' >/etc/exports"
+            run "echo '$subexpdir $ipv4(ro,sync,no_root_squash)' >>/etc/exports"
+            which systemctl >/dev/null 2>&1 && run "systemctl reset-failed"
+            run "service_nfs restart"
+            run "showmount -e" -
+            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
+            run "mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp"
+            run "umount $nfsmp $tmpnfsmp"
+        rlPhaseEnd
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv6-x-bz1198900
+            if [ -n "$ipv6s" ]; then
+                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
+                run "mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp" 1-255 "bz1198900 should not mount sub-directory with different ip"
+                [ $? = 0 ] && run "umount $tmpnfsmp"
+                run "umount $nfsmp"
             fi
         rlPhaseEnd
-    fi
-
-    rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv4
-        run 'echo "$expdir *(ro,sync,no_root_squash)" >/etc/exports'
-        run 'echo "$subexpdir $ipv4(ro,sync,no_root_squash)" >>/etc/exports'
-        run 'service_nfs restart'
-        #avoid issues restarting the server too quickly
-        sleep 10
-        run 'showmount -e' -
-        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
-        run 'mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp'
-        run 'umount $nfsmp $tmpnfsmp'
-    rlPhaseEnd
-    if [ -n "$ipv6s" ]; then
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv6-x
-            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
-            run 'mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp' 1-255 "should not mount sub-directory with different ip"
-            [ $? = 0 ] && run "umount $tmpnfsmp"
-            run "umount $nfsmp"
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-host
+            run "mount -o vers=$V $host:$expdir $nfsmp"
+            run "mount -o vers=$V $host:$subexpdir $tmpnfsmp"
+            run "umount $nfsmp $tmpnfsmp"
         rlPhaseEnd
-    fi
-    rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-host
-        run 'mount -o vers=$V $host:$expdir $nfsmp'
-        run 'mount -o vers=$V $host:$subexpdir $tmpnfsmp'
-        run 'umount $nfsmp $tmpnfsmp'
-    rlPhaseEnd
 
-    if [ -n "$ipv6s" ]; then
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv4-x
-            run 'echo "$expdir *(ro,sync,no_root_squash)" >/etc/exports'
-            run 'echo "$subexpdir $ipv6s(ro,sync,no_root_squash)" >>/etc/exports'
-            run 'service_nfs restart'
-            #avoid issues restarting the server too quickly
-            sleep 10
-            run 'showmount -e' -
-            run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
-            run 'mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp' 1-255 "should not mount sub-directory with different ip"
-            [ $? = 0 ] && run "umount $tmpnfsmp"
-            run "umount $nfsmp"
+        if [ -n "$ipv6s" ]; then
+            # export sub-directory by IPv6 and try to mount it
+            rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv4-x-bz1198900
+                run "echo '$expdir *(ro,sync,no_root_squash)' >/etc/exports"
+                run "echo '$subexpdir $ipv6s(ro,sync,no_root_squash)' >>/etc/exports"
+                which systemctl >/dev/null 2>&1 && run "systemctl reset-failed"
+                run "service_nfs restart"
+                run "showmount -e" -
+                run "mount -o vers=$V $ipv4:$expdir $nfsmp"
+                run "mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp" 1-255 "bz1198900 should not mount sub-directory with different ip"
+                [ $? = 0 ] && run "umount $tmpnfsmp"
+                run "umount $nfsmp"
+            rlPhaseEnd
+            rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv6
+                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
+                run "mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp"
+                run "umount $nfsmp $tmpnfsmp"
+            rlPhaseEnd
+            rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-host
+                run "mount -o vers=$V $host:$expdir $nfsmp"
+                run "mount -o vers=$V $host:$subexpdir $tmpnfsmp"
+                run "umount $nfsmp $tmpnfsmp"
+            rlPhaseEnd
+        fi
+
+        # export sub-directory by hostname and try to mount it
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv4
+            run "echo '$expdir *(ro,sync,no_root_squash)' >/etc/exports"
+            run "echo '$subexpdir $host(ro,sync,no_root_squash)' >>/etc/exports"
+            which systemctl >/dev/null 2>&1 && run "systemctl reset-failed"
+            run "service_nfs restart"
+            run "showmount -e" -
+            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
+            run "mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp"
+            run "umount $nfsmp $tmpnfsmp"
         rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv6
-            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
-            run 'mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp'
-            run 'umount $nfsmp $tmpnfsmp'
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv6
+            if [ -n "$ipv6s" ]; then
+                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
+                run "mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp"
+                run "umount $nfsmp $tmpnfsmp"
+            fi
         rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-host
-            run 'mount -o vers=$V $host:$expdir $nfsmp'
-            run 'mount -o vers=$V $host:$subexpdir $tmpnfsmp'
-            run 'umount $nfsmp $tmpnfsmp'
+        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-host
+            run "mount -o vers=$V $host:$expdir $nfsmp"
+            run "mount -o vers=$V $host:$subexpdir $tmpnfsmp"
+            run "umount $nfsmp $tmpnfsmp"
         rlPhaseEnd
-    fi
 
-    rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv4
-        run 'echo "$expdir *(ro,sync,no_root_squash)" >/etc/exports'
-        run 'echo "$subexpdir $host(ro,sync,no_root_squash)" >>/etc/exports'
-        run 'service_nfs restart'
-        #avoid issues restarting the server too quickly
-        sleep 10
-        run 'showmount -e' -
-        run 'mount -o vers=$V $ipv4:$expdir $nfsmp'
-        run 'mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp'
-        run 'umount $nfsmp $tmpnfsmp'
-    rlPhaseEnd
-    if [ -n "$ipv6s" ]; then
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv6
-            run 'mount -o vers=$V $ipv6:$expdir $nfsmp'
-            run 'mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp'
-            run 'umount $nfsmp $tmpnfsmp'
+        rlPhaseStartTest do-Test-nfsV$V-default-option-overridden-by-client-specific-option
+            run "echo '$expdir -ro,sync *(rw,no_root_squash)' >/etc/exports"
+            run "service_nfs restart"
+            run "mount -o vers=$V $host:$expdir $nfsmp"
+            run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "exports option should be overridden by client specific."
+            run "rm -rf $nfsmp/test*"
+            run "umount $nfsmp"
+            run "echo '$expdir -ro,sec=sys,sync *(rw,no_root_squash)' >/etc/exports" 0 "sec=sys may cause it to be failed."
+            run "exportfs -rv"
+            run "mount -o vers=$V $host:$expdir $nfsmp"
+            run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "bz1359042 exports option should be overridden by client specific."
+            run "rm -rf $nfsmp/test*"
+            run "umount $nfsmp"
         rlPhaseEnd
-    fi
-    rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-host
-        run 'mount -o vers=$V $host:$expdir $nfsmp'
-        run 'mount -o vers=$V $host:$subexpdir $tmpnfsmp'
-        run 'umount $nfsmp $tmpnfsmp'
-    rlPhaseEnd
-
-    rlPhaseStartTest do-Test-nfsV$V-default-option-overridden-by-client-specific-option
-        run "echo '$expdir -ro,sync *(rw,no_root_squash)' >/etc/exports"
-        run "service_nfs restart"
-        run "mount -o vers=$V $host:$expdir $nfsmp"
-        run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "exports option should be overridden by client specific."
-        run "rm -rf $nfsmp/test*"
-        run "umount $nfsmp"
-        run "echo '$expdir -ro,sec=sys,sync *(rw,no_root_squash)' >/etc/exports" 0 "sec=sys may cause it to be failed."
-        run "exportfs -rv"
-        run "mount -o vers=$V $host:$expdir $nfsmp"
-        run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "exports option should be overridden by client specific."
-        run "rm -rf $nfsmp/test*"
-        run "umount $nfsmp"
-    rlPhaseEnd
-done
+    done
 
-    rlPhaseStartTest do-Test-exports-options-twice
-        run 'echo "/ *(sync,hide,no_wdelay)" > /etc/exports'
-        run "service_nfs restart"
-        #avoid issues restarting the server too quickly
-        sleep 10
-
-        # Count all options from list printed by exportfs -s(rhel-7) or exportfs -v(rhel-6)
-        allOptions=$( (exportfs -s 2>/dev/null || exportfs -v) | sed 's/^.*(//;s/)$//;s/,/\n/g' | wc -l)
-        # Count unique options from list printed by exportfs -s(rhel-7) or exportfs -v(rhel-6)
-        uniqOptions=$( (exportfs -s 2>/dev/null || exportfs -v) | sed 's/^.*(//;s/)$//;s/,/\n/g' | sort | uniq | wc -l)
-
-        log "{Info} exportfs -s(rhel-7) or exportfs -v(rhel-6) will print option list for each export path"
-        log "{Info} All options printed by exportfs -s(rhel-7) or exportfs -v(rhel-6) (sorted):"
-        run "(exportfs -s 2>/dev/null || exportfs -v) | sed 's/^.*(//;s/)$//;s/,/\n/g' | sort"
-        log "{Info} For exported path '/', there are $allOptions options printed in all options list and $uniqOptions of them are unique"
-        run 'test $uniqOptions -eq $allOptions' 0 "Should not output any options twice, quantity of all options should be equal to quantity of unique options"
-        for opt in sync hide no_wdelay; do
-            run "(exportfs -s 2>/dev/null || exportfs -v) | grep -q $opt" 0 "Option list should contain option $opt specified in /etc/exports"
-        done
-    rlPhaseEnd
-
-    rlPhaseStartTest do-Test-server-side-using-bind-mount
+    rlPhaseStartTest do-Test-bz1479135-server-side-using-bind-mount
         run "dd if=/dev/zero of=workspace.image bs=3M count=500"
         run "mkfs -t ext3 -F workspace.image"
         run "mkdir -p /workspace"
@@ -247,8 +229,6 @@ done
         run "echo '/srv/nfs/vmcore *(rw,no_root_squash)' > /etc/exports"
         run "echo '/workspace *(rw,no_root_squash)' >> /etc/exports"
         run "service_nfs restart"
-        #avoid issues restarting the server too quickly
-        sleep 10
         run "mount $host:/workspace $nfsmp"
         run "ls $nfsmp/work_dir"
         run "umount $nfsmp"
@@ -259,45 +239,103 @@ done
         run "rm workspace.image"
     rlPhaseEnd
 
-    rlPhaseStartTest do-Test-mount-nfsv4-show-wrong-port
-        run "echo '$expdir *(rw,no_root_squash)' >>/etc/exports"
-        run "service_nfs restart"
-        #avoid issues restarting the server too quickly
-        sleep 10
-        run "exportfs -v"
-        run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp"
-        run "mount -t nfs4 | grep $nfsmp" -
-        run "mount -t nfs4 | grep $nfsmp | grep -q port=2049" 0 "Should show port=2049"
-        run "umount $nfsmp"
-        run "echo '[nfsd]' > /etc/nfs.conf"
-        run "echo 'port=20050' >> /etc/nfs.conf"
-        run "service_nfs restart"
-        run "sleep 10"
-        run "rpcinfo -p | grep -w nfs | grep 20050"
-        run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp" -
-        if [ $? -eq 0 ]; then
-            run "mount -t nfs4" -
-            run "mount -t nfs4 | grep -q port=20050" 0 "Should show port=20050"
-            run "umount $nfsmp"
-        fi
-        run "mount -t nfs -o vers=4,port=0 localhost:$expdir $nfsmp" -
-        if [ $? -eq 0 ]; then
-            run "mount -t nfs4" -
-            run "mount -t nfs4 | grep -q port=20050" 0 "Should show port=20050"
-            run "umount $nfsmp"
-        fi
-        run "mount -t nfs -o vers=4,port=20050 localhost:$expdir $nfsmp"
-        run "mount -t nfs4 | grep $nfsmp" -
-        run "mount -t nfs4 | grep $nfsmp | grep -q port=20050" 0 "Should show port=20050"
-        run "umount $nfsmp"
+    rlPhaseStartTest do-Test-bz1465259-mount-nfsv4-show-wrong-port
+	run "echo '$expdir *(rw,no_root_squash)' > /etc/exports"
+	run "service_nfs restart"
+	run "exportfs -v"
+	run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp"
+	run "cat /proc/mounts | grep $nfsmp" -
+	run "cat /proc/mounts | grep $nfsmp | grep -q 'port='" 1 "Omit displaying 'port=' by default"
+	run "mount -o remount,ro $nfsmp"
+	run "cat /proc/mounts | grep $nfsmp" -
+	run "cat /proc/mounts | grep $nfsmp | grep -q 'port='" 1 "Omit displaying 'port=' by default"
+	run "umount $nfsmp"
+	if [ -e "/etc/nfs.conf" ]; then
+		echo "[nfsd]" > /etc/nfs.conf
+		echo "port=20050" >> /etc/nfs.conf
+		run "cat /etc/nfs.conf" -
+		run "service_nfs restart"
+		run "sleep 10"
+		run "rpcinfo -p | grep -w nfs | grep 20050"
+		run "mount -t nfs4 -o port=20050 localhost:$expdir $nfsmp"
+		if [ $? -eq 0 ]; then
+			run "cat /proc/mounts | grep $nfsmp" -
+			run "cat /proc/mounts | grep $nfsmp | grep -q port=20050" 0 "Should show port=20050"
+			run "mount -o remount,ro $nfsmp"
+			run "cat /proc/mounts | grep $nfsmp" -
+			run "cat /proc/mounts | grep $nfsmp | grep -q port=20050" 0 "Should show port=20050"
+			run "umount $nfsmp"
+		fi
+		log "{Info} If NFS service is not available on the specified port"
+		run "mount -t nfs4 -o port=2049 localhost:$expdir $nfsmp" 1-255
+		if [ $? -eq 0 ]; then
+			run "cat /proc/mounts | grep $nfsmp" -
+			run "umount $nfsmp"
+		fi
+		log "{Info} If port value is not specified"
+		if ls_nfsvers | grep -q -w 3; then
+			run "mount -t nfs -o vers=3 localhost:$expdir $nfsmp" 0 "for v2/v3 client uses port advertised by server's rpcbind service"
+			run "cat /proc/mounts | grep $nfsmp" -
+			run "umount $nfsmp"
+		fi
+		run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp" 1-255 "for v4 client uses the standard NFS port (2049) without checking"
+		if [ $? -eq 0 ]; then
+			run "cat /proc/mounts | grep $nfsmp" -
+			run "umount $nfsmp"
+		fi
+		log "{Info} If the specified port value is 0"
+		run "mount -t nfs -o vers=4,port=0 localhost:$expdir $nfsmp"
+		if [ $? -eq 0 ]; then
+			run "cat /proc/mounts | grep $nfsmp" -
+			run "cat /proc/mounts | grep $nfsmp | grep -q port=0" 0 "Should show port=0"
+			run "umount $nfsmp"
+		fi
+		run "echo '' > /etc/nfs.conf" 0 "Recovering"
+	fi
     rlPhaseEnd
 
+    if ls_nfsvers | grep -q -w "4.0"; then
+    rlPhaseStartTest do-Test-bz1592915-sanity-check-clientaddr-during-mount
+	run "echo '$expdir *(rw,no_root_squash)' > /etc/exports"
+	run "service_nfs restart"
+	run "exportfs -v"
+	log "{Info} Mounting v4.0 by default"
+	run "mount -o vers=4,minorversion=0 localhost:$expdir $nfsmp -v"
+	if [ $? -eq 0 ]; then
+		run "cat /proc/mounts | grep $nfsmp" -
+		run "umount $nfsmp"
+	fi
+	log "{Info} Setting 'clientaddr=' not match any local address"
+	# use normal mode (no verbose) to check the emitted warning
+	run "mount -o vers=4,minorversion=0,clientaddr=1.2.3.4 localhost:$expdir $nfsmp &> >(tee stdout.log)"
+	if [ $? -eq 0 ]; then
+		run "cat /proc/mounts | grep $nfsmp" -
+		run "umount $nfsmp"
+	fi
+	run "cat stdout.log | grep -q '[warning].*not match any existing network addresses'" 0 "Should warn the administrators"
+	log "{Info} Specifying IPv4_ANY (0.0.0.0) signifying client does not want delegations"
+	run "mount -o vers=4,minorversion=0,clientaddr=0.0.0.0 localhost:$expdir $nfsmp -v"
+	if [ $? -eq 0 ]; then
+		run "cat /proc/mounts | grep $nfsmp" -
+		run "umount $nfsmp"
+	fi
+	log "{Info} Specifying IPv6_ANY (::0) signifying client does not want delegations"
+	run "mount -o vers=4,minorversion=0,clientaddr=::0 localhost:$expdir $nfsmp -v"
+	if [ $? -eq 0 ]; then
+		run "cat /proc/mounts | grep $nfsmp" -
+		run "umount $nfsmp"
+	fi
+    rlPhaseEnd
+    fi
+
     rlPhaseStartCleanup do-Cleanup-
-        run 'rm -rf $expdir $nfsmp $subexpdir $tmpnfsmp'
+        run "rm -rf $expdir $nfsmp $subexpdir $tmpnfsmp"
         rlFileRestore
         run "service_nfs restart"
-        #avoid issues restarting the server too quickly
-        sleep 10
+        if [ -n "ORIGINAL_HOSTNAME" ]; then
+            HOSTNAME="$ORIGINAL_HOSTNAME"
+            hostnamectl set-hostname "$HOSTNAME"
+        fi
     rlPhaseEnd
 rlJournalEnd
 #rlJournalPrintText
diff --git a/tests/exportfs/Makefile b/tests/exportfs/Makefile
new file mode 100644
index 0000000..d367651
--- /dev/null
+++ b/tests/exportfs/Makefile
@@ -0,0 +1,79 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: test for command exportfs
+#   Author: Stevens Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2013 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TENV=_env
+ifeq ($(PKG_TOP_DIR),)
+    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    export _TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    -include $(PKG_TOP_DIR)/env.mk
+endif
+include $(TENV)
+ifeq ($(_TOP_DIR),)
+    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
+endif
+#===============================================================================
+
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(TENV) $(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
+. /usr/share/beakerlib/beakerlib.sh; \
+. runtest.sh )
+
+build: $(BUILT_FILES)
+	test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+	rm -f *~ $(BUILT_FILES)
+
+
+-include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+	@echo "Owner:           Stevens Yin <jiyin@redhat.com>" > $(METADATA)
+	@echo "Name:            $(TEST)" >> $(METADATA)
+	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)
+	@echo "Path:            $(TEST_DIR)" >> $(METADATA)
+	@echo "Description:     test for command exportfs" >> $(METADATA)
+	@echo "Type:            Regression" >> $(METADATA)
+	@echo "TestTime:        30m" >> $(METADATA)
+	@echo "RunFor:          $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        library(kernel/base)" >> $(METADATA)
+	@echo "RhtsRequires:    library(kernel/base)" >> $(METADATA)
+	@echo "Priority:        Normal" >> $(METADATA)
+	@echo "License:         GPLv2" >> $(METADATA)
+	@echo "Confidential:    no" >> $(METADATA)
+	@echo "Destructive:     no" >> $(METADATA)
+
+	rhts-lint $(METADATA)
+
diff --git a/tests/mount/Makefile b/tests/mount/Makefile
new file mode 100644
index 0000000..412b640
--- /dev/null
+++ b/tests/mount/Makefile
@@ -0,0 +1,79 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: Test for command mount.nfs{,4}
+#   Author: Stevens Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2013 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TENV=_env
+ifeq ($(PKG_TOP_DIR),)
+    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    export _TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    -include $(PKG_TOP_DIR)/env.mk
+endif
+include $(TENV)
+ifeq ($(_TOP_DIR),)
+    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
+endif
+#===============================================================================
+
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(TENV) $(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
+. /usr/share/beakerlib/beakerlib.sh; \
+. runtest.sh )
+
+build: $(BUILT_FILES)
+	test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+	rm -f *~ $(BUILT_FILES)
+
+
+-include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+	@echo "Owner:           Stevens Yin <jiyin@redhat.com>" > $(METADATA)
+	@echo "Name:            $(TEST)" >> $(METADATA)
+	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)
+	@echo "Path:            $(TEST_DIR)" >> $(METADATA)
+	@echo "Description:     Test for command mount.nfs{,4}" >> $(METADATA)
+	@echo "Type:            Regression" >> $(METADATA)
+	@echo "TestTime:        30m" >> $(METADATA)
+	@echo "RunFor:          $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        library(kernel/base)" >> $(METADATA)
+	@echo "RhtsRequires:    library(kernel/base)" >> $(METADATA)
+	@echo "Priority:        Normal" >> $(METADATA)
+	@echo "License:         GPLv2" >> $(METADATA)
+	@echo "Confidential:    no" >> $(METADATA)
+	@echo "Destructive:     no" >> $(METADATA)
+
+	rhts-lint $(METADATA)
+
diff --git a/tests/nfs-mount-options-all/Makefile b/tests/nfs-mount-options-all/Makefile
new file mode 100644
index 0000000..afc24cc
--- /dev/null
+++ b/tests/nfs-mount-options-all/Makefile
@@ -0,0 +1,77 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: Test for nfs mount options
+#   Author: Bill Peck <bpeck@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2006 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TENV=_env
+ifeq ($(PKG_TOP_DIR),)
+    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    export _TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    -include $(PKG_TOP_DIR)/env.mk
+endif
+include $(TENV)
+ifeq ($(_TOP_DIR),)
+    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
+endif
+#===============================================================================
+
+
+export TESTVERSION=0.1
+
+.PHONY: all install download clean
+
+METADATA=testinfo.desc
+BUILT_FILES= # built executables should be added here
+FILES=$(TENV) $(METADATA) runtest.sh Makefile
+
+build: $(BUILT_FILES)
+	chmod a+x ./runtest.sh
+
+clean:
+	rm -f .*.swp *~ $(BUILT_FILES)
+
+run: $(FILES) build
+	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
+. /usr/share/beakerlib/beakerlib.sh; \
+. runtest.sh )
+
+-include /usr/share/rhts/lib/rhts-make.include
+# Generate the testinfo.desc here:
+$(METADATA): Makefile
+	@touch $(METADATA)
+	@echo "Owner:        Nicol TAO<ztao@redhat.com>" > $(METADATA)
+	@echo "Name:         $(TEST)" >> $(METADATA)
+	@echo "Path:         $(TEST_DIR)"	>> $(METADATA)
+	@echo "TestVersion:  $(TESTVERSION)"	>> $(METADATA)
+	@echo "Description:  nfs general mount options supported by all nfs versions" >> $(METADATA)
+	@echo "TestTime:     45m" >> $(METADATA)
+	@echo "RunFor:       $(PACKAGE_NAME)" >> $(METADATA)
+	@echo "RunFor:       nfs-utils" >> $(METADATA)
+	@echo "Requires:     $(PACKAGE_NAME)" >> $(METADATA)
+	@echo "Requires:     library(kernel/base)" >> $(METADATA)
+	@echo "Requires:     nfs-utils" >> $(METADATA)
+	@echo "RhtsRequires: library(kernel/base)" >> $(METADATA)
+	@echo "Priority:     Medium" >> $(METADATA)
+	@echo "Type:         Regression" >> $(METADATA)
+	@echo "License:      GPL" >> $(METADATA)
diff --git a/tests/systemd-nfs/Makefile b/tests/systemd-nfs/Makefile
new file mode 100644
index 0000000..111c1fc
--- /dev/null
+++ b/tests/systemd-nfs/Makefile
@@ -0,0 +1,74 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: test for: nfs
+#   Author: Jianhong Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2014 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#Generate and export TEST= PACKAGE=
+TENV=_env
+ifeq ($(PKG_TOP_DIR),)
+    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    export _TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    -include $(PKG_TOP_DIR)/env.mk
+endif
+include $(TENV)
+ifeq ($(_TOP_DIR),)
+    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
+endif
+#===============================================================================
+export TESTVERSION=1.0
+
+BUILT_FILES=
+FILES=$(TENV) $(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
+. /usr/share/beakerlib/beakerlib.sh || exit 1; \
+. runtest.sh )
+
+build: $(BUILT_FILES)
+	test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+	rm -f *~ $(BUILT_FILES)
+
+-include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+	@echo "Owner:           Jianhong Yin <jiyin@redhat.com>" > $(METADATA)
+	@echo "Name:            $(TEST)" >> $(METADATA)
+	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)
+	@echo "Path:            $(TEST_DIR)" >> $(METADATA)
+	@echo "Description:     test for: nfs" >> $(METADATA)
+	@echo "Type:            regression" >> $(METADATA)
+	@echo "Type:            $(PACKAGE)-level-tier1" >> $(METADATA)
+	@echo "TestTime:        30m" >> $(METADATA)
+	@echo "RunFor:          $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        $(PACKAGE)" >> $(METADATA)
+	@echo "Priority:        Normal" >> $(METADATA)
+	@echo "License:         GPLv2" >> $(METADATA)
+	@echo "Requires:	nfs-utils" >> $(METADATA)
+	@echo "RhtsRequires:	library(kernel/base)" >> $(METADATA)
+	rhts-lint $(METADATA)
diff --git a/tests/systemd-nfs/runtest.sh b/tests/systemd-nfs/runtest.sh
old mode 100755
new mode 100644
index 63d8593..ec2d219
--- a/tests/systemd-nfs/runtest.sh
+++ b/tests/systemd-nfs/runtest.sh
@@ -1,40 +1,44 @@
 #!/bin/bash
 # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
 #   Description: test for: nfs
 #   Author: Jianhong Yin <jiyin@redhat.com>
-#
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 #
 #   Copyright (c) 2014 Red Hat, Inc.
 #
-#   This program is free software: you can redistribute it and/or
-#   modify it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation, either version 2 of
-#   the License, or (at your option) any later version.
+#   This copyrighted material is made available to anyone wishing
+#   to use, modify, copy, or redistribute it subject to the terms
+#   and conditions of the GNU General Public License version 2.
 #
 #   This program is distributed in the hope that it will be
 #   useful, but WITHOUT ANY WARRANTY; without even the implied
 #   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-#   PURPOSE.  See the GNU General Public License for more details.
+#   PURPOSE. See the GNU General Public License for more details.
 #
-#   You should have received a copy of the GNU General Public License
-#   along with this program. If not, see http://www.gnu.org/licenses/.
+#   You should have received a copy of the GNU General Public
+#   License along with this program; if not, write to the Free
+#   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+#   Boston, MA 02110-1301, USA.
 #
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 [ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
 . /usr/share/beakerlib/beakerlib.sh || exit 1
 
+# Load beakerlib you needed
+rlImport kernel/base
+envinfo
+#disable_avc_check
 #===============================================================================
 
 #signal trap
 trap "cleanup" SIGINT SIGTERM SIGHUP SIGQUIT
 cleanup() {
 	rlFileRestore
-	run 'service_nfsconfig restart'
-	#rm -rf $expdir $nfsmp
+	run 'service_nfs restart'
+	run 'service_nfsconfig status &>/dev/null && service_nfsconfig restart' -
+	run 'userdel -rf testuserqa' -
 }
 
 #global var define
@@ -47,135 +51,152 @@ rpm -q systemd || {
 
 rlJournalStart
     rlPhaseStartSetup do-Setup-
-    # Load beakerlib you needed
-    rlImport kernel/base
-    envinfo
 	rlFileBackup /etc/exports /etc/sysconfig/nfs
 	run 'echo "/usr/share *(ro)" >/etc/exports'
-	run 'echo "RPCNFSDARGS=8" >/etc/sysconfig/nfs' 0  "avoid invalid config file"
-	run 'service_nfsconfig restart' 0  "RHEL-7.1 or later need restart nfs-config to reload /etc/sysconfig/nfs"
+	run 'echo "" > /etc/sysconfig/nfs' 0  "avoid invalid config file"
+	# If in RHEL-7.1 or later need restart nfs-config service to flush /etc/sysconfig/nfs to /run/sysconfig/nfs-utils
+	# But since RHEL-7.3, nfs-config change to be ru-run during the dependent service starting
+	run 'service_nfsconfig status &>/dev/null && service_nfsconfig restart' -
 	run "useradd testuserqa" -
     rlPhaseEnd
 
     rlPhaseStartTest do-Test-start
-	run "service_$serv start" 0 "Service must start without problem"
-	run "service_$serv status" 0 "Then Status command"
-	run "service_$serv start" 0 "Already started service"
-	run "service_$serv status" 0 "Again status command"
+	run "service_nfs start" 0 "Service must start without problem"
+	run "service_nfs status" 0 "Then Status command"
+	run "service_nfs start" 0 "Already started service"
+	run "service_nfs status" 0 "Again status command"
     rlPhaseEnd
 
     rlPhaseStartTest do-Test-restart
-	run "service_$serv restart" 0 "Restarting of service"
-	run "service_$serv status" 0 "Status command"
+	run "service_nfs restart" 0 "Restarting of service"
+	run "service_nfs status" 0 "Status command"
     rlPhaseEnd
 
     rlPhaseStartTest do-Test-stop
-	run "service_$serv stop" 0 "Stopping service"
-	run "service_$serv status" 3 "Status of stopped service"
-	run "service_$serv stop" 0 "Stopping service again"
-	run "service_$serv status" 3 "Status of stopped service"
+	run "service_nfs stop" 0 "Stopping service"
+	run "service_nfs status" 3 "Status of stopped service"
+	run "service_nfs stop" 0 "Stopping service again"
+	run "service_nfs status" 3 "Status of stopped service"
     rlPhaseEnd
 
     rlPhaseStartTest do-Test-"insufficient-rights"
-	run "service_$serv restart " 0 "Starting service for restarting under nonpriv user"
-	run "su testuserqa -c 'service_$serv stop'" 1,4 "Insufficient rights, stopping service under nonprivileged user must fail"
-	run "su testuserqa -c 'service_$serv start'" 0,1,4 "Insufficient rights, starting service under nonprivileged user must fail or pass as already started"
-	run "su testuserqa -c 'service_$serv status'" 0 "Sufficient rights, service status should be accessible to nonprivileged users"
-	run "service_$serv stop" 0 "Stopping service for starting under nonpriv user"
-	run "su testuserqa -c 'service_$serv start'" 1,4 "Insufficient rights, starting of stopped service under nonprivileged user must fail"
+	run "service_nfs restart " 0 "Starting service for restarting under nonpriv user"
+	run "su testuserqa -c 'service_nfs stop'" 1,4 "Insufficient rights, stopping service under nonprivileged user must fail"
+	run "su testuserqa -c 'service_nfs start'" 0,1,4 "Insufficient rights, starting service under nonprivileged user must fail or pass as already started"
+	run "su testuserqa -c 'service_nfs status'" 0 "Sufficient rights, service status should be accessible to nonprivileged users"
+	run "service_nfs stop" 0 "Stopping service for starting under nonpriv user"
+	run "su testuserqa -c 'service_nfs start'" 1,4 "Insufficient rights, starting of stopped service under nonprivileged user must fail"
     rlPhaseEnd
 
     rlPhaseStartTest do-Test-"operations"
-	run "service_$serv start" 0 "Service have to implement start function"
-	run 'sleep 5' 0  "sleep a while avoid the start rate limit"
-	run "service_$serv restart" 0 "Service have to implement restart function"
-	run "service_$serv status" 0 "Service have to implement status function"
-	run 'sleep 5' 0  "sleep a while avoid the start rate limit"
-	run "service_$serv condrestart" 0 "Service have to implement condrestart function"
+	run "service_nfs start" 0 "Service have to implement start function"
+	run 'sleep 5' 0  "sleep a while avoid the start rate limit, bz1160506"
+	run "service_nfs restart" 0 "Service have to implement restart function"
+	run "service_nfs status" 0 "Service have to implement status function"
+	run 'sleep 5' 0  "sleep a while avoid the start rate limit, bz1160506"
+	run "service_nfs condrestart" 0 "Service have to implement condrestart function"
 	[ $? != 0 ] && run "journalctl -xn" -
-	run 'sleep 5' 0  "sleep a while avoid the start rate limit"
-	run "service_$serv try-restart" 0 "Service have to implement try-restart function"
+	run 'sleep 5' 0  "sleep a while avoid the start rate limit, bz1160506"
+	run "service_nfs try-restart" 0 "Service have to implement try-restart function"
 	[ $? != 0 ] && run "journalctl -xn" -
-	run "service_$serv reload" 0 "Service have to implement reload function"
+	run "service_nfs reload" 0 "Service have to implement reload function"
 	[ $? != 0 ] && run "journalctl -xn" -
-	run "service_$serv force-reload" 0 "Service have to implement force-reload function"
+	run "service_nfs force-reload" 0 "Service have to implement force-reload function"
 	[ $? != 0 ] && run "journalctl -xn" -
-	run "service_$serv noexistop" 2 "Testing proper return code when nonexisting function"
+	run "service_nfs noexistop" 2 "Testing proper return code when nonexisting function"
     rlPhaseEnd
 
     # Should do nothing if a service is already stopped or not running (according to manpage of systemctl)
     # http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic.html#INISCRPTACT
     rlPhaseStartTest do-Test-"operations-stopped"
-	run "service_$serv stop" 0 "Service have to implement stop function"
-	run "service_$serv condrestart" 0 "Service have to implement condrestart function"
-	run "service_$serv try-restart" 0 "Service have to implement try-restart function"
-	run "service_$serv force-reload" 0 "Service have to implement force-reload function"
-	run "service_$serv status" 3 "Above oprations should do nothing if service are not running"
+	run "service_nfs stop" 0 "Service have to implement stop function"
+	run "service_nfs condrestart" 0 "Service have to implement condrestart function"
+	run "service_nfs try-restart" 0 "Service have to implement try-restart function"
+	run "service_nfs force-reload" 0 "Service have to implement force-reload function"
+	run "service_nfs status" 3 "Above oprations should do nothing if service are not running"
     rlPhaseEnd
 
     rlPhaseStartTest do-Test-enable-disable-$serv
 	if systemctl --quiet is-enabled $serv; then
 		run "systemctl disable $serv" 0 "Disable service on boot"
 		run "systemctl is-enabled $serv" 1 "Check whether service is disabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "test `systemctl is-enabled nfs-server` = disabled"
 		run "systemctl enable $serv" 0 "Enable service on boot"
 		run "systemctl is-enabled $serv" 0 "Check whether service is enabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "test `systemctl is-enabled nfs-server` = enabled"
 	else
 		run "systemctl enable $serv" 0 "Enable service on boot"
 		run "systemctl is-enabled $serv" 0 "Check whether service is enabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "test `systemctl is-enabled nfs-server` = enabled"
 		run "systemctl disable $serv" 0 "Disable service on boot"
 		run "systemctl is-enabled $serv" 1 "Check whether service is disabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "test `systemctl is-enabled nfs-server` = disabled"
 	fi
     rlPhaseEnd
 
-    # ystemctl enable fails for symlinks in /usr/lib/systemd/system
+    # As Bug 1159308 - systemctl enable fails for symlinks in /usr/lib/systemd/system
     # Use a workaround to test enable/disable with nfs-server.service
-    rlPhaseStartTest do-Test-enable-disable-nfs-server
+    if [ -f /usr/lib/systemd/system/nfs.service ]; then
+    rlPhaseStartTest do-Test-enable-disable-nfs-symlinks
 	if systemctl --quiet is-enabled nfs-server; then
-		run "systemctl disable nfs-server" 0 "Disable nfs-serverice on boot"
-		run "systemctl is-enabled nfs-server" 1 "Check whether nfs-serverice is disabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
-		run "systemctl enable nfs-server" 0 "Enable nfs-serverice on boot"
-		run "systemctl is-enabled nfs-server" 0 "Check whether nfs-serverice is enabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "systemctl disable nfs" 0 "Disable nfs on boot"
+		run "systemctl is-enabled nfs" 1 "Check whether nfs is disabled"
+		run "test `systemctl is-enabled nfs` = `systemctl is-enabled nfs-server`"
+		run "systemctl enable nfs" 0 "Enable nfs on boot"
+		run "systemctl is-enabled nfs" 0 "Check whether nfs is enabled"
+		run "test `systemctl is-enabled nfs` = `systemctl is-enabled nfs-server`"
 	else
-		run "systemctl enable nfs-server" 0 "Enable nfs-serverice on boot"
-		run "systemctl is-enabled nfs-server" 0 "Check whether nfs-serverice is enabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
-		run "systemctl disable nfs-server" 0 "Disable nfs-serverice on boot"
-		run "systemctl is-enabled nfs-server" 1 "Check whether nfs-serverice is disabled"
-		run "test `systemctl is-enabled nfs-server` = `systemctl is-enabled nfs`"
+		run "systemctl enable nfs" 0 "Enable nfs on boot"
+		run "systemctl is-enabled nfs" 0 "Check whether nfs is enabled"
+		run "test `systemctl is-enabled nfs` = `systemctl is-enabled nfs-server`"
+		run "systemctl disable nfs" 0 "Disable nfs on boot"
+		run "systemctl is-enabled nfs" 1 "Check whether nfs is disabled"
+		run "test `systemctl is-enabled nfs` = `systemctl is-enabled nfs-server`"
 	fi
     rlPhaseEnd
+    fi
 
-    rlPhaseStartTest do-Test-nfsv4-only
-	run 'service nfs stop'
+    rlPhaseStartTest do-Test-bz641291-nfsv4-only
+	run 'service_nfs stop'
+	run 'cp /etc/sysconfig/nfs /etc/sysconfig/nfs.backup'
 	# MOUNTD_NFS_V2 MOUNTD_NFS_V3 was not supported in RHEL-7.x
-	run 'echo -e "RPCMOUNTDOPTS=\"-N 2 -N 3\"" >>/etc/sysconfig/nfs' 0  "enabling nfsv4 only"
-	# If in RHEL-7.1 or later need restart nfs-config service to flush /etc/sysconfig/nfs to /run/sysconfig/nfs-utils
-	# But since RHEL-7.3, nfs-config change to be ru-run during the dependent service starting
+	run 'echo "RPCMOUNTDOPTS=\"-N 2 -N 3\"" > /etc/sysconfig/nfs' 0 "disabling mountd v2/v3"
 	run 'service_nfsconfig status &>/dev/null && service_nfsconfig restart' -
-	run 'cat /run/sysconfig/nfs-utils | grep RPCMOUNTDARGS | grep "\""' 0  "quote variable in /run/sysconfig/nfs-utils"
 	run 'sleep 5' 0  "sleep a while avoid service script bug"
 	run 'service_nfs start'
+	[ -f /run/sysconfig/nfs-utils ] && \
+	    run 'cat /run/sysconfig/nfs-utils | grep RPCMOUNTDARGS | grep "\""' 0  "bz1175160 quote variable in /run/sysconfig/nfs-utils"
 	run 'rpcinfo -s | grep -w mountd' 1 "if nfsv4 only, no mountd info in rpcinfo"
-	rlFileRestore /etc/sysconfig/nfs
-	run 'service_nfsconfig restart'
+	# we allow running V4-only nfsd without rpcbind
+	log "{Info} bz1433390 nfsd startup won't delay in absence of rpcbind"
+	run 'echo "RPCNFSDARGS=\"-N 2 -N 3\"" >>/etc/sysconfig/nfs' 0 "disabling nfsd v2/v3"
+	run 'service_nfsconfig status &>/dev/null && service_nfsconfig restart' -
+	run 'service_nfs restart'
+	[ -f /run/sysconfig/nfs-utils ] && \
+	    run 'cat /run/sysconfig/nfs-utils | grep RPCNFSDARGS' -
+	run 'rpcinfo -s | grep -w nfs'
+	run 'service_nfs stop'
+	run 'service rpcbind stop'
+	run 'systemctl mask rpcbind' 0 "Mask systemd service rpcbind.service"
+	run 'timeLimitRun 10 service_nfs start' 0 "nfs should come up successfully without rpcbind"
+	run 'service_nfs status'
+	run 'systemctl unmask rpcbind'
+	run 'timeLimitRun 10 service_nfs stop'
+	run 'mv /etc/sysconfig/nfs.backup /etc/sysconfig/nfs'
+	run 'service_nfsconfig status &>/dev/null && service_nfsconfig restart' -
     rlPhaseEnd
 
+    # Accoring to https://bugzilla.redhat.com/show_bug.cgi?id=1126073#c29
     # Since nfs-service no longer starts the daemons in question. They are now split
     # into their own services (nfs-mountd.service, rpc-statd.service, nfs-idmapd.service).
     # Then `systemctl status nfs-server.service` cannot accurately reflect the
     # state of the combination of daemons that are needed for a working NFS server.
-    rlPhaseStartTest do-Test-"nfs-server-is-active-even-processes-terminated"
+    rlPhaseStartTest do-Test-"bz1126073-nfs-server-is-active-even-processes-terminated"
 	run 'service_nfs restart'
 	run 'pkill rpc.mountd' -
 	run 'killall -9 nfsd' -
 	run 'ps axf | grep -e "rpc.mountd" -e "nfsd"' -
-	run 'service nfs-mountd status' 1-255
+	run 'service_nfs-mountd status' 1-255
 	run 'rpcinfo -t localhost 100005' 1 "pings mountd"
 	log '{Info} nfsserver resource agent has been updated to monitor all its daemons'
 	run 'service_nfs status' 1-255,0
@@ -183,7 +204,7 @@ rlJournalStart
 	run 'service_nfs stop'
     rlPhaseEnd
 
-    rlPhaseStartTest do-Test-"should-auto-mount-/proc/fs/nfsd"
+    rlPhaseStartTest do-Test-"bz1010634-should-auto-mount-/proc/fs/nfsd"
 	run 'service_nfs restart'
 	run 'service_nfs stop'
 	run 'umount /proc/fs/nfsd'
@@ -191,95 +212,90 @@ rlJournalStart
 	run 'mount -t nfsd nfsd /proc/fs/nfsd' -
     rlPhaseEnd
 
-    rlPhaseStartTest do-Test-"use-rpcbind.service-in-nfs-server.service"
+    rlPhaseStartTest do-Test-"bz1171603-use-rpcbind.service-in-nfs-server.service"
 	run "systemctl reset-failed" 0 "workaround for failure of starting too often"
 	log "{Info} Starting nfs while rpcbind is stopped"
-	run "service rpcbind stop; service rpcbind stop" 0 "stop twice as workaround"
+	run "service rpcbind stop; service rpcbind stop" 0 "stop twice as workaround for bug 1257129"
 	run "service rpcbind status" 3 "rpcbind.service should be stopped"
-	run "service nfs restart"
-	run "service nfs status" 0 "should start nfs successfully"
+	run "service_nfs restart"
+	run "service_nfs status" 0 "should start nfs successfully"
 	run "service rpcbind status" 0 "starting nfs should bring rpcbind up"
 
 	log "{Info} Starting nfs while rpcbind is active"
 	run "service rpcbind start"
 	run "service rpcbind status" 0 "rpcbind should be active"
-	run "service nfs restart"
-	run "service nfs status" 0 "should start nfs successfully"
+	run "service_nfs restart"
+	run "service_nfs status" 0 "should start nfs successfully"
 	run "service rpcbind status" 0 "starting nfs should keep rpcbind up"
 
 	log "{Info} Stopping nfs while rpcbind is active"
 	run "service rpcbind start"
 	run "service rpcbind status" 0 "rpcbind should be active"
-	run "service nfs start; service nfs status"
-	run "service nfs stop; service nfs status" 3
+	run "service_nfs start; service_nfs status"
+	run "service_nfs stop; service_nfs status" 3
 	run "service rpcbind status" 0 "stopping nfs should keep rpcbind up"
 
 	log "{Info} Stopping nfs while rpcbind is stopped"
-	run "service nfs start" 0 "firstly start nfs since it can bring rpcbind up"
-	run "service nfs status" 0 "should start nfs successfully"
-	run "service rpcbind stop; service rpcbind stop" 0 "stop twice as workaround"
+	run "service_nfs start" 0 "firstly start nfs since it can bring rpcbind up"
+	run "service_nfs status" 0 "should start nfs successfully"
+	run "service rpcbind stop; service rpcbind stop" 0 "stop twice as workaround for bug 1257129"
 	run "service rpcbind status" 3 "rpcbind should be stopped"
-	run "service nfs stop"
+	run "service_nfs stop"
 	# If a daemon tries to connect to port 111 systemd will start rpcbind automaticly
+	# https://bugzilla.redhat.com/show_bug.cgi?id=1266993#c7
+	run "sleep 1" 0 "Wait a while for starting"
 	run "service rpcbind status" 0 "stopping nfs should bring rpcbind up"
     rlPhaseEnd
 
-    rlPhaseStartTest do-Test-"restarting rpbind also restart the the nfs server"
+    rlPhaseStartTest do-Test-bz1266993-"restarting rpbind also restart the the nfs server"
 	run "systemctl reset-failed" 0 "workaround for failure of starting too often"
 	log "{Info} Starting rpcbind while nfs is stopped"
-	run "service nfs stop"
-	run "service nfs status" 3 "nfs should be stopped"
+	run "service_nfs stop"
+	run "service_nfs status" 3 "nfs should be stopped"
 	run "service rpcbind restart"
-	run "service nfs status" 3 "starting rpcbind should NOT bring nfs up"
+	run "service_nfs status" 3 "starting rpcbind should NOT bring nfs up"
 
 	log "{Info} Starting rpcbind while nfs is active"
-	run "service nfs start"
-	run "service nfs status" 0 "nfs should be active"
+	run "service_nfs start"
+	run "service_nfs status" 0 "nfs should be active"
 	run "service rpcbind restart"
-	run "service nfs status" 0 "starting rpcbind should NOT interfere nfs"
+	run "service_nfs status" 0 "starting rpcbind should NOT interfere nfs"
 
 	log "{Info} Stopping rpcbind while nfs is active"
-	run "service nfs start"
-	run "service nfs status" 0 "nfs should be active"
+	run "service_nfs start"
+	run "service_nfs status" 0 "nfs should be active"
 	run "service rpcbind start; service rpcbind stop"
-	run "service nfs status" 0 "stopping rpcbind should NOT bring nfs down"
+	run "service_nfs status" 0 "stopping rpcbind should NOT bring nfs down"
 
 	log "{Info} Stopping rpcbind while nfs is stopped"
-	run "service nfs stop"
-	run "service nfs status" 3 "nfs should be stopped"
+	run "service_nfs stop"
+	run "service_nfs status" 3 "nfs should be stopped"
 	run "service rpcbind start; service rpcbind stop"
-	run "service nfs status" 3 "stopping rpcbind should NOT interfere nfs"
-    rlPhaseEnd
-
-    rlPhaseStartTest do-Test-fix-long-nfsd-startup-delay-in-absence-of-rpcbind
-	run "systemctl stop rpcbind"
-	run "systemctl stop nfs-server"
-	run "systemctl mask rpcbind" 0 "Mask systemd service rpcbind.service"
-	run "timeLimitRun 10 systemctl start nfs-server" 1-255 "Start service nfs-server without rpcbind will be failed due to systemd unit dependency"
-	run "systemctl unmask rpcbind"
-	run "timeLimitRun 10 systemctl stop nfs-server" -
+	run "service_nfs status" 3 "stopping rpcbind should NOT interfere nfs"
     rlPhaseEnd
 
-    rlPhaseStartTest do-Test-"nfs-utils need to cause gssproxy reload"
-        run "cp /etc/gssproxy/gssproxy.conf /etc/gssproxy/gssproxy.conf.backup" 0 "backuping"
-        run "echo '[gssproxy]' > /etc/gssproxy/gssproxy.conf"
-        run "echo 'debug = true' >> /etc/gssproxy/gssproxy.conf"
-        run "systemctl restart gssproxy"
-#FIXME when BZ#1535424 is fixed. Should not use /var/log/messages as it is not used on Fedora any more.
-        run "echo '' > /var/log/messages"
-        run "systemctl restart nfs"
-        run "systemctl status nfs"
-        run "systemctl status gssproxy"
-        run "cat /var/log/messages | grep 'gssproxy:'" -
-        run "cat /var/log/messages | grep -q 'gssproxy:.*loaded'" 0 "should re-reading config"
-        run "mv /etc/gssproxy/gssproxy.conf.backup /etc/gssproxy/gssproxy.conf" 0 "recovering"
-        run "systemctl restart gssproxy"
+    rlPhaseStartTest do-Test-"nfs-utils should reload gssproxy"
+	run "cp /etc/gssproxy/gssproxy.conf /etc/gssproxy/gssproxy.conf.backup" 0 "backuping"
+	run "echo '[gssproxy]' > /etc/gssproxy/gssproxy.conf"
+	run "echo 'debug = true' >> /etc/gssproxy/gssproxy.conf"
+	log "{Info} Check reloading when gssproxy is started"
+	run "systemctl restart gssproxy"
+	run "service_nfs restart"
+	run "systemctl status gssproxy -l"
+	run "systemctl status gssproxy -l | grep 'gssproxy\[[0-9]*\]' | grep -q 'New config loaded'" 0 "Should re-reading config"
+	run "systemctl status gssproxy -l | grep 'systemd\[[0-9]*\]' | grep -q 'Reloaded GSSAPI Proxy Daemon'" 0 "Should re-reading config"
+	log "{Info} Check reloading when gssproxy is stopped"
+	run "systemctl stop gssproxy"
+	run "service_nfs restart"
+	run "systemctl status gssproxy -l"
+	run "systemctl status gssproxy -l | grep 'gssproxy\[[0-9]*\]' | grep -q 'New config loaded'" 0 "Should re-reading config"
+	run "systemctl status gssproxy -l | grep 'systemd\[[0-9]*\]' | grep -q 'Reloaded GSSAPI Proxy Daemon'" 0 "Should re-reading config"
+	run "mv /etc/gssproxy/gssproxy.conf.backup /etc/gssproxy/gssproxy.conf" 0 "recovering"
+	run "systemctl restart gssproxy"
     rlPhaseEnd
 
     rlPhaseStartCleanup do-Cleanup-
-	run "userdel -rf testuserqa" -
-	rlFileRestore
-	run 'timeLimitRun 10 service_nfsconfig restart'
+	cleanup
     rlPhaseEnd
 
 rlJournalEnd
diff --git a/tests/umount/Makefile b/tests/umount/Makefile
new file mode 100644
index 0000000..4e4da65
--- /dev/null
+++ b/tests/umount/Makefile
@@ -0,0 +1,79 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Description: Test for command umount.nfs{,4}
+#   Author: Stevens Yin <jiyin@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   Copyright (c) 2013 Red Hat, Inc.
+#
+#   This program is free software: you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation, either version 2 of
+#   the License, or (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+#   PURPOSE.  See the GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TENV=_env
+ifeq ($(PKG_TOP_DIR),)
+    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    export _TOP_DIR := $(shell p=$$PWD; while :; do \
+        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
+    -include $(PKG_TOP_DIR)/env.mk
+endif
+include $(TENV)
+ifeq ($(_TOP_DIR),)
+    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
+endif
+#===============================================================================
+
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(TENV) $(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
+. /usr/share/beakerlib/beakerlib.sh; \
+. runtest.sh )
+
+build: $(BUILT_FILES)
+	test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+	rm -f *~ $(BUILT_FILES)
+
+
+-include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+	@echo "Owner:           Stevens Yin <jiyin@redhat.com>" > $(METADATA)
+	@echo "Name:            $(TEST)" >> $(METADATA)
+	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)
+	@echo "Path:            $(TEST_DIR)" >> $(METADATA)
+	@echo "Description:     Test for command umount.nfs{,4}" >> $(METADATA)
+	@echo "Type:            Regression" >> $(METADATA)
+	@echo "TestTime:        30m" >> $(METADATA)
+	@echo "RunFor:          $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        $(PACKAGE)" >> $(METADATA)
+	@echo "Requires:        library(kernel/base)" >> $(METADATA)
+	@echo "RhtsRequires:    library(kernel/base)" >> $(METADATA)
+	@echo "Priority:        Normal" >> $(METADATA)
+	@echo "License:         GPLv2" >> $(METADATA)
+	@echo "Confidential:    no" >> $(METADATA)
+	@echo "Destructive:     no" >> $(METADATA)
+
+	rhts-lint $(METADATA)
+

From ae009836a573c8b55e55d9504bf72d63800d83e4 Mon Sep 17 00:00:00 2001
From: Bruno Goncalves <bgoncalv@redhat.com>
Date: Jan 21 2019 10:57:57 +0000
Subject: [PATCH 4/6] fix ipv6 test on export-mount-local


---

diff --git a/tests/export-mount-local/runtest.sh b/tests/export-mount-local/runtest.sh
index 60d0c90..29a351a 100755
--- a/tests/export-mount-local/runtest.sh
+++ b/tests/export-mount-local/runtest.sh
@@ -48,7 +48,8 @@ subexpdir=/exportDir-$BZ/sub
 tmpnfsmp=${nfsmp}-tmp
 
 read ipv4 _nil <<<$(getDefaultIp)
-read ipv6s _nil <<<$(getDefaultIp 6)
+#read ipv6s _nil <<<$(getDefaultIp 6)
+ipv6s=::1
 ipv6="[$ipv6s]"
 # in case "localhost.localdomain"
 if echo "$HOSTNAME" | grep -q "localhost"; then

From 2371443256b25b8d6088788f791284caa012df11 Mon Sep 17 00:00:00 2001
From: Bruno Goncalves <bgoncalv@redhat.com>
Date: Jan 21 2019 15:26:27 +0000
Subject: [PATCH 5/6] add nic name to ipv6 addr


---

diff --git a/tests/export-mount-local/runtest.sh b/tests/export-mount-local/runtest.sh
index 29a351a..eeb5dde 100755
--- a/tests/export-mount-local/runtest.sh
+++ b/tests/export-mount-local/runtest.sh
@@ -47,9 +47,9 @@ nfsmp=/mnt/nfsmp-$BZ
 subexpdir=/exportDir-$BZ/sub
 tmpnfsmp=${nfsmp}-tmp
 
+read default_nic <<<$(getDefaultNic)
 read ipv4 _nil <<<$(getDefaultIp)
-#read ipv6s _nil <<<$(getDefaultIp 6)
-ipv6s=::1
+read ipv6s _nil <<<$(getDefaultIp 6nfs)
 ipv6="[$ipv6s]"
 # in case "localhost.localdomain"
 if echo "$HOSTNAME" | grep -q "localhost"; then

From 9ba8cf83a319c5894f342e931e94ce61a7c89b88 Mon Sep 17 00:00:00 2001
From: Bruno Goncalves <bgoncalv@redhat.com>
Date: Jan 23 2019 08:04:16 +0000
Subject: [PATCH 6/6] drop export-mount-local test case and add gating file


---

diff --git a/gating.yaml b/gating.yaml
new file mode 100644
index 0000000..6985029
--- /dev/null
+++ b/gating.yaml
@@ -0,0 +1,6 @@
+--- !Policy
+product_versions:
+  - rhel-8
+decision_context: osci_compose_gate
+rules:
+  - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
diff --git a/tests/export-mount-local/Makefile b/tests/export-mount-local/Makefile
deleted file mode 100644
index 6ddfa94..0000000
--- a/tests/export-mount-local/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#   Description: test for: export-mount
-#   Author: Jianhong Yin <jiyin@redhat.com>
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#   Copyright (c) 2014 Red Hat, Inc.
-#
-#   This program is free software: you can redistribute it and/or
-#   modify it under the terms of the GNU General Public License as
-#   published by the Free Software Foundation, either version 2 of
-#   the License, or (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be
-#   useful, but WITHOUT ANY WARRANTY; without even the implied
-#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-#   PURPOSE.  See the GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program. If not, see http://www.gnu.org/licenses/.
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-#Generate and export TEST= PACKAGE=
-TENV=_env
-ifeq ($(PKG_TOP_DIR),)
-    export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
-        [ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
-    export _TOP_DIR := $(shell p=$$PWD; while :; do \
-        [ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
-    -include $(PKG_TOP_DIR)/env.mk
-endif
-include $(TENV)
-ifeq ($(_TOP_DIR),)
-    _TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
-endif
-#===============================================================================
-export TESTVERSION=1.0
-
-BUILT_FILES=
-FILES=$(TENV) $(METADATA) runtest.sh Makefile PURPOSE
-
-.PHONY: all install download clean
-
-run: $(FILES) build
-	( set +o posix; [ -e /usr/bin/rhts_environment.sh ] && . /usr/bin/rhts_environment.sh; \
-. /usr/share/beakerlib/beakerlib.sh || exit 1; \
-. runtest.sh )
-
-build: $(BUILT_FILES)
-	test -x runtest.sh || chmod a+x runtest.sh
-
-clean:
-	rm -f *~ $(BUILT_FILES)
-
--include /usr/share/rhts/lib/rhts-make.include
-
-$(METADATA): Makefile
-	@echo "Owner:           Jianhong Yin <jiyin@redhat.com>" > $(METADATA)
-	@echo "Name:            $(TEST)" >> $(METADATA)
-	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)
-	@echo "Path:            $(TEST_DIR)" >> $(METADATA)
-	@echo "Description:     test for: export-mount" >> $(METADATA)
-	@echo "Type:            function" >> $(METADATA)
-	@echo "Type:            $(PACKAGE)-level-tier1" >> $(METADATA)
-	@echo "TestTime:        30m" >> $(METADATA)
-	@echo "RunFor:          $(PACKAGE)" >> $(METADATA)
-	@echo "Requires:        $(PACKAGE)" >> $(METADATA)
-	@echo "Priority:        Normal" >> $(METADATA)
-	@echo "License:         GPLv2" >> $(METADATA)
-	@echo "Requires:	library(kernel/base)" >> $(METADATA)
-	@echo "Requires:	nfs-utils" >> $(METADATA)
-	@echo "Requires:	bind-utils" >> $(METADATA)
-	@echo "RhtsRequires:	library(kernel/base)" >> $(METADATA)
-	rhts-lint $(METADATA)
diff --git a/tests/export-mount-local/PURPOSE b/tests/export-mount-local/PURPOSE
deleted file mode 100644
index 556df42..0000000
--- a/tests/export-mount-local/PURPOSE
+++ /dev/null
@@ -1 +0,0 @@
-# nothing
diff --git a/tests/export-mount-local/_env b/tests/export-mount-local/_env
deleted file mode 100644
index 90b8e90..0000000
--- a/tests/export-mount-local/_env
+++ /dev/null
@@ -1,7 +0,0 @@
-export TOPLEVEL_NAMESPACE=nfs-utils
-export PKG_NAMESPACE=nfs-utils
-export RELATIVE_PATH=export-mount-local
-export PACKAGE=nfs-utils
-export PACKAGE_NAME=nfs-utils
-export PKG_LIST=nfs-utils nfs-utils-lib libnfsidmap libsss_idmap libtirpc rpcbind
-export TEST=/nfs-utils/export-mount-local
diff --git a/tests/export-mount-local/runtest.sh b/tests/export-mount-local/runtest.sh
deleted file mode 100755
index eeb5dde..0000000
--- a/tests/export-mount-local/runtest.sh
+++ /dev/null
@@ -1,343 +0,0 @@
-#!/bin/bash
-# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#   Description: test for: export-mount-local
-#   Author: Jianhong Yin <jiyin@redhat.com>
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#   Copyright (c) 2014 Red Hat, Inc.
-#
-#   This copyrighted material is made available to anyone wishing
-#   to use, modify, copy, or redistribute it subject to the terms
-#   and conditions of the GNU General Public License version 2.
-#
-#   This program is distributed in the hope that it will be
-#   useful, but WITHOUT ANY WARRANTY; without even the implied
-#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-#   PURPOSE. See the GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public
-#   License along with this program; if not, write to the Free
-#   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-#   Boston, MA 02110-1301, USA.
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
-. /usr/share/beakerlib/beakerlib.sh || exit 1
-
-# Load beakerlib you needed
-rlImport kernel/base
-envinfo
-#disable_avc_check
-
-#===============================================================================
-
-#signal trap
-trap "cleanup" SIGINT SIGTERM SIGHUP SIGQUIT
-cleanup() {
-        rlFileRestore
-        rm -rf $expdir $nfsmp
-}
-
-#global var define
-BZ=exp-mount-local
-expdir=/exportDir-$BZ
-nfsmp=/mnt/nfsmp-$BZ
-subexpdir=/exportDir-$BZ/sub
-tmpnfsmp=${nfsmp}-tmp
-
-read default_nic <<<$(getDefaultNic)
-read ipv4 _nil <<<$(getDefaultIp)
-read ipv6s _nil <<<$(getDefaultIp 6nfs)
-ipv6="[$ipv6s]"
-# in case "localhost.localdomain"
-if echo "$HOSTNAME" | grep -q "localhost"; then
-    ORIGINAL_HOSTNAME="$HOSTNAME"
-    HOSTNAME="$BZ"
-    hostnamectl set-hostname "$HOSTNAME"
-fi
-host="$HOSTNAME"
-
-rlJournalStart
-    rlPhaseStartSetup do-Setup-
-        rlFileBackup /etc/{exports,auto.master} /etc/sysconfig/{nfs,autofs} /etc/nfs.conf /etc/hosts
-        if [ -n "ORIGINAL_HOSTNAME" ]; then
-            run "echo '$ipv4 $host' >> /etc/hosts"
-            run "echo '$ipv6s $host' >> /etc/hosts"
-            run "cat /etc/hosts" -
-        fi
-        run "rm -rf $expdir $nfsmp && mkdir -p $expdir $nfsmp"
-        run "rm -rf $subexpdir $tmpnfsmp && mkdir -p $subexpdir $tmpnfsmp"
-        run "service_nfs restart"
-        run "ls_nfsvers"
-    rlPhaseEnd
-
-    for V in $(ls_nfsvers); do
-        # export by IPv4 and try to mount it
-        rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv4
-            run "exportfs -au && exportfs -iv $ipv4:$expdir -o ro,sync,no_root_squash"
-            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
-            run "umount $nfsmp"
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-ipv6-x
-            if [ -n "$ipv6s" ]; then
-                run "mount -o vers=$V $ipv6:$expdir $nfsmp" 1-255
-                [ $? = 0 ] && run "umount $nfsmp"
-            fi
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-ipv4-mount-host-bz876847
-            run "mount -o vers=$V $host:$expdir $nfsmp"
-            run "umount $nfsmp"
-        rlPhaseEnd
-
-        if [ -n "$ipv6s" ]; then
-            # export by IPv6 and try to mount it
-            rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv6
-                run "exportfs -au && exportfs -iv $ipv6:$expdir -o ro,sync,no_root_squash"
-                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
-                run "umount $nfsmp"
-            rlPhaseEnd
-            rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-ipv4-x
-                run "mount -o vers=$V $ipv4:$expdir $nfsmp" 1-255
-                [ $? = 0 ] && run "umount $nfsmp"
-            rlPhaseEnd
-            rlPhaseStartTest do-Test-nfsV$V-exp-ipv6-mount-host
-                run "dig -t aaaa $HOSTNAME +short" 0 "To get the IPv6 address"
-                if [ -n "$ipv6s" ]; then
-                    run "mount -o vers=$V $host:$expdir $nfsmp"
-                    run "umount $nfsmp"
-                fi
-            rlPhaseEnd
-        fi
-
-        # export by hostname and try to mount it
-        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-host
-            run "exportfs -au && exportfs -iv $host:$expdir -o ro,sync,no_root_squash"
-            run "mount -o vers=$V $host:$expdir $nfsmp"
-            run "umount $nfsmp"
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv4
-            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
-            run "umount $nfsmp"
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-host-mount-ipv6
-            run "dig -t aaaa $HOSTNAME +short" 0 "To get the IPv6 address"
-            if [ -n "$ipv6s" ]; then
-                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
-                run "umount $nfsmp"
-            fi
-        rlPhaseEnd
-
-        # export sub-directory by IPv4 and try to mount it
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv4
-            run "echo '$expdir *(ro,sync,no_root_squash)' >/etc/exports"
-            run "echo '$subexpdir $ipv4(ro,sync,no_root_squash)' >>/etc/exports"
-            which systemctl >/dev/null 2>&1 && run "systemctl reset-failed"
-            run "service_nfs restart"
-            run "showmount -e" -
-            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
-            run "mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp"
-            run "umount $nfsmp $tmpnfsmp"
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-ipv6-x-bz1198900
-            if [ -n "$ipv6s" ]; then
-                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
-                run "mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp" 1-255 "bz1198900 should not mount sub-directory with different ip"
-                [ $? = 0 ] && run "umount $tmpnfsmp"
-                run "umount $nfsmp"
-            fi
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv4-mount-host
-            run "mount -o vers=$V $host:$expdir $nfsmp"
-            run "mount -o vers=$V $host:$subexpdir $tmpnfsmp"
-            run "umount $nfsmp $tmpnfsmp"
-        rlPhaseEnd
-
-        if [ -n "$ipv6s" ]; then
-            # export sub-directory by IPv6 and try to mount it
-            rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv4-x-bz1198900
-                run "echo '$expdir *(ro,sync,no_root_squash)' >/etc/exports"
-                run "echo '$subexpdir $ipv6s(ro,sync,no_root_squash)' >>/etc/exports"
-                which systemctl >/dev/null 2>&1 && run "systemctl reset-failed"
-                run "service_nfs restart"
-                run "showmount -e" -
-                run "mount -o vers=$V $ipv4:$expdir $nfsmp"
-                run "mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp" 1-255 "bz1198900 should not mount sub-directory with different ip"
-                [ $? = 0 ] && run "umount $tmpnfsmp"
-                run "umount $nfsmp"
-            rlPhaseEnd
-            rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-ipv6
-                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
-                run "mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp"
-                run "umount $nfsmp $tmpnfsmp"
-            rlPhaseEnd
-            rlPhaseStartTest do-Test-nfsV$V-exp-sub-ipv6-mount-host
-                run "mount -o vers=$V $host:$expdir $nfsmp"
-                run "mount -o vers=$V $host:$subexpdir $tmpnfsmp"
-                run "umount $nfsmp $tmpnfsmp"
-            rlPhaseEnd
-        fi
-
-        # export sub-directory by hostname and try to mount it
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv4
-            run "echo '$expdir *(ro,sync,no_root_squash)' >/etc/exports"
-            run "echo '$subexpdir $host(ro,sync,no_root_squash)' >>/etc/exports"
-            which systemctl >/dev/null 2>&1 && run "systemctl reset-failed"
-            run "service_nfs restart"
-            run "showmount -e" -
-            run "mount -o vers=$V $ipv4:$expdir $nfsmp"
-            run "mount -o vers=$V $ipv4:$subexpdir $tmpnfsmp"
-            run "umount $nfsmp $tmpnfsmp"
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-ipv6
-            if [ -n "$ipv6s" ]; then
-                run "mount -o vers=$V $ipv6:$expdir $nfsmp"
-                run "mount -o vers=$V $ipv6:$subexpdir $tmpnfsmp"
-                run "umount $nfsmp $tmpnfsmp"
-            fi
-        rlPhaseEnd
-        rlPhaseStartTest do-Test-nfsV$V-exp-sub-host-mount-host
-            run "mount -o vers=$V $host:$expdir $nfsmp"
-            run "mount -o vers=$V $host:$subexpdir $tmpnfsmp"
-            run "umount $nfsmp $tmpnfsmp"
-        rlPhaseEnd
-
-        rlPhaseStartTest do-Test-nfsV$V-default-option-overridden-by-client-specific-option
-            run "echo '$expdir -ro,sync *(rw,no_root_squash)' >/etc/exports"
-            run "service_nfs restart"
-            run "mount -o vers=$V $host:$expdir $nfsmp"
-            run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "exports option should be overridden by client specific."
-            run "rm -rf $nfsmp/test*"
-            run "umount $nfsmp"
-            run "echo '$expdir -ro,sec=sys,sync *(rw,no_root_squash)' >/etc/exports" 0 "sec=sys may cause it to be failed."
-            run "exportfs -rv"
-            run "mount -o vers=$V $host:$expdir $nfsmp"
-            run "touch $nfsmp/testfile && mkdir $nfsmp/testdir" 0 "bz1359042 exports option should be overridden by client specific."
-            run "rm -rf $nfsmp/test*"
-            run "umount $nfsmp"
-        rlPhaseEnd
-    done
-
-    rlPhaseStartTest do-Test-bz1479135-server-side-using-bind-mount
-        run "dd if=/dev/zero of=workspace.image bs=3M count=500"
-        run "mkfs -t ext3 -F workspace.image"
-        run "mkdir -p /workspace"
-        run "mount -o loop workspace.image /workspace"
-        run "mkdir -p /workspace/vmcore /srv/nfs/vmcore"
-        run "touch /workspace/work_dir /workspace/vmcore/vmcore_dir"
-        run "mount --bind /workspace/vmcore /srv/nfs/vmcore"
-        run "echo '/srv/nfs/vmcore *(rw,no_root_squash)' > /etc/exports"
-        run "echo '/workspace *(rw,no_root_squash)' >> /etc/exports"
-        run "service_nfs restart"
-        run "mount $host:/workspace $nfsmp"
-        run "ls $nfsmp/work_dir"
-        run "umount $nfsmp"
-        run "exportfs -au" && run "service_nfs stop"
-        run "umount /srv/nfs/vmcore"
-        run "umount /workspace"
-        run "rm -rf /workspace /srv/nfs/vmcore"
-        run "rm workspace.image"
-    rlPhaseEnd
-
-    rlPhaseStartTest do-Test-bz1465259-mount-nfsv4-show-wrong-port
-	run "echo '$expdir *(rw,no_root_squash)' > /etc/exports"
-	run "service_nfs restart"
-	run "exportfs -v"
-	run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp"
-	run "cat /proc/mounts | grep $nfsmp" -
-	run "cat /proc/mounts | grep $nfsmp | grep -q 'port='" 1 "Omit displaying 'port=' by default"
-	run "mount -o remount,ro $nfsmp"
-	run "cat /proc/mounts | grep $nfsmp" -
-	run "cat /proc/mounts | grep $nfsmp | grep -q 'port='" 1 "Omit displaying 'port=' by default"
-	run "umount $nfsmp"
-	if [ -e "/etc/nfs.conf" ]; then
-		echo "[nfsd]" > /etc/nfs.conf
-		echo "port=20050" >> /etc/nfs.conf
-		run "cat /etc/nfs.conf" -
-		run "service_nfs restart"
-		run "sleep 10"
-		run "rpcinfo -p | grep -w nfs | grep 20050"
-		run "mount -t nfs4 -o port=20050 localhost:$expdir $nfsmp"
-		if [ $? -eq 0 ]; then
-			run "cat /proc/mounts | grep $nfsmp" -
-			run "cat /proc/mounts | grep $nfsmp | grep -q port=20050" 0 "Should show port=20050"
-			run "mount -o remount,ro $nfsmp"
-			run "cat /proc/mounts | grep $nfsmp" -
-			run "cat /proc/mounts | grep $nfsmp | grep -q port=20050" 0 "Should show port=20050"
-			run "umount $nfsmp"
-		fi
-		log "{Info} If NFS service is not available on the specified port"
-		run "mount -t nfs4 -o port=2049 localhost:$expdir $nfsmp" 1-255
-		if [ $? -eq 0 ]; then
-			run "cat /proc/mounts | grep $nfsmp" -
-			run "umount $nfsmp"
-		fi
-		log "{Info} If port value is not specified"
-		if ls_nfsvers | grep -q -w 3; then
-			run "mount -t nfs -o vers=3 localhost:$expdir $nfsmp" 0 "for v2/v3 client uses port advertised by server's rpcbind service"
-			run "cat /proc/mounts | grep $nfsmp" -
-			run "umount $nfsmp"
-		fi
-		run "mount -t nfs -o vers=4 localhost:$expdir $nfsmp" 1-255 "for v4 client uses the standard NFS port (2049) without checking"
-		if [ $? -eq 0 ]; then
-			run "cat /proc/mounts | grep $nfsmp" -
-			run "umount $nfsmp"
-		fi
-		log "{Info} If the specified port value is 0"
-		run "mount -t nfs -o vers=4,port=0 localhost:$expdir $nfsmp"
-		if [ $? -eq 0 ]; then
-			run "cat /proc/mounts | grep $nfsmp" -
-			run "cat /proc/mounts | grep $nfsmp | grep -q port=0" 0 "Should show port=0"
-			run "umount $nfsmp"
-		fi
-		run "echo '' > /etc/nfs.conf" 0 "Recovering"
-	fi
-    rlPhaseEnd
-
-    if ls_nfsvers | grep -q -w "4.0"; then
-    rlPhaseStartTest do-Test-bz1592915-sanity-check-clientaddr-during-mount
-	run "echo '$expdir *(rw,no_root_squash)' > /etc/exports"
-	run "service_nfs restart"
-	run "exportfs -v"
-	log "{Info} Mounting v4.0 by default"
-	run "mount -o vers=4,minorversion=0 localhost:$expdir $nfsmp -v"
-	if [ $? -eq 0 ]; then
-		run "cat /proc/mounts | grep $nfsmp" -
-		run "umount $nfsmp"
-	fi
-	log "{Info} Setting 'clientaddr=' not match any local address"
-	# use normal mode (no verbose) to check the emitted warning
-	run "mount -o vers=4,minorversion=0,clientaddr=1.2.3.4 localhost:$expdir $nfsmp &> >(tee stdout.log)"
-	if [ $? -eq 0 ]; then
-		run "cat /proc/mounts | grep $nfsmp" -
-		run "umount $nfsmp"
-	fi
-	run "cat stdout.log | grep -q '[warning].*not match any existing network addresses'" 0 "Should warn the administrators"
-	log "{Info} Specifying IPv4_ANY (0.0.0.0) signifying client does not want delegations"
-	run "mount -o vers=4,minorversion=0,clientaddr=0.0.0.0 localhost:$expdir $nfsmp -v"
-	if [ $? -eq 0 ]; then
-		run "cat /proc/mounts | grep $nfsmp" -
-		run "umount $nfsmp"
-	fi
-	log "{Info} Specifying IPv6_ANY (::0) signifying client does not want delegations"
-	run "mount -o vers=4,minorversion=0,clientaddr=::0 localhost:$expdir $nfsmp -v"
-	if [ $? -eq 0 ]; then
-		run "cat /proc/mounts | grep $nfsmp" -
-		run "umount $nfsmp"
-	fi
-    rlPhaseEnd
-    fi
-
-    rlPhaseStartCleanup do-Cleanup-
-        run "rm -rf $expdir $nfsmp $subexpdir $tmpnfsmp"
-        rlFileRestore
-        run "service_nfs restart"
-        if [ -n "ORIGINAL_HOSTNAME" ]; then
-            HOSTNAME="$ORIGINAL_HOSTNAME"
-            hostnamectl set-hostname "$HOSTNAME"
-        fi
-    rlPhaseEnd
-rlJournalEnd
-#rlJournalPrintText
-#enable_avc_check
diff --git a/tests/export-mount-local/subtest.yml b/tests/export-mount-local/subtest.yml
deleted file mode 100644
index 1a77920..0000000
--- a/tests/export-mount-local/subtest.yml
+++ /dev/null
@@ -1 +0,0 @@
-attr: {ssched: yes}
diff --git a/tests/tests.yml b/tests/tests.yml
index 865464b..e8d6ecb 100644
--- a/tests/tests.yml
+++ b/tests/tests.yml
@@ -8,13 +8,11 @@
     - classic
     tests:
     - exportfs
-    - export-mount-local
     - mount
     - nfs-mount-options-all
     - systemd-nfs
     - umount
     required_packages:
-    - bind-utils        # export-mount-local needs this package
     - findutils         # beakerlib needs find command
     - iptables          # nfs-mount-options-all needs this package
     - nfs-utils