chkconfig/tests/chkconfig-prioritory-set-in.../runtest.sh

83 lines
3.0 KiB
Bash
Executable File

#!/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 <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# 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