xfstests: include NIS databases
authorAlex Elder <aelder@sgi.com>
Fri, 30 Jul 2010 21:52:39 +0000 (21:52 +0000)
committerAlex Elder <aelder@sgi.com>
Mon, 2 Aug 2010 17:14:54 +0000 (12:14 -0500)
If NIS is active on a test target system, additional password and
group file information is available via their respective databases
in NIS.  Currently, some tests assume that /etc/passwd and /etc/group
are the only places to find this information.

This patch causes both the local database and the NIS database (if
one is likely to be present) to be consulted for needed information.

Signed-off-by: Alex Elder <aelder@sgi.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
093
common.attr
common.quota
common.rc

diff --git a/093 b/093
index 5babfb3486364c33fad7dacebf9b80f44b405f92..4f14d86ae99b978d197ab35cf3af2324e0c85420 100755 (executable)
--- a/093
+++ b/093
@@ -72,7 +72,7 @@ echo ""
 file=$testdir/$seq.file
 
 user=`grep ':all=:all=' /etc/capability | tail -1 | $AWK_PROG -F: '{print $1}'`
-uid=`grep $user /etc/passwd | $AWK_PROG -F: '{print $3}'`
+uid=`_cat_passwd | grep $user | $AWK_PROG -F: '{print $3}'`
 
 cat >$tmp.append <<EOF
 #!/bin/bash
index 5019884a5bcb9c3d86cc9881f971d5fea30d2c8a..51616bcc818bf248a8c67bc295bafec92aa444f4 100644 (file)
@@ -25,7 +25,7 @@
 #
 _acl_setup_ids()
 {
-    eval `cat /etc/passwd /etc/group | awk -F: '
+    eval `(_cat_passwd; _cat_group) | awk -F: '
       { ids[$3]=1 }
       END {
         j=1
@@ -93,7 +93,7 @@ _filter_aces()
     $AWK_PROG '
        BEGIN {
            FS=":"
-           while ( getline <"/etc/passwd" > 0 ) {
+           while ( "_cat_passwd" | getline > 0 ) {
                idlist[$1] = $3 
            }
        }
index 655e34d11145950f06fac15f764353f4857fe5ef..efb3ef9c6b2553ec3483c2bcda53dcd301ab38cc 100644 (file)
@@ -59,11 +59,11 @@ _require_prjquota()
 #
 _require_nobody()
 {
-    grep -q '^nobody' /etc/passwd
-    [ $? -ne 0 ] && _notrun "/etc/passwd does not contain user nobody."
+    _cat_passwd | grep -q '^nobody'
+    [ $? -ne 0 ] && _notrun "password file does not contain user nobody."
 
-    egrep -q '^no(body|group)' /etc/group
-    [ $? -ne 0 ] && _notrun "/etc/group does not contain nobody/nogroup."
+    _cat_group | egrep -q '^no(body|group)'
+    [ $? -ne 0 ] && _notrun "group file does not contain nobody/nogroup."
 }
 
 # create a file as a specific user (uid)
@@ -108,12 +108,12 @@ EOF
 
 _choose_uid()
 {
-    grep '^nobody' /etc/passwd | perl -ne '@a = split(/:/); END { printf "id=%d name=%s\n", $a[2],$a[0] }'
+    _cat_passwd | grep '^nobody' | perl -ne '@a = split(/:/); END { printf "id=%d name=%s\n", $a[2],$a[0] }'
 }
 
 _choose_gid()
 {
-    egrep '^no(body|group)' /etc/group | perl -ne '@a = split(/:/); END { printf "id=%d name=%s\n", $a[2],$a[0] }'
+    _cat_group | egrep '^no(body|group)' | perl -ne '@a = split(/:/); END { printf "id=%d name=%s\n", $a[2],$a[0] }'
 }
 
 _choose_prid()
index 72997f9c0983ce4074420087b164803c2410bace..e0cdfe6537d4c045430dd3c12178d436a7b40299 100644 (file)
--- a/common.rc
+++ b/common.rc
@@ -793,12 +793,38 @@ _require_nonexternal()
        _notrun "External device testing in progress, skipped this test"
 }
 
+# indicate whether YP/NIS is active or not
+#
+_yp_active()
+{
+       local dn
+       dn=$(domainname 2>/dev/null)
+       test -n "${dn}" -a "${dn}" != "(none)"
+}
+
+# cat the password file
+#
+_cat_passwd()
+{
+       [ _yp_active ] && ypcat passwd
+       cat /etc/passwd
+}
+
+# cat the group file
+#
+_cat_group()
+{
+       [ _yp_active ] && ypcat group
+       cat /etc/group
+}
+export -f _yp_active _cat_passwd _cat_group
+
 # check for the fsgqa user on the machine
 #
 _require_user()
 {
     qa_user=fsgqa
-    cat /etc/passwd | grep -q $qa_user
+    _cat_passwd | grep -q $qa_user
     [ "$?" == "0" ] || _notrun "$qa_user user not defined."
 }