qa: update 660 to generate index.html, fixing pcp-testsuite runs
[pcp.git] / qa / common.rpm
blob9931e41b917a936b76a96cb0bf8b391f8f3598c3
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
9 . ./common.product
10 . ./common.filter
11 . ./common.check
13 _rpm_support_tests()
15     which rpmbuild >/dev/null 2>&1 || _notrun "No rpmbuild binary found"
16     test -x "$PCP_PMDAS_DIR/rpm/pmdarpm" || _notrun "pmdarpm not installed"
19 _rpm_pmda_prepare()
21     _prepare_pmda_install rpm
22     cd $PCP_PMDAS_DIR/rpm
23     $sudo ./Install </dev/null >> $here/$seq.full 2>&1
24     cd $here
27 _rpm_pmda_restore()
29     _restore_pmda_install rpm
30     cd $here
33 _remove_rpm_pmda()
35     cd $PCP_PMDAS_DIR/rpm
36     $sudo ./Remove < /dev/null >> $here/$seq.full 2>&1
37     cd $here
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"
51     dir=$tmp.build.dir
52     mkdir -p $dir
54     tgz=qaplayer-1.0.tgz
55     tar=$dir/$tgz
56     usr=`id -u -n`
57     grp=`id -g -n`
59     # prepare the spec file
60     cat >$dir/qaplayer.spec <<End-of-file
61 Summary: A QA player app that rocks!
62 Name: qaplayer
63 Version: 1.0
64 Release: 1
65 License: GPL
66 BuildArch: noarch
67 Group: Applications/Sound
68 Source: $tgz
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
75 %description
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...
82 %prep
83 %setup
85 %clean
86 rm -Rf \$RPM_BUILD_ROOT
88 %build
89 %install
90 mkdir -p \$RPM_BUILD_ROOT/%{_localstatedir}/qaplayer
92 %files
93 %defattr(-,$usr,$grp)
94 %dir %{_localstatedir}/qaplayer
95 End-of-file
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
104     rm -fr qaplayer-1.0
106     # prepare an installable RPM
107     rpmbuild -ba \
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
121     rpm_name=qaplayer
122     rpm_inst=qaplayer-1.0-1.noarch
125 _rpm_prepare_check()
127     if [ "X$rpm_name" = "X" -o "X$rpm_inst" = "X" ]
128     then
129         echo "QA test bug - _rpm_package_prepare not yet done?"
130         exit 1
131     fi
134 _rpm_package_install()
136     if [ "X$rpm_name" != "X" ]
137     then
138         rpm -q $rpm_name >/dev/null 2>&1
139         if [ $? -eq 0 ]
140         then
141             echo "$rpm_name already installed!?!"
142         else
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
149         fi
150     fi
153 _rpm_package_install_await()
155     countdown=300       # 30 seconds
157     _rpm_prepare_check
158     while [ $countdown -gt 0 ]
159     do
160         pminfo -f rpm.arch | grep -q "or \"$rpm_inst\"]" && return 0
161         pmsleep 0.1 
162         countdown=`expr $countdown - 1`
163     done
165     echo "rpm_package_install_await gave up awaiting $rpm_inst install!"
166     exit 1
169 _rpm_package_remove()
171     if [ "X$rpm_name" != "X" ]
172     then
173         if rpm -q $rpm_name >/dev/null 2>&1
174         then
175             echo "Removing $rpm_name" | tee -a $here/$seq.full
176             $sudo rpm -e $rpm_name >> $here/$seq.full 2>&1
177         fi
178     fi
181 _rpm_package_remove_await()
183     countdown=150       # 15 seconds
185     _rpm_prepare_check
186     while [ $countdown -gt 0 ]
187     do
188         pminfo -f rpm.arch | grep -q "or \"$rpm_inst\"]" || return 0
189         pmsleep 0.1 
190         countdown=`expr $countdown - 1`
191     done
193     echo "rpm_package_remove_await gave up awaiting $rpm_name removal!"
194     exit 1
198 _rpm_cleanup()
200     $remove_on_cleanup && _remove_rpm_pmda
202     # replace the pmcd setup with original
203     _rpm_pmda_restore
205     # remove any newly installed RPM
206     _rpm_package_remove
208     $sudo rm -fr $tmp.*.dir
209     $sudo rm -f $tmp.*
210     exit $status
213 remove_on_cleanup=true
214 pminfo rpm >/dev/null 2>&1 && remove_on_cleanup=false