diff --git a/linux-tools/yum_test/00_Description.txt b/linux-tools/yum_test/00_Description.txt new file mode 100755 index 000000000..05b421caf --- /dev/null +++ b/linux-tools/yum_test/00_Description.txt @@ -0,0 +1,23 @@ +Yum is a utility that can check for and automatically download and +install updated RPM packages. Dependencies are obtained and downloaded +automatically, prompting the user for permission as necessary. + +Source RPM has many test scripts but yum-release-test.sh has all the +major functionality tests for yum. + +yum-release-test.sh, executes some of the below options of yum command: +- update [package list] +- install +- remove +- list [package list] + +Custom repository has been created for use by yum-release-test.sh +The repo is placed in test machine. Following is the list of packages +provided by the repo: + +MyGroup1: yum1_rpm, yum2_rpm, yum3_rpm +MyGroup2: yum4_rpm, yum5_rpm +MyGroup3: yum11_rpm, yum12_rpm +yum14_rpm and yum5_rpm have updates +yum7_rpm has a dependency on yum6_rpm + diff --git a/linux-tools/yum_test/control b/linux-tools/yum_test/control new file mode 100644 index 000000000..d886cbd7a --- /dev/null +++ b/linux-tools/yum_test/control @@ -0,0 +1,11 @@ +AUTHOR = " Tejaswini Sambamurthy " +NAME = "yum_test" +TEST_CATEGORY = "Functional" +TEST_CLASS = "Linux Tools" +TEST_TYPE = "client" +TIME = 'SHORT' +DOC = ''' + Test yum package + ''' +path = '' +job.run_test('yum_test',test_path=path) diff --git a/linux-tools/yum_test/yum-release-test-script.diff b/linux-tools/yum_test/yum-release-test-script.diff new file mode 100755 index 000000000..b241eb77c --- /dev/null +++ b/linux-tools/yum_test/yum-release-test-script.diff @@ -0,0 +1,225 @@ +--- yum-release-test.sh.orig 2016-05-11 06:34:26.215585643 -0500 ++++ yum-release-test.sh 2016-05-11 06:52:13.204522977 -0500 +@@ -4,7 +4,7 @@ + ### Settings ########################################## + ####################################################### + +-USE_LOCAL_YUM_CONF=0 ++USE_LOCAL_YUM_CONF=1 + + FIXWORKDIR=/tmp/yum-release-test + +@@ -16,12 +16,12 @@ + # path to executables + YUMBINARY=/home/ffesti/CVS/yum/yummain.py + YUMBINARY=yum +-YUMDOWNLOADER=(yumdownloader -d 0 --disablerepo=updates) +-YUMDOWNLOADERUPDATES=(yumdownloader -d 0 --enablerepo=updates) ++YUMDOWNLOADER=(yumdownloader -d 0 --disablerepo=myrepo-updates) ++YUMDOWNLOADERUPDATES=(yumdownloader -d 0 --enablerepo=myrepo-updates) + + # for testing fedora releases +-YUM=($YUMBINARY -d 0 --installroot=$WORKDIR --disablerepo=updates ) +-YUMUPDATES=($YUMBINARY -d 0 --installroot=$WORKDIR --enablerepo=updates ) ++YUM=($YUMBINARY -d 0 --installroot=$WORKDIR --disablerepo=myrepo-updates ) ++YUMUPDATES=($YUMBINARY -d 0 --installroot=$WORKDIR --enablerepo=myrepo-updates ) + + # for fedora devel + # XXX TODO +@@ -30,7 +30,7 @@ + + # Adjust size of base install + #DEFAULTGROUPS=("Office/Productivity" "GNOME Desktop Environment" "Games and Entertainment" "Sound and Video" "Graphical Internet" "System Tools" Core Base Editors "X Window System" ) +-DEFAULTGROUPS=(Base Core) ++DEFAULTGROUPS=(MyGroup1 MyGroup2) + + + +@@ -69,11 +69,11 @@ + echo "yum groupinstall ${DEFAULTGROUPS[@]}" + "${YUM[@]}" -y groupinstall "${DEFAULTGROUPS[@]}" + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +- echo "Check for vim-minimal" +- "${RPM[@]}" -q vim-minimal > /dev/null ++ echo "Check for yum5_rpm" ++ "${RPM[@]}" -q yum5_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + else +- echo Omitting base install ++ echo Omitting MyGroup1 MyGroup2 install + fi + + #"${YUMUPDATES[@]}" list updates +@@ -81,47 +81,47 @@ + #exit 0 + + echo +-echo "yum remove vim-minimal" +-"${YUM[@]}" -y remove vim-minimal ++echo "yum remove yum5_rpm" ++"${YUM[@]}" -y remove yum5_rpm + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +-echo "Check if vim-minimal is removed" +-"${RPM[@]}" -q vim-minimal > /dev/null ++echo "Check if yum5_rpm is removed" ++"${RPM[@]}" -q yum5_rpm > /dev/null + if [ "X$?" == "X1" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo "yum install vim-minimal | cat" +-"${YUM[@]}" -y install vim-minimal | cat ++echo "yum install yum5_rpm | cat" ++"${YUM[@]}" -y install yum5_rpm | cat + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +-echo "Check vim-minimal" +-"${RPM[@]}" -q vim-minimal > /dev/null ++echo "Check yum5_rpm" ++"${RPM[@]}" -q yum5_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo "yum install bash (already installed)" +-"${YUM[@]}" install bash ++echo "yum install yum1_rpm (already installed)" ++"${YUM[@]}" install yum1_rpm + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo + echo "yum install fOObAr (not available)" + "${YUM[@]}" install fOObAr +-if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi ++if [ "X$?" == "X1" ] ; then echo " OK"; else echo " FAILED"; fi + + if [ $WORKDIR != $FIXWORKDIR ] ; then + + echo +- echo "yum groupinstall Graphics" +- "${YUM[@]}" -y groupinstall Graphics ++ echo "yum groupinstall MyGroup3" ++ "${YUM[@]}" -y groupinstall MyGroup3 + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +- echo "Check gimp" +- "${RPM[@]}" -q gimp > /dev/null ++ echo "Check yum11_rpm" ++ "${RPM[@]}" -q yum11_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +- echo "yum groupremove Graphics" +- "${YUM[@]}" -y groupremove Graphics ++ echo "yum groupremove MyGroup3" ++ "${YUM[@]}" -y groupremove MyGroup3 + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +- echo "Check if gimp is removed" +- "${RPM[@]}" -q gimp > /dev/null ++ echo "Check if yum11_rpm is removed" ++ "${RPM[@]}" -q yum11_rpm > /dev/null + if [ "X$?" == "X1" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +@@ -137,25 +137,23 @@ + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo yumdownloader emacs +-"${YUMDOWNLOADER[@]}" --destdir $WORKDIR/tmp --resolve emacs +-"${YUMDOWNLOADER[@]}" --destdir $WORKDIR/tmp --resolve emacs-common ++echo yumdownloader yum14_rpm ++"${YUMDOWNLOADER[@]}" --destdir $WORKDIR/tmp --resolve yum14_rpm + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +-echo yum localinstall emacs\*.rpm ++echo yum localinstall yum14_rpm\*.rpm + "${YUM[@]}" localinstall -y $WORKDIR/tmp/*.rpm + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi +-echo "Check emacs" +-"${RPM[@]}" -q emacs > /dev/null ++echo "Check yum14_rpm" ++"${RPM[@]}" -q yum14_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + rm -f $WORKDIR/tmp/*.rpm + + echo +-echo yumdownloader emacs +-"${YUMDOWNLOADERUPDATES[@]}" --destdir $WORKDIR/tmp --resolve emacs +-"${YUMDOWNLOADERUPDATES[@]}" --destdir $WORKDIR/tmp --resolve emacs-common +-echo yum localupdate emacs\*.rpm +-"${YUM[@]}" localupdate -y $WORKDIR/tmp/emacs*.rpm ++echo yumdownloader yum14_rpm ++"${YUMDOWNLOADERUPDATES[@]}" --destdir $WORKDIR/tmp --resolve yum14_rpm ++echo yum localupdate yum14_rpm\*.rpm ++"${YUM[@]}" localupdate -y $WORKDIR/tmp/yum14_rpm*.rpm + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +@@ -167,27 +165,16 @@ + if [ "X$?" == "X100" ] ; then echo " OK"; else echo " FAILED or uptodate"; fi + + echo +-echo yum update glibc +-GLIBC=`"${RPM[@]}" -q glibc` +-"${YUMUPDATES[@]}" -y update glibc +-UGLIBC=`"${RPM[@]}" -q glibc` ++echo yum update yum5_rpm ++GLIBC=`"${RPM[@]}" -q yum5_rpm` ++"${YUMUPDATES[@]}" -y update yum5_rpm ++UGLIBC=`"${RPM[@]}" -q yum5_rpm` + if [ "$GLIBC" != "$UGLIBC" ] ; then + echo " OK"; + else + echo " FAILED or uptodate"; + fi + +-echo +-echo yum update +-KERNEL=`"${RPM[@]}" -q kernel` +-"${YUMUPDATES[@]}" -y update +-UKERNEL=`"${RPM[@]}" -q kernel` +-if [ "$KERNEL" != "$UKERNEL" ] ; then +- echo " OK"; +-else +- echo " FAILED or uptodate"; +-fi +- + echo + echo "yum --version" + "${YUM[@]}" --version +@@ -199,28 +186,28 @@ + # etc + + echo +-echo "yum search kernel" +-"${YUM[@]}" search kernel > /dev/null ++echo "yum search yum10_rpm" ++"${YUM[@]}" search yum10_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo "yum provides kernel" +-"${YUM[@]}" provides kernel > /dev/null ++echo "yum provides yum10_rpm" ++"${YUM[@]}" provides yum10_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo "yum info kernel" +-"${YUM[@]}" info kernel > /dev/null ++echo "yum info yum10_rpm" ++"${YUM[@]}" info yum10_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo "yum groupinfo Core" +-"${YUM[@]}" groupinfo Core > /dev/null ++echo "yum groupinfo MyGroup1" ++"${YUM[@]}" groupinfo MyGroup1 > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo +-echo "yum deplist bash" +-"${YUM[@]}" deplist bash > /dev/null ++echo "yum deplist yum7_rpm" ++"${YUM[@]}" deplist yum7_rpm > /dev/null + if [ "X$?" == "X0" ] ; then echo " OK"; else echo " FAILED"; fi + + echo diff --git a/linux-tools/yum_test/yum.sh b/linux-tools/yum_test/yum.sh new file mode 100755 index 000000000..ec3330d37 --- /dev/null +++ b/linux-tools/yum_test/yum.sh @@ -0,0 +1,101 @@ +#!/bin/sh +########################################################################################### +## Copyright 2003, 2016 IBM Corp ## +## ## +## Redistribution and use in source and binary forms, with or without modification, ## +## are permitted provided that the following conditions are met: ## +## 1.Redistributions of source code must retain the above copyright notice, ## +## this list of conditions and the following disclaimer. ## +## 2.Redistributions in binary form must reproduce the above copyright notice, this ## +## list of conditions and the following disclaimer in the documentation and/or ## +## other materials provided with the distribution. ## +## ## +## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS AND ANY EXPRESS ## +## OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ## +## THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ## +## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ## +## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ## +## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ## +## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## +############################################################################################ +# +# File : yum.sh +# +# Description: Test the tools of yum package. +# +# Author: Tejaswini Sambamurthy +# Hariharan T S +# +################################################################################ +# source the utility functions +################################################################################ +#cd `dirname $0` +#LTPBIN=${LTPBIN%/shared}/yum +source $LTPBIN/tc_utils.source +source $LTPBIN/domain_names.source +TESTS_DIR="${LTPBIN%/shared}/yum_test" + +REQUIRED="yum yumdownloader" + +################################################################################ +# test functions +################################################################################ +function tc_local_setup() +{ + REPOLINK="http://$TEST1_AUSLAB/yumtestrepo/myrepo" + UPDATESREPOLINK="http://$TEST1_AUSLAB/yumtestrepo/updatesrepo" + DISTROYUMREPO="/etc/yum.repos.d/myrepo.repo" + + tc_exec_or_break $REQUIRED + + cat > $DISTROYUMREPO <<- REPODATA +[myrepo] +name=This is myrepo +baseurl=$REPOLINK +enabled=1 +gpgcheck=0 + +[myrepo-updates] +name=This is my updates repo +baseurl=$UPDATESREPOLINK +enabled=1 +gpgcheck=0 +REPODATA + +} + +function tc_local_cleanup() +{ + # Remove the testrepo under /etc/yum.repos.d + rm -rf $DISTROYUMREPO + + yum clean all >$stdout 2>$stderr + tc_fail_if_bad $? "yum clean failed in clenaup" || return +} + +function run_test() +{ + pushd $TESTS_DIR &> /dev/null + tc_register "yum" + ./yum-release-test.sh 1>$stdout 2>$stderr + RC=$? + tc_ignore_warnings "^$\|There is no installed groups file\|Maybe run: yum groups mark convert\|No environment named MyGroup3 exists" + if [ `grep -vc "Error: Nothing to do" $stderr` -eq 0 ];then cat /dev/null > $stderr; fi + grep -q FAILED $stdout + if [ $? -eq 0 ]; then + tc_fail "yum failed" + else + tc_pass_or_fail $RC "test failed" + fi + + popd &> /dev/null +} + +################################################################################ +# MAIN +################################################################################ +TST_TOTAL=1 +tc_setup +run_test diff --git a/linux-tools/yum_test/yum_test.py b/linux-tools/yum_test/yum_test.py new file mode 100644 index 000000000..5d42143f8 --- /dev/null +++ b/linux-tools/yum_test/yum_test.py @@ -0,0 +1,53 @@ +#!/bin/python +import os, subprocess +import shutil +import logging + +from autotest.client import test, utils +from autotest.client.shared import error, software_manager + +class yum_test(test.test): + + """ + Autotest module for testing basic functionality + of yum + + @author Tejaswini Sambamurthy + """ + version = 1 + nfail = 0 + path = '' + + def initialize(self): + """ + Sets the overall failure counter for the test. + """ + self.nfail = 0 + logging.info('\n Test initialize successfully') + + def run_once(self, test_path=''): + """ + Trigger test run + """ + try: + os.environ["LTPBIN"] = os.path.join(test_path, "shared") + cwd = os.getcwd() + os.chdir("%s/yum_test" %(test_path)) + os.system("patch -p0