2 # Copyright (c) 2013-2014 Red Hat.
4 # Common pre-test checking and settings for pmdarpm QA. Handles
5 # setup for the basic environment needed for all RPM PMDA tests.
8 # get standard environment, filters and checks
15 which rpmbuild >/dev/null 2>&1 || _notrun "No rpmbuild binary found"
16 test -x "$PCP_PMDAS_DIR/rpm/pmdarpm" || _notrun "pmdarpm not installed"
21 _prepare_pmda_install rpm
23 $sudo ./Install </dev/null >> $here/$seq.full 2>&1
29 _restore_pmda_install rpm
36 $sudo ./Remove < /dev/null >> $here/$seq.full 2>&1
41 # Build a spec file and source tarball for a test RPM.
42 # Sample specfile based on the Maximum RPM book example
43 # cos I'm too lame to come up with my own lame example.
45 # If successful sets variables on return for later use:
46 # $rpm_{bin,dbg,src}_pkg $rpm_spec $rpm_name
48 _rpm_package_prepare()
50 echo "Preparing RPM package"
59 # prepare the spec file
60 cat >$dir/qaplayer.spec <<End-of-file
61 Summary: A QA player app that rocks!
67 Group: Applications/Sound
69 URL: http://www.gnomovision.com/qaplayer/qaplayer.html
70 Distribution: WSS Linux
71 Vendor: White Socks Software, Inc.
72 Packager: Santa Claus <sclaus@northpole.com>
73 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-$usr
76 It slices! It dices! It's a QA player app that
77 can't be beat. By using the resonant frequency
78 of the QA itself, it is able to simulate 20X
79 oversampling. This leads to sound quality that
80 cannot be equaled with more mundane software...
86 rm -Rf \$RPM_BUILD_ROOT
90 mkdir -p \$RPM_BUILD_ROOT/%{_localstatedir}/qaplayer
94 %dir %{_localstatedir}/qaplayer
97 echo file: $dir/qaplayer.spec >> $here/$seq.full
98 cat $dir/qaplayer.spec >> $here/$seq.full
100 # prepare a source tarball
101 mkdir qaplayer-1.0 2>/dev/null
102 ln $seq qaplayer-1.0/$seq 2>/dev/null
103 tar czf $dir/qaplayer-1.0.tgz qaplayer-1.0/$seq
106 # prepare an installable RPM
108 --define "_topdir $dir" \
109 --define '_builddir %{_topdir}' \
110 --define '_sourcedir %{_topdir}' \
111 --define '_rpmdir %{_topdir}' \
112 --define '_srcrpmdir %{_topdir}' \
113 --define '_specdir %{_topdir}' \
114 --define '_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.noarch.rpm' \
115 $dir/qaplayer.spec >> $here/$seq.full 2>&1
117 rpm_dbg_pkg=$dir/qaplayer-debuginfo-1.0-1.noarch.rpm
118 rpm_bin_pkg=$dir/qaplayer-1.0-1.noarch.rpm
119 rpm_src_pkg=$dir/qaplayer-1.0-1.src.rpm
120 rpm_spec=$dir/qaplayer.spec
122 rpm_inst=qaplayer-1.0-1.noarch
127 if [ "X$rpm_name" = "X" -o "X$rpm_inst" = "X" ]
129 echo "QA test bug - _rpm_package_prepare not yet done?"
134 _rpm_package_install()
136 if [ "X$rpm_name" != "X" ]
138 rpm -q $rpm_name >/dev/null 2>&1
141 echo "$rpm_name already installed!?!"
143 echo "Installing $rpm_name" | tee -a $here/$seq.full
144 echo "RPM pathname: $rpm_bin_pkg" >> $here/$seq.full
145 echo "count before from rpm(1): `$sudo rpm -qa | wc -l | sed -e 's/ *//g'`" >> $seq.full
146 $sudo rpm -i $rpm_bin_pkg >> $here/$seq.full 2>&1
147 $sudo rpm -qa >> $seq.full 2>&1
148 echo "count after from rpm(1): `$sudo rpm -qa | wc -l | sed -e 's/ *//g'`" >> $seq.full
153 _rpm_package_install_await()
155 countdown=300 # 30 seconds
158 while [ $countdown -gt 0 ]
160 pminfo -f rpm.arch | grep -q "or \"$rpm_inst\"]" && return 0
162 countdown=`expr $countdown - 1`
165 echo "rpm_package_install_await gave up awaiting $rpm_inst install!"
169 _rpm_package_remove()
171 if [ "X$rpm_name" != "X" ]
173 if rpm -q $rpm_name >/dev/null 2>&1
175 echo "Removing $rpm_name" | tee -a $here/$seq.full
176 $sudo rpm -e $rpm_name >> $here/$seq.full 2>&1
181 _rpm_package_remove_await()
183 countdown=150 # 15 seconds
186 while [ $countdown -gt 0 ]
188 pminfo -f rpm.arch | grep -q "or \"$rpm_inst\"]" || return 0
190 countdown=`expr $countdown - 1`
193 echo "rpm_package_remove_await gave up awaiting $rpm_name removal!"
200 $remove_on_cleanup && _remove_rpm_pmda
202 # replace the pmcd setup with original
205 # remove any newly installed RPM
208 $sudo rm -fr $tmp.*.dir
213 remove_on_cleanup=true
214 pminfo rpm >/dev/null 2>&1 && remove_on_cleanup=false