summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/lsb/lsbtest/LSB_Test.sh')
-rw-r--r--meta/recipes-extended/lsb/lsbtest/LSB_Test.sh510
1 files changed, 510 insertions, 0 deletions
diff --git a/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh b/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh
new file mode 100644
index 0000000000..f14f485285
--- /dev/null
+++ b/meta/recipes-extended/lsb/lsbtest/LSB_Test.sh
@@ -0,0 +1,510 @@
1#!/bin/bash
2
3# Copyright (C) 2012 Wind River Systems, Inc.
4#
5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License version 2 as
7# published by the Free Software Foundation.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12# See the GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, write to the Free Software
16# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19WORK_DIR="/opt/lsb-test"
20
21if [ `id -u` -ne 0 ]
22then
23 cat << EOF
24 In order to install and run LSB testsuite, you need administrator privileges.
25 You are currently running this script as an unprivileged user.
26
27EOF
28 exit 1
29fi
30
31ARCH=`uname -m`
32if [ ${ARCH} != "i686" ] && [ ${ARCH} != "x86_64" ] && [ ${ARCH} != "ppc" ]
33then
34 echo "Error: Unsupported architecture"
35 exit 1
36fi
37
38which rpm
39if [ $? -ne 0 ]
40then
41 echo "No rpm command found"
42 exit 1
43fi
44
45RET=0
46
47cd ${WORK_DIR} || exit 1
48# Step 1: Download the LSB Packages
49echo ""
50echo "Download LSB packages..."
51echo ""
52
53if [ ! -e ./packages_list ]
54then
55 echo "Error: Could not find packages list" >&2
56 exit 1
57fi
58
59. ./packages_list
60
61PACKAGES_DIR="/var/opt/lsb/test/manager/packages/ftp.linuxfoundation.org/pub/lsb"
62
63BASE_PACKAGES_DIR="${PACKAGES_DIR}/base/${LSB_RELEASE}/binary"
64RUNTIME_BASE_PACKAGES_DIR="${PACKAGES_DIR}/test_suites/released-all/binary/runtime"
65RUNTIME_PACKAGES_DIR="${PACKAGES_DIR}/test_suites/${LSB_RELEASE}/binary/runtime"
66APP_PACKAGES_DIR="${PACKAGES_DIR}/app-battery/${LSB_RELEASE}/${LSB_ARCH}"
67APP_TESTFILES_DIR="${PACKAGES_DIR}/app-battery/tests"
68SNAPSHOTS_TESTFILES_DIR="${PACKAGES_DIR}/snapshots/appbat/tests"
69
70if [ ! -d ${PACKAGES_DIR} ]
71then
72 mkdir -p ${PACKAGES_DIR}
73fi
74
75if [ ! -d ${BASE_PACKAGES_DIR} ]
76then
77 mkdir -p ${BASE_PACKAGES_DIR}
78fi
79
80if [ ! -d ${RUNTIME_BASE_PACKAGES_DIR} ]
81then
82 mkdir -p ${RUNTIME_BASE_PACKAGES_DIR}
83fi
84
85if [ ! -d ${RUNTIME_PACKAGES_DIR} ]
86then
87 mkdir -p ${RUNTIME_PACKAGES_DIR}
88fi
89
90if [ ! -d ${APP_PACKAGES_DIR} ]
91then
92 mkdir -p ${APP_PACKAGES_DIR}
93fi
94
95if [ ! -d ${APP_TESTFILES_DIR} ]
96then
97 mkdir -p ${APP_TESTFILES_DIR}
98fi
99
100# Official download server list. You can replace them with your own server.
101SERVER_IPADDR="140.211.169.23"
102SERVER_NAME="ftp.linuxfoundation.org"
103
104if ! `grep -F -q "${SERVER_NAME}" /etc/hosts`; then
105 echo "${SERVER_IPADDR} ${SERVER_NAME} ${SERVER_NAME}" >> /etc/hosts
106fi
107
108#ping -c 5 ${SERVER_NAME}
109#if [ $? -ne 0 ]
110#then
111# echo "The server: ${SERVER_NAME} is unreachable"
112# exit 1
113#fi
114
115SERVER1="\
116 http://${SERVER_NAME}/pub/lsb/base/${LSB_RELEASE}/binary"
117SERVER2="\
118 http://${SERVER_NAME}/pub/lsb/test_suites/released-all/binary/runtime"
119SERVER3="\
120 http://${SERVER_NAME}/pub/lsb/test_suites/${LSB_RELEASE}/binary/runtime"
121SERVER4="\
122 http://${SERVER_NAME}/pub/lsb/app-battery/${LSB_RELEASE}/${LSB_ARCH}"
123SERVER5="\
124 http://${SERVER_NAME}/pub/lsb/app-battery/tests"
125
126# We using "curl" as a download tool, "wget" is an alternative.
127CURL=`which curl`
128WGET=`which wget`
129if [ ! -z ${CURL} ]
130then
131 DOWNLOAD_CMD="${CURL} -R -L --retry 3 --retry-delay 4 --connect-timeout 180 --compressed -C - -o"
132elif [ ! -z ${WGET} ]
133then
134 DOWNLOAD_CMD="${WGET} -c -t 5 -O"
135else
136 echo "Can not find a download tool, please install curl or wget."
137 exit 1
138fi
139
140cd ${BASE_PACKAGES_DIR}
141for pkg in ${BASE_PACKAGES_LIST}; do
142 if [ ! -f ${pkg} ]
143 then
144 #${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER1}/${pkg} > /dev/null 2>&1
145 ${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER1}/${pkg}
146 if [ $? -eq 0 ]
147 then
148 mv -f ${pkg}".#part" ${pkg}
149 echo "Download ${pkg} successfully."
150 else
151 echo "Download ${pkg} failed."
152 RET=1
153 fi
154 fi
155done
156
157cd ${RUNTIME_BASE_PACKAGES_DIR}
158for pkg in ${RUNTIME_BASE_PACKAGES_LIST}; do
159 if [ ! -f ${pkg} ]
160 then
161 #${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER2}/${pkg} > /dev/null 2>&1
162 ${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER2}/${pkg}
163 if [ $? -eq 0 ]
164 then
165 mv -f ${pkg}".#part" ${pkg}
166 echo "Download ${pkg} successfully."
167 else
168 echo "Download ${pkg} failed."
169 RET=1
170 fi
171 fi
172done
173
174cd ${RUNTIME_PACKAGES_DIR}
175for pkg in ${RUNTIME_PACKAGES_LIST}; do
176 if [ ! -f ${pkg} ]
177 then
178 #${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER3}/${pkg} > /dev/null 2>&1
179 ${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER3}/${pkg}
180 if [ $? -eq 0 ]
181 then
182 mv -f ${pkg}".#part" ${pkg}
183 echo "Download ${pkg} successfully."
184 else
185 echo "Download ${pkg} failed."
186 RET=1
187 fi
188 fi
189done
190
191cd ${APP_PACKAGES_DIR}
192for pkg in ${APP_PACKAGES_LIST}; do
193 if [ ! -f ${pkg} ]
194 then
195 #${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER4}/${pkg} > /dev/null 2>&1
196 ${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER4}/${pkg}
197 if [ $? -eq 0 ]
198 then
199 mv -f ${pkg}".#part" ${pkg}
200 echo "Download ${pkg} successfully."
201 else
202 echo "Download ${pkg} failed."
203 RET=1
204 fi
205 fi
206done
207
208cd ${APP_TESTFILES_DIR}
209for pkg in ${APP_TESTFILES_LIST}; do
210 if [ ! -f ${pkg} ]
211 then
212 #${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER5}/${pkg} > /dev/null 2>&1
213 ${DOWNLOAD_CMD} ${pkg}".#part" ${SERVER5}/${pkg}
214 if [ $? -eq 0 ]
215 then
216 mv -f ${pkg}".#part" ${pkg}
217 echo "Download ${pkg} successfully."
218 else
219 echo "Download ${pkg} failed."
220 RET=1
221 fi
222 fi
223done
224
225if [ ${RET} -ne 0 ]
226then
227 echo "Download some packages failed. Please download them again."
228 exit 1
229fi
230
231# Step 2: Install the LSB Packages
232echo ""
233echo "Install LSB packages..."
234echo ""
235
236# Kill lighttpd
237ps aux | grep "lighttpd" | grep -v -q "grep"
238if [ $? -eq 0 ]
239then
240 killall lighttpd >/dev/null 2>&1
241fi
242
243# Start avahi-daemon
244ps aux | grep "avahi-daemon" | grep -v -q "grep"
245if [ $? -ne 0 ]
246then
247 /etc/init.d/avahi-daemon start >/dev/null 2>&1
248fi
249
250LSB_START_CMD="/opt/lsb/test/manager/bin/dist-checker-start.pl"
251LSB_STOP_CMD="/opt/lsb/test/manager/bin/dist-checker-stop.pl"
252
253PLATFORM_FILE="/etc/rpm/platform"
254
255RPM_INSTALL_CMD="rpm --quiet --nodeps --replacepkgs --nosignature -i"
256RPM_INSTALL_CMD_NOSCRIPTS="rpm --quiet --nodeps --replacepkgs --noscripts --nosignature -i"
257
258# If the lsb has been started, stop it first.
259if [ -x ${LSB_STOP_CMD} ]
260then
261 ${LSB_STOP_CMD}
262fi
263
264if [ ! -d /etc/rpm ]
265then
266 mkdir -p /etc/rpm
267fi
268
269if [ ! -f ${PLATFORM_FILE} ]
270then
271 touch ${PLATFORM_FILE}
272fi
273
274if ! `grep -F -q "noarch-suse" ${PLATFORM_FILE}`; then
275 if [ ${ARCH} == i686 ];then
276 echo "i486-suse" >> ${PLATFORM_FILE}
277 echo "i486-noarch" >> ${PLATFORM_FILE}
278 echo "i486-pc" >> ${PLATFORM_FILE}
279 echo "noarch-suse" >> ${PLATFORM_FILE}
280 else
281 echo "${ARCH}-suse" >> ${PLATFORM_FILE}
282 echo "${ARCH}-noarch" >> ${PLATFORM_FILE}
283 echo "${ARCH}-pc" >> ${PLATFORM_FILE}
284 echo "noarch-suse" >> ${PLATFORM_FILE}
285 fi
286fi
287
288if [ -d ${BASE_PACKAGES_DIR} ]
289then
290 cd ${BASE_PACKAGES_DIR}
291 for pkg in ${BASE_PACKAGES_LIST}
292 do
293 rpm --quiet -q ${pkg%\.*}
294 if [ $? -ne 0 ]; then
295 $RPM_INSTALL_CMD ${pkg}
296 fi
297 done
298fi
299
300if [ -d ${RUNTIME_BASE_PACKAGES_DIR} ]
301then
302 cd ${RUNTIME_BASE_PACKAGES_DIR}
303 for pkg in ${RUNTIME_BASE_PACKAGES_LIST}
304 do
305 rpm --quiet -q ${pkg%\.*}
306 if [ $? -ne 0 ]; then
307 $RPM_INSTALL_CMD ${pkg}
308 fi
309 done
310fi
311
312if [ -d ${RUNTIME_PACKAGES_DIR} ]
313then
314 cd ${RUNTIME_PACKAGES_DIR}
315 for pkg in ${RUNTIME_PACKAGES_LIST}
316 do
317 rpm --quiet -q ${pkg%\.*}
318 if [ $? -ne 0 ]; then
319 $RPM_INSTALL_CMD ${pkg}
320 fi
321 done
322fi
323
324if [ -d ${APP_PACKAGES_DIR} ]
325then
326 cd ${APP_PACKAGES_DIR}
327 for pkg in ${APP_PACKAGES_LIST}
328 do
329 echo "${pkg}" | grep -q "apache\|xpdf"
330 if [ $? -eq 0 ]
331 then
332 rpm --quiet -q ${pkg%\.*}
333 if [ $? -ne 0 ]; then
334 $RPM_INSTALL_CMD_NOSCRIPTS ${pkg}
335 fi
336 else
337 rpm --quiet -q ${pkg%\.*}
338 if [ $? -ne 0 ]; then
339 $RPM_INSTALL_CMD ${pkg}
340 fi
341 fi
342 done
343fi
344
345if [ ! -d ${SNAPSHOTS_TESTFILES_DIR} ]
346then
347 mkdir -p ${SNAPSHOTS_TESTFILES_DIR}
348fi
349
350if [ -d ${APP_TESTFILES_DIR} ]
351then
352 cd ${APP_TESTFILES_DIR}
353 for pkg in ${APP_TESTFILES_LIST}
354 do
355 cp -f ${pkg} ${SNAPSHOTS_TESTFILES_DIR}
356 done
357fi
358
359cd ${WORK_DIR}
360
361# Step 3: Set environment
362echo ""
363echo "Set environment..."
364echo ""
365
366check ()
367{
368 if [ $? -eq 0 ]
369 then
370 echo "PASS"
371 else
372 echo "FAIL"
373 exit 1
374 fi
375}
376
377echo ""
378echo "---------------------------------"
379echo "Create the Dirnames on target"
380
381if [ ! -d /etc/rpm/sysinfo ]
382then
383 mkdir -p /etc/rpm/sysinfo
384fi
385
386cat > /etc/rpm/sysinfo/Dirnames << EOF
387/etc/opt/lsb
388/home/tet/LSB.tools
389/opt/lsb-tet3-lite/lib/ksh
390/opt/lsb-tet3-lite/lib/perl
391/opt/lsb-tet3-lite/lib/posix_sh
392/opt/lsb-tet3-lite/lib/tet3
393/opt/lsb-tet3-lite/lib/xpg3sh
394/opt/lsb/appbat/lib/python2.4/site-packages/qm
395/opt/lsb/appbat/lib/python2.4/site-packages/qm/external
396/opt/lsb/appbat/lib/python2.4/site-packages/qm/external/DocumentTemplate
397/opt/lsb/appbat/lib/python2.4/site-packages/qm/test
398/opt/lsb/appbat/lib/python2.4/site-packages/qm/test/classes
399/opt/lsb/appbat/lib/python2.4/site-packages/qm/test/web
400/opt/lsb/test/doc
401/opt/lsb/test/lib
402/opt/lsb/test/qm/diagnostics
403/opt/lsb/test/qm/doc
404/opt/lsb/test/qm/doc/test/html
405/opt/lsb/test/qm/doc/test/print
406/opt/lsb/test/qm/dtml
407/opt/lsb/test/qm/dtml/test
408/opt/lsb/test/qm/messages/test
409/opt/lsb/test/qm/tutorial/test/tdb
410/opt/lsb/test/qm/tutorial/test/tdb/QMTest
411/opt/lsb/test/qm/web
412/opt/lsb/test/qm/web/images
413/opt/lsb/test/qm/web/stylesheets
414/opt/lsb/test/qm/xml
415/opt/lsb/test/share
416/usr/share/doc/lsb-runtime-test
417/var/opt/lsb
418/opt/lsb/test/desktop
419/opt/lsb/test/desktop/fontconfig
420/opt/lsb/test/desktop/freetype
421/opt/lsb/test/desktop/gtkvts
422/opt/lsb/test/desktop/libpng
423/opt/lsb/test/desktop/qt3
424/opt/lsb/test/desktop/xft
425/opt/lsb/test/desktop/xml
426/opt/lsb/test/desktop/xrender
427
428
429EOF
430
431if [ -f /etc/rpm/sysinfo/Dirnames ]
432then
433 echo "Success to creat Dirnames file"
434else
435 echo "Fail to creat Dirnames file"
436fi
437
438echo ""
439echo "---------------------------------"
440echo "Update cache"
441ldconfig
442check;
443
444# Check loop device
445if [ ! -b /dev/loop0 ]
446then
447 insmod /lib/modules/`uname -r`/kernel/drivers/block/loop.ko
448 if [ $? != 0 ];then
449 echo "Insmod loop.ko failed."
450 fi
451fi
452
453# Resolve localhost
454LOCALHOST=`hostname`
455if ! `grep -F -q "$LOCALHOST" /etc/hosts`; then
456 echo "127.0.0.1 $LOCALHOST" >> /etc/hosts
457fi
458
459# Workaround to add part of locales for LSB test
460localedef -i de_DE -f ISO-8859-1 de_DE
461localedef -i de_DE -f ISO-8859-15 de_DE.ISO-8859-15
462localedef -i de_DE -f UTF-8 de_DE.UTF-8
463localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
464localedef -i en_HK -f ISO-8859-1 en_HK
465localedef -i en_PH -f ISO-8859-1 en_PH
466localedef -i en_US -f ISO-8859-15 en_US.ISO-8859-15
467localedef -i en_US -f ISO-8859-1 en_US.ISO-8859-1
468localedef -i en_US -f ISO-8859-1 en_US
469localedef -i en_US -f UTF-8 en_US.UTF-8
470localedef -i en_US -f ISO-8859-1 en_US.ISO8859-1
471localedef -i es_MX -f ISO-8859-1 es_MX
472localedef -i fr_FR -f ISO-8859-1 fr_FR
473localedef -i it_IT -f ISO-8859-1 it_IT
474localedef -i ja_JP -f EUC-JP ja_JP.eucjp
475localedef -i se_NO -f UTF-8 se_NO.UTF-8
476localedef -i ta_IN -f UTF-8 ta_IN
477
478echo ""
479echo "Installation done!"
480echo ""
481
482# Step 4: Start LSB test
483if [ -x ${LSB_START_CMD} ]
484then
485 ${LSB_START_CMD}
486fi
487
488echo "---------------------------------"
489echo "Run all the certification version of LSB Tests"
490echo "---------------------------------"
491
492LSB_DIST_CHECKER="/opt/lsb/test/manager/utils/dist-checker.pl"
493SESSION="${WORK_DIR}/session"
494if [ ! -e ${SESSION} ]
495then
496 echo "Error: Could not find session file."
497 echo "You must run LSB test from webbrower."
498 exit 1
499fi
500
501if [ -x ${LSB_DIST_CHECKER} ]
502then
503 ${LSB_DIST_CHECKER} -v2 -f ${SESSION}
504 check
505fi
506
507echo ""
508echo "LSB test complete. Please check the log file in /var/opt/lsb/test/manager/results/"
509echo ""
510