On 02/27/2012 01:28 PM, Peng Haitao wrote:
> This library includes a set of functions used to test SSSD(System Security
> Services Daemon).
>
> Signed-off-by: Peng Haitao <[email protected]>
> ---
> testcases/commands/sssd/Makefile | 25 ++++
> testcases/commands/sssd/sssd-lib.sh | 209
> +++++++++++++++++++++++++++++++++++
> 2 files changed, 234 insertions(+), 0 deletions(-)
> create mode 100644 testcases/commands/sssd/Makefile
> create mode 100755 testcases/commands/sssd/sssd-lib.sh
>
> diff --git a/testcases/commands/sssd/Makefile
> b/testcases/commands/sssd/Makefile
> new file mode 100644
> index 0000000..6539f14
> --- /dev/null
> +++ b/testcases/commands/sssd/Makefile
> @@ -0,0 +1,25 @@
> +#
> +# Copyright (c) International Business Machines Corp., 2012
Why not Copyright(c) Fujitsu in this series?
Thanks
-Wanlong Gao
> +#
> +# 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, write to the Free Software
> +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +top_srcdir ?= ../../..
> +
> +include $(top_srcdir)/include/mk/testcases.mk
> +
> +INSTALL_TARGETS := sssd0* sssd-lib.sh
> +
> +include $(top_srcdir)/include/mk/generic_leaf_target.mk
> diff --git a/testcases/commands/sssd/sssd-lib.sh
> b/testcases/commands/sssd/sssd-lib.sh
> new file mode 100755
> index 0000000..84a7581
> --- /dev/null
> +++ b/testcases/commands/sssd/sssd-lib.sh
> @@ -0,0 +1,209 @@
> +#! /bin/sh
> +#
> +# Copyright (c) Linux Test Project, 2012
> +#
> +# 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, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> +#
> +##################################################################
> +
> +export TST_TOTAL=${TST_TOTAL:=1}
> +export TST_COUNT=1
> +export TCID=${TCID:="$(basename "$0")"}
> +
> +if [ -z "$LTPTMP" -a -z "$TMPBASE" ]; then
> + LTPTMP=/tmp
> +else
> + LTPTMP=$TMPBASE
> +fi
> +
> +if ! which sss_useradd >/dev/null 2>&1; then
> + tst_brkm TCONF NULL \
> + "sss_useradd does not exist. Skipping all testcases."
> + exit 0
> +fi
> +
> +# Signals to trap.
> +readonly TRAP_SIGS="2 3 6 11 15"
> +
> +CONFIG_FILE="/etc/sssd/sssd.conf"
> +NSS_CONFIG_FILE="/etc/nsswitch.conf"
> +SSSD_INIT_SCRIPT="/etc/init.d/sssd"
> +
> +# Command to restart sssd daemon.
> +SSSD_RESTART_CMD=
> +
> +# number of seconds to wait for another sssd test to complete
> +WAIT_COUNT=30
> +
> +# running under systemd?
> +if command -v systemctl >/dev/null 2>&1; then
> + HAVE_SYSTEMCTL=1
> +else
> + HAVE_SYSTEMCTL=0
> +fi
> +
> +cleanup()
> +{
> + disable_traps
> + exit_code=$1
> +
> + # Restore the previous sssd daemon state.
> + if [ -f "$CONFIG_FILE.ltpback" ]; then
> + if mv "$CONFIG_FILE.ltpback" "$CONFIG_FILE"; then
> + mv $NSS_CONFIG_FILE.ltpback $NSS_CONFIG_FILE
> + # Make sure that restart_sssd_daemon doesn't loop
> + # back to cleanup again.
> + restart_sssd_daemon "return 1"
> + # Maintain any nonzero exit codes
> + if [ $exit_code -ne $? ]; then
> + exit_code=1
> + fi
> + else
> + exit_code=1
> + fi
> + fi
> +
> + exit $exit_code
> +}
> +
> +setup()
> +{
> + is_root || exit 1
> +
> + trap ' disable_traps
> + tst_resm TBROK "Testing is terminating due to a signal"
> + cleanup 1' $TRAP_SIGS || exit 1
> +
> + # Check to see if sssd exists
> + if [ ! -e /usr/sbin/sssd ]; then
> + tst_resm TCONF "couldn't find sssd"
> + cleanup 0
> + fi
> +
> + # Check to see if nscd exists
> + if [ ! -e /usr/sbin/nscd ]; then
> + tst_resm TCONF "couldn't find nscd"
> + cleanup 0
> + fi
> +
> + SVCNAME=$(basename $SSSD_INIT_SCRIPT)
> + if [ $HAVE_SYSTEMCTL == 1 ]; then
> + for svc in "$SVCNAME" "sssd"; do
> + if systemctl is-enabled $svc.service >/dev/null 2>&1
> + then
> + SSSD_RESTART_CMD="systemctl restart
> $svc.service"
> + break
> + fi
> + done
> + else
> + for SSSD_INIT_SCRIPT in "$SSSD_INIT_SCRIPT" "/etc/init.d/sssd"
> + do
> + if [ -x "$SSSD_INIT_SCRIPT" ]; then
> + SSSD_RESTART_CMD="$SSSD_INIT_SCRIPT restart"
> + break
> + fi
> + done
> + fi
> +
> + if [ -z "$SSSD_RESTART_CMD" ]; then
> + tst_resm TBROK "Don't know how to restart $SVCNAME"
> + cleanup 1
> + fi
> +
> + # Back up configuration file
> + if [ -f "$CONFIG_FILE" ]; then
> + # Pause if another LTP sssd test is running
> + while [ -f "$CONFIG_FILE.ltpback" -a $WAIT_COUNT -gt 0 ]; do
> + : $(( WAIT_COUNT -= 1 ))
> + sleep 1
> + done
> + # Oops -- $CONFIG_FILE.ltpback is still there!
> + if [ $WAIT_COUNT -eq 0 ]; then
> + tst_resm TBROK "another sssd test is stuck"
> + cleanup 1
> + elif ! cp "$CONFIG_FILE" "$CONFIG_FILE.ltpback"; then
> + tst_resm TBROK "failed to backup $CONFIG_FILE"
> + cleanup 1
> + fi
> +
> + cp $NSS_CONFIG_FILE $NSS_CONFIG_FILE.ltpback
> + grep "passwd: files sss" $NSS_CONFIG_FILE > /dev/null
> + if [ $? -ne 0 ]; then
> + sed -i "s/passwd: files/passwd: files sss/" \
> + $NSS_CONFIG_FILE
> + fi
> + else
> + tst_brkm TBROK NULL "$CONFIG_FILE not found!"
> + fi
> +}
> +
> +disable_traps()
> +{
> + trap - $TRAP_SIGS
> +}
> +
> +restart_sssd_daemon()
> +{
> + # Default to running `cleanup 1' when dealing with error cases.
> + if [ $# -eq 0 ]; then
> + cleanup_command="cleanup 1"
> + else
> + cleanup_command=$1
> + fi
> +
> + tst_resm TINFO "restarting sssd daemon via $SSSD_RESTART_CMD"
> + $SSSD_RESTART_CMD > /dev/null 2>&1
> + if [ $? -eq 0 ]; then
> + # wait sssd restart success.
> + sleep 1
> + else
> + $cleanup_command
> + fi
> +}
> +
> +# sssd.conf should contain:
> +# [sssd]
> +# config_file_version = 2
> +# services = nss, pam
> +# domains = LOCAL
> +#
> +#[nss]
> +#
> +#[pam]
> +#
> +#[domain/LOCAL]
> +#id_provider = local
> +make_config_file()
> +{
> + echo -e "[sssd]\nconfig_file_version = 2" > $CONFIG_FILE
> + echo -e "services = nss, pam\ndomains = LOCAL" >> $CONFIG_FILE
> + echo -e "\n[nss]\n\n[pam]\n" >> $CONFIG_FILE
> + echo -e "[domain/LOCAL]\nid_provider = local" >> $CONFIG_FILE
> +}
> +
> +. cmdlib.sh
> +
> +# determine sssd.conf can support override_gid?
> +setup
> +make_config_file
> +sed -i -e "/\[domain\/LOCAL\]/ a\override_gid = error" $CONFIG_FILE
> +# make sure config file is OK
> +sleep 1
> +$SSSD_RESTART_CMD > /dev/null 2>&1
> +
> +if [ $? -ne 1 ]; then
> + tst_resm TCONF "override_gid does not exist. Skipping all testcases"
> + cleanup 0
> +fi
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list