LSB_Test.sh 12 KB

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