Whamcloud - gitweb
LU-1661 tests: improve setup_posix_users()
[fs/lustre-release.git] / lustre / tests / posix / posix.cfg
index 51f50aa..86980b6 100644 (file)
@@ -1,15 +1,17 @@
 #!/bin/bash
-# vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4:
 #
 # This file contains the global variables and common functions
 # used in the posix test scripts.
 set -e
-LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+
+LUSTRE=${LUSTRE:-$(cd $(dirname $0)/../..; echo $PWD)}
 . $LUSTRE/tests/test-framework.sh
+
 #************************ Initialize Global Variables *************************#
 export POSIX_SRC=${POSIX_SRC:-"/usr/src/posix"}
 export POSIX_RUN=${POSIX_RUN:-"$POSIX_SRC/run_posix_suite.pl"}
-export TEST_BIN="$POSIX_SRC/TESTROOT-gcc$(gcc -v 2>&1 | tail -1 | cut -d' ' -f3)-$(uname -m).tgz"
+export TEST_BIN="$POSIX_SRC/TESTROOT-gcc$(gcc -v 2>&1 | tail -1 |
+                cut -d' ' -f3)-$(uname -m).tgz"
 
 # Root directory of the POSIX test suite installation.
 export INSTALL_DIR=${INSTALL_DIR:-"$POSIX_SRC/tet"}
@@ -22,81 +24,16 @@ export RESULT_DIR=${RESULT_DIR:-"$INSTALL_DIR/test_sets/results"}
 
 # Test groups for POSIX compliance test suite.
 USER_GROUPS="vsxg0,vsxg1,vsxg2"
-SUPP_GROUPS="supp1,supp2,supp3,supp4,supp5,supp6,supp7,supp8,supp9,supp10,supp11,supp12,supp13,supp14,supp15,supp16,supp17,supp18,supp19,supp20,supp21,supp22,supp23,supp24,supp25,supp26,supp27,supp28,supp29,supp30,supp31"
 
-export GROUP_ID=${GROUP_ID:-"1000"}
-export USER_ID=${USER_ID:-"1000"}
+for i in $(seq 31); do
+       SUPP_GROUPS="$SUPP_GROUPS,supp$i"
+done
+SUPP_GROUPS=${SUPP_GROUPS#,}
 
-#***************************** Common Functions *******************************#
-# Check and add a test group.
-add_group() {
-    local node=${1:-$(hostname)}
-    local group_id=$2
-    local group_name=$3
-    local rc=0
-
-    if ! (do_nodes $node "
-        error() { set +x; echo Error: \\\$2: \\\$1; echo XXRETCODE:\\\$1; exit \\\$1; }
-        gid=\\\$(getent group $group_name | cut -d: -f3);
-        if [ \"x\\\$gid\" != \"x\" ]; then
-            [ \\\$gid -eq $group_id ] || \\
-                error 1 \\\"inconsistent group ID: new: $group_id, old: \\\$gid\\\";
-        else
-            groupadd -g $group_id $group_name
-        fi;" 2>&1 | dshbak -c
-        exit ${PIPESTATUS[0]})
-    then
-        rc=${PIPESTATUS[0]}
-    fi
-
-    return $rc
-}
-
-# Check and add a test user.
-add_user() {
-    local node=${1:-$(hostname)}
-    local user_id=$2
-    local user_name=$3
-    local group_name=$4
-    local home_dir
-    local rc=0
-
-    if [[ "$user_name" = "vsx0" ]]; then
-        home_dir=$INSTALL_DIR/test_sets
-    else
-        home_dir=$INSTALL_DIR
-    fi
-
-    if ! (do_nodes $node "
-        error() { set +x; echo Error: \\\$2: \\\$1; echo XXRETCODE:\\\$1; exit \\\$1; }
-        SUPP_GROUPS=$SUPP_GROUPS;
-        uid=\\\$(getent passwd $user_name | cut -d: -f3);
-        if [ \"x\\\$uid\" != \"x\" ]; then
-            if [ \\\$uid -eq $user_id ]; then
-                dir=\\\$(getent passwd $user_name | cut -d: -f6)
-                if [ \"x\\\$dir\" != \"x$home_dir\" ]; then
-                    mkdir -p $home_dir
-                    usermod -d $home_dir $user_name
-                fi
-            else
-                error 1 \\\"inconsistent user ID: new: $user_id, old: \\\$uid\\\"
-            fi
-        else
-            mkdir -p $home_dir
-            if [ \"x$user_name\" = \"xvsx0\" ]; then
-                useradd -M -u $user_id -d $home_dir -g $group_name -G $SUPP_GROUPS $user_name
-            else
-                useradd -M -u $user_id -d $home_dir -g $group_name $user_name
-            fi
-        fi" 2>&1 | dshbak -c
-        exit ${PIPESTATUS[0]})
-    then
-        rc=${PIPESTATUS[0]}
-    fi
-
-    return $rc
-}
+export GROUP_ID=${GROUP_ID:-"2000000000"}
+export USER_ID=${USER_ID:-"2000000000"}
 
+#***************************** Common Functions *******************************#
 # Remove users and groups for running the POSIX test suite.
 delete_posix_users() {
     local node=${1:-$(hostname)}
@@ -113,29 +50,43 @@ delete_posix_users() {
 
 # Setup users and groups for running the POSIX test suite.
 setup_posix_users() {
-    local node=${1:-$(hostname)}
-    local gid=$((GROUP_ID + 1))
-    local uid=$USER_ID
-    local user group
-    local i
-
-    for group in ${USER_GROUPS//,/ } ${SUPP_GROUPS//,/ }; do
-        if ! add_group $node $gid $group; then
-            delete_posix_users $node
-            setup_posix_users $node
-        fi
-        gid=$(( gid + 1 ))
-    done
-
-    for i in 0 1 2; do
-        user=vsx$i
-        group=vsxg$i
-        if ! add_user $node $uid $user $group; then
-            delete_posix_users $node
-            setup_posix_users $node
-        fi
-        uid=$(( uid + 1 ))
-    done
+       local node=${1:-$HOSTNAME}
+       local gid=$GROUP_ID
+       local uid=$USER_ID
+       local user group
+       local home
+       local opts
+       local i
+
+       for group in ${USER_GROUPS//,/ } ${SUPP_GROUPS//,/ }; do
+               if ! do_rpc_nodes $node add_group $gid $group; then
+                       delete_posix_users $node
+                       return 1
+               fi
+               gid=$((gid + 1))
+       done
+
+       for i in 0 1 2; do
+               user=vsx$i
+               group=vsxg$i
+
+               if [[ "$user" = "vsx0" ]]; then
+                       home=$INSTALL_DIR/test_sets
+                       opts="-G $SUPP_GROUPS"
+               else
+                       home=$INSTALL_DIR
+                       opts=""
+               fi
+
+               if ! do_rpc_nodes $node add_user $uid $user $group $home $opts
+               then
+                       delete_posix_users $node
+                       return 2
+               fi
+               uid=$((uid + 1))
+       done
+
+       return 0
 }
 
 prep() {