#!/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"}
# 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)}
# 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() {