diff --git a/tests/alternatives-doesn-t-update-slave-links-with/Makefile b/tests/alternatives-doesn-t-update-slave-links-with/Makefile new file mode 100644 index 0000000..b8f453d --- /dev/null +++ b/tests/alternatives-doesn-t-update-slave-links-with/Makefile @@ -0,0 +1,62 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /CoreOS/chkconfig/Regression/alternatives-doesn-t-update-slave-links-with +# Description: Test for BZ#1347541 (alternatives doesn't update slave links with) +# Author: Jan Scotka +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/CoreOS/chkconfig/Regression/alternatives-doesn-t-update-slave-links-with +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + +$(METADATA): Makefile + @echo "Owner: Jan Scotka " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Test for BZ#1347541 (alternatives doesn't update slave links with)" >> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: chkconfig" >> $(METADATA) + @echo "Requires: chkconfig" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Bug: 1347541" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/alternatives-doesn-t-update-slave-links-with/PURPOSE b/tests/alternatives-doesn-t-update-slave-links-with/PURPOSE new file mode 100644 index 0000000..3c06b15 --- /dev/null +++ b/tests/alternatives-doesn-t-update-slave-links-with/PURPOSE @@ -0,0 +1,5 @@ +PURPOSE of /CoreOS/chkconfig/Regression/alternatives-doesn-t-update-slave-links-with +Description: Test for BZ#1347541 (alternatives doesn't update slave links with) +Author: Jan Scotka +Bug summary: alternatives doesn't update slave links with --install in manual mode +Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1347541 diff --git a/tests/alternatives-doesn-t-update-slave-links-with/runtest.sh b/tests/alternatives-doesn-t-update-slave-links-with/runtest.sh new file mode 100755 index 0000000..2c04dcc --- /dev/null +++ b/tests/alternatives-doesn-t-update-slave-links-with/runtest.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/chkconfig/Regression/alternatives-doesn-t-update-slave-links-with +# Description: Test for BZ#1347541 (alternatives doesn't update slave links with) +# Author: Jan Scotka +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="chkconfig" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlPhaseEnd + rlPhaseStartTest + + rlRun "alternatives --install /usr/bin/xxx xxx /usr/bin/true 1 --slave /usr/bin/yyy yyy /usr/bin/true" + rlRun "alternatives --set xxx /usr/bin/true" + rlRun "alternatives --install /usr/bin/xxx xxx /usr/bin/true 1 --slave /usr/bin/yyy yyy /usr/bin/false" + rlRun "readlink /etc/alternatives/yyy | grep /usr/bin/false" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "update-alternatives --remove xxx /usr/bin/true" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/backport-family-option-from-upstream/Makefile b/tests/backport-family-option-from-upstream/Makefile new file mode 100644 index 0000000..7eca1e2 --- /dev/null +++ b/tests/backport-family-option-from-upstream/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /CoreOS/chkconfig/Sanity/backport-family-option-from-upstream +# Description: Test for BZ#1291340 (Backport --family option from upstream) +# Author: Jan Scotka +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/CoreOS/chkconfig/Sanity/backport-family-option-from-upstream +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +$(METADATA): Makefile + @echo "Owner: Jan Scotka " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Test for BZ#1291340 (Backport --family option from upstream)" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 10m" >> $(METADATA) + @echo "RunFor: chkconfig" >> $(METADATA) + @echo "Requires: chkconfig" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Bug: 1291340" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/backport-family-option-from-upstream/PURPOSE b/tests/backport-family-option-from-upstream/PURPOSE new file mode 100644 index 0000000..2b0fc3b --- /dev/null +++ b/tests/backport-family-option-from-upstream/PURPOSE @@ -0,0 +1,5 @@ +PURPOSE of /CoreOS/chkconfig/Sanity/backport-family-option-from-upstream +Description: Test for BZ#1291340 (Backport --family option from upstream) +Author: Jan Scotka +Bug summary: Backport --family option from upstream +Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1291340 diff --git a/tests/backport-family-option-from-upstream/runtest.sh b/tests/backport-family-option-from-upstream/runtest.sh new file mode 100755 index 0000000..d70cd8a --- /dev/null +++ b/tests/backport-family-option-from-upstream/runtest.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/chkconfig/Sanity/backport-family-option-from-upstream +# Description: Test for BZ#1291340 (Backport --family option from upstream) +# Author: Jan Scotka +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="chkconfig" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "touch $TmpDir/a" + rlRun "touch $TmpDir/b" + rlRun "ln -s $TmpDir/a $TmpDir/link" + rlPhaseEnd + + rlPhaseStartTest + rlRun "alternatives --install $TmpDir/link testname $TmpDir/a 1 --family testfamily" + rlRun "alternatives --install $TmpDir/link testname $TmpDir/b 2 --family testfamily" + rlRun "alternatives --display testname |grep 'link.*$TmpDir/b'" + rlRun "alternatives --display testname |grep 'link.*$TmpDir/a'" 1 + rlRun "alternatives --display testname |grep '$TmpDir/a.*testfamily priority 1'" + rlRun "alternatives --list | grep 'testname.*$TmpDir/b'" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun " alternatives --remove testname $TmpDir/a" + rlRun " alternatives --remove testname $TmpDir/b" + rlRun "rm -rf $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/chkconfig-prioritory-set-inconsistently/Makefile b/tests/chkconfig-prioritory-set-inconsistently/Makefile new file mode 100644 index 0000000..846e4c4 --- /dev/null +++ b/tests/chkconfig-prioritory-set-inconsistently/Makefile @@ -0,0 +1,61 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /CoreOS/chkconfig/Regression/chkconfig-prioritory-set-inconsistently +# Description: chkconfig-prioritory-set-inconsistently +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/CoreOS/chkconfig/Regression/chkconfig-prioritory-set-inconsistently +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE service-a-fake service-b-fake service-c-fake + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + +$(METADATA): Makefile + @echo "Owner: Martin Cermak " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: chkconfig-prioritory-set-inconsistently" >> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: chkconfig" >> $(METADATA) + @echo "Requires: chkconfig" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Bug: 771455" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/chkconfig-prioritory-set-inconsistently/PURPOSE b/tests/chkconfig-prioritory-set-inconsistently/PURPOSE new file mode 100644 index 0000000..35babfd --- /dev/null +++ b/tests/chkconfig-prioritory-set-inconsistently/PURPOSE @@ -0,0 +1,5 @@ +PURPOSE of /CoreOS/chkconfig/Regression/chkconfig-prioritory-set-inconsistently +Description: chkconfig-prioritory-set-inconsistently +Author: Martin Cermak +Bug summary: chkconfig S## prioritory set inconsistently for initscript with Requires-Start: $network +Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=771455 diff --git a/tests/chkconfig-prioritory-set-inconsistently/runtest.sh b/tests/chkconfig-prioritory-set-inconsistently/runtest.sh new file mode 100755 index 0000000..f8ff7c0 --- /dev/null +++ b/tests/chkconfig-prioritory-set-inconsistently/runtest.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/chkconfig/Regression/chkconfig-prioritory-set-inconsistently +# Description: chkconfig-prioritory-set-inconsistently +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/lib/beakerlib/beakerlib.sh + +PACKAGE="chkconfig" + +myGetPriority() { + SERVICE=$1 + basename $( ls /etc/rc.d/rc3.d/S[0-9][0-9]$SERVICE ) | tr -d "[a-zA-Z\-]" +} + +# Test scenario: +# https://bugzilla.redhat.com/show_bug.cgi?id=771455#c0 + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "cp service-{a,b,c}-fake /etc/rc.d/init.d/" + + # A has Required-Start on B or C, thus the reversed order: + rlRun "/usr/lib/lsb/install_initd service-c-fake" + rlRun "/usr/lib/lsb/install_initd service-b-fake" + rlRun "/usr/lib/lsb/install_initd service-a-fake" + + rlRun "chkconfig service-a-fake off" + rlRun "chkconfig service-b-fake off" + rlRun "chkconfig service-c-fake off" + rlPhaseEnd + + rlPhaseStartTest + rlRun "chkconfig service-b-fake on" + rlRun "chkconfig service-a-fake on" + rlRun "PRIO=$( myGetPriority service-a-fake )" + # now, the priority of A should be >= 40 (should be = 40 in ideal world) + # and hopefully it is < 80 + rlRun "[ $PRIO -ge 40 ]" + rlRun "[ $PRIO -lt 80 ]" + + rlRun "chkconfig service-c-fake on" + rlRun "PRIO=$( myGetPriority service-a-fake )" + # MAIN TEST: + # right after enabling C, A should raise its priority above 80 + # this should fail with unpatched package (e.g. chkconfig-1.3.47-1.el6) + # ... and pass with patched one (e.g. chkconfig-1.3.49.3-2.el6) + rlRun "[ $PRIO -gt 80 ]" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "/usr/lib/lsb/remove_initd service-a-fake" + rlRun "/usr/lib/lsb/remove_initd service-b-fake" + rlRun "/usr/lib/lsb/remove_initd service-c-fake" + rlRun "rm -rf /etc/rc.d/init.d/service-{a,b,c}-fake" + rlPhaseEnd +#rlJournalPrintText +rlJournalEnd diff --git a/tests/chkconfig-prioritory-set-inconsistently/service-a-fake b/tests/chkconfig-prioritory-set-inconsistently/service-a-fake new file mode 100755 index 0000000..a58fc46 --- /dev/null +++ b/tests/chkconfig-prioritory-set-inconsistently/service-a-fake @@ -0,0 +1,17 @@ +#!/bin/sh +# +# service-a-fake + +# chkconfig: 2345 40 89 +# description: Fake service a +# +### BEGIN INIT INFO +# Provides: service-a-fake +# Default-Start: 2 3 4 5 +# Default-Stop: 0 6 +# Required-Start: bz771455fakeservice +# Short-Description: Fake service a +# Description: Fake service a +### END INIT INFO + + diff --git a/tests/chkconfig-prioritory-set-inconsistently/service-b-fake b/tests/chkconfig-prioritory-set-inconsistently/service-b-fake new file mode 100755 index 0000000..c89d665 --- /dev/null +++ b/tests/chkconfig-prioritory-set-inconsistently/service-b-fake @@ -0,0 +1,16 @@ +#!/bin/sh +# +# service-b-fake + +# chkconfig: 2345 14 89 +# description: Fake service b +# +### BEGIN INIT INFO +# Provides: bz771455fakeservice +# Default-Start: 2 3 4 5 +# Default-Stop: 0 6 +# Short-Description: Fake service b +# Description: Fake service b +### END INIT INFO + + diff --git a/tests/chkconfig-prioritory-set-inconsistently/service-c-fake b/tests/chkconfig-prioritory-set-inconsistently/service-c-fake new file mode 100755 index 0000000..7ee6216 --- /dev/null +++ b/tests/chkconfig-prioritory-set-inconsistently/service-c-fake @@ -0,0 +1,16 @@ +#!/bin/sh +# +# service-c-fake + +# chkconfig: 2345 80 89 +# description: Fake service c +# +### BEGIN INIT INFO +# Provides: bz771455fakeservice +# Default-Start: 2 3 4 5 +# Default-Stop: 0 6 +# Short-Description: Fake service c +# Description: Fake service c +### END INIT INFO + + diff --git a/tests/tests.retry b/tests/tests.retry new file mode 100644 index 0000000..2fbb50c --- /dev/null +++ b/tests/tests.retry @@ -0,0 +1 @@ +localhost diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..61bf9b4 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,15 @@ +--- +# This first play always runs on the local staging system +- hosts: localhost + roles: + - role: standard-test-beakerlib + tags: + - classic + - container + tests: + - alternatives-doesn-t-update-slave-links-with + - backport-family-option-from-upstream + - chkconfig-prioritory-set-inconsistently + required_packages: + - chkconfig + - lsb