diff options
Diffstat (limited to 'fuel/include/build.sh.debug')
-rw-r--r-- | fuel/include/build.sh.debug | 355 |
1 files changed, 355 insertions, 0 deletions
diff --git a/fuel/include/build.sh.debug b/fuel/include/build.sh.debug new file mode 100644 index 000000000..b6594cb16 --- /dev/null +++ b/fuel/include/build.sh.debug @@ -0,0 +1,355 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +############################################################################ +# BEGIN of build script integration test +# +integration-test () { + +test_clean () { + make -C ${BUILD_BASE} clean + test_cache_clean + test_output_clean +} + +test_cache_clean () { + rm -rf ${TEST_BUILD_CACHE_URI_DIR} +} + +test_output_clean () { + rm -rf ${TEST_BUILD_RESULT_DIR} +} + +test_prepare () { + test_clean + test_cache_clean + test_output_clean + mkdir -p ${TEST_BUILD_CACHE_URI_DIR} +} + +test_cache_check () { + if [ ! -f ${BUILD_BASE}/fuel-6.0.1.iso ] || \ + [ ! -f ${BUILD_BASE}/.versions ] || \ + [ ! -f ${BUILD_BASE}/opendaylight/.odl-build-history ]; \ + [ ! -f ${BUILD_BASE}/opendaylight/.odl-build.log ]; then + echo "Cache not present in the build system" + echo "TEST FAILED" + exit $rc + fi + + if [ ! -f ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ]; then + echo "Cache archive not present" + echo "TEST FAILED" + exit $rc + fi + + if tar -tf ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ${CACHE_DIR}/.mark > /dev/null 2>&1; then + echo "Cache archive is invalidated" + echo "TEST FAILED" + exit $rc + fi +} + +test_output_check () { + if [ ! -f ${TEST_BUILD_RESULT_DIR}/*.iso ] || \ + [ ! -f ${TEST_BUILD_RESULT_DIR}/*.txt ] || \ + [ ! -f ${TEST_BUILD_RESULT_DIR}/.versions ]; then + echo "Build output not produced by the build system" + echo "TEST FAILED" + exit $rc + fi +} + +test_invalidate_cache () { + tar -C ${TEST_BUILD_CACHE_URI_DIR} -xf ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz + echo "cache.mk 123" > ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions + echo "config.mk 123" >> ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions + echo "fuel 123" >> ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions + echo "odl 123" >> ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions + + echo "This file marks the invalid cache" > ${TEST_BUILD_CACHE_URI_DIR}/cache/.mark + rm -f ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz + tar --dereference -C ${TEST_BUILD_CACHE_URI_DIR} -caf ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ${CACHE_DIR} +} + +##### Always succeed integration test #### +build_tc1 () { + echo "TEST - $0 - ALWAYS SUCCEED" + set +e + $0 -f s tmp/output + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "TEST FAILED" + rc=151 + exit $rc + fi +} + +##### Always fail integration test (TC2) #### +build_tc2 () { + echo "TEST - $0 - ALWAYS FAIL" + set +e + $0 -f f tmp/output + rc=$? + set -e + if [ $rc -eq 0 ]; then + echo "TEST FAILED" + rc=152 + exit $rc + fi +} + +##### Fake build and populate dummy cache - integration test (TC3) #### +build_tc3 () { + echo "TEST - $0 - FAKE BUILD AND POPULATE DUMMY CACHE" + rm -rf tmp + mkdir -p ${TEST_BUILD_CACHE_URI_DIR} + set +e + $0 -c ${TEST_BUILD_CACHE_URI} -f PD ${TEST_BUILD_RESULT_DIR} + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "Build failed" + echo "TEST FAILED" + rc=152 + exit $rc + fi + + rc=153 + test_output_check + + rc=154 + test_cache_check +} + +##### Fake build usng dummy cache integration test (TC4) #### +build_tc4 () { + echo "TEST - $0 - FAKE BUILD USING DUMMY CACHE" + set +e + $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR} + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "Build failed" + echo "TEST FAILED" + rc=155 + exit $rc + fi + + rc=156 + test_output_check + + rc=157 + test_cache_check +} + +#### Fake build and repopulate cache because cache non existant (TC5) #### +build_tc5 () { + echo "TEST - $0 - FAKE BUILD AND REPOPULATE CACHE BECAUSE NON EXISTANT" + rm -rf ${TEST_BUILD_CACHE_URI_DIR}/* + set +e + $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR} + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "Build failed" + echo "TEST FAILED" + rc=158 + exit $rc + fi + + rc=159 + test_output_check + + rc=160 + test_cache_check +} + +#### Fake build and repopulate cache because cache is ivalidated (TC6) #### +build_tc6 () { + echo "TEST - $0 - FAKE BUILD AND REPOPULATE DUE TO CACHE INVALIDATION" + test_invalidate_cache + set +e + $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR} + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "Build failed" + echo "TEST FAILED" + rc=161 + exit $rc + fi + + rc=162 + test_output_check + + rc=163 + test_cache_check +} + +#### Real build and populate cache (TC7) #### +build_tc7 () { + echo "TEST - $0 - FULL BUILD AND POPULATE CACHE" + test_prepare + BUILD_START=$(date +%s) + set +e + $0 -c ${TEST_BUILD_CACHE_URI} -f Pi ${TEST_BUILD_RESULT_DIR} + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "Build failed" + echo "TEST FAILED" + rc=164 + exit $rc + fi + + BUILD_TIME=$(($(date +%s)-${BUILD_START})) + rc=165 + test_output_check + rc=166 + test_cache_check +} + +#### Real build using cache from TC7 (TC8) #### +build_tc8 () { + echo "TEST - $0 - INCREMENTAL BUILD AND USING CACHE" + BUILD_START=$(date +%s) + set +e + $0 -c ${TEST_BUILD_CACHE_URI} -f i ${TEST_BUILD_RESULT_DIR} + rc=$? + set -e + if [ $rc -ne 0 ]; then + echo "Build failed" + echo "TEST FAILED" + rc=167 + exit $rc + fi + BUILD_TIME=$(($(date +%s)-${BUILD_START})) + test_output_check + rc=168 + test_cache_check + rc=169 +} + +TEST_BUILD_ARTIFACT_DIR=${BUILD_BASE}/test +TEST_BUILD_CACHE_URI_DIR=${TEST_BUILD_ARTIFACT_DIR} +TEST_BUILD_CACHE_URI=file://${TEST_BUILD_CACHE_URI_DIR} +TEST_BUILD_RESULT_DIR=${BUILD_BASE}/tmp/output + +TEST_START=$(date +%s) +# Run test case 1: Always succeed integration test +echo ========================================================================== +echo ========================= RUNNING TEST CASE 1 ============================ +echo ========================================================================== +test_prepare +build_tc1 + +# Run test case 2: Always fail integration test +echo ========================================================================== +echo ========================= RUNNING TEST CASE 2 ============================ +echo ========================================================================== +test_prepare +build_tc2 + +# Run test case 3: Fake build and populate a build cach +echo ========================================================================== +echo ========================= RUNNING TEST CASE 3 ============================ +echo ========================================================================== +test_prepare +build_tc3 + +# Run test case 4: Fake build using the build cache produced in TC 3 +echo ========================================================================== +echo ========================= RUNNING TEST CASE 4 ============================ +echo ========================================================================== +build_tc4 + +# Run test case 5: Fake build and repopulate the build cache as there is no existing one +echo ========================================================================== +echo ========================= RUNNING TEST CASE 5 ============================ +echo ========================================================================== +test_prepare +build_tc5 + +# Run test case 6: Fake build and repopulate the build cache as there the current one is invalidated/outdated +echo ========================================================================== +echo ========================= RUNNING TEST CASE 6 ============================ +echo ========================================================================== +test_invalidate_cache +build_tc4 + +# Run test case 7: Build from upstream repos and populate the build cache +if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then +echo ========================================================================== +echo ========================= RUNNING TEST CASE 7 ============================ +echo ========================================================================== + test_prepare + build_tc7 + POPULATE_CACHE_TIME=${BUILD_TIME} +fi + +# Run test case 8: Build from cache produced in TC7 +if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then +echo ========================================================================== +echo ========================= RUNNING TEST CASE 8 ============================ +echo ========================================================================== + build_tc8 + PARTIAL_BUILD_TIME=${BUILD_TIME} +fi + +# Run test case 9: Build and repopulate the cache as the current one is invalidated/not up to date +if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then +echo ========================================================================== +echo ========================= RUNNING TEST CASE 9 ============================ +echo ========================================================================== + echo "TEST - $0 - REPOPULATING CACHE DUE TO CACHE INVALIDATION" + test_invalidate_cache + build_tc8 +fi + +TEST_TIME=$(($(date +%s)-${TEST_START})) + +rm -rf tmp +echo "All tests passed!, test duration was ${TEST_TIME} seconds" +if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then + echo "Full build took ${POPULATE_CACHE_TIME} second" + echo "Incremental build took ${PARTIAL_BUILD_TIME} seconds" +fi +rc=0 +exit $rc +} +# +# END of build script integration test +############################################################################ + +############################################################################ +# BEGIN of debug_make - a fake make initiated with -D for debugging +# +debug_make () { + make -C ${BUILD_BASE} clean + echo "This is a fake debug fuel .iso image" > ${BUILD_BASE}/fuel-6.0.1.iso + + echo "This is a fake debug versions file" > ${BUILD_BASE}/.versions + echo "cache.mk" $(md5sum ${BUILD_BASE}/cache.mk | cut -f1 -d " ") >> ${BUILD_BASE}/.versions + echo "config.mk" $(md5sum ${BUILD_BASE}/config.mk | cut -f1 -d " ") >> ${BUILD_BASE}/.versions + echo "fuel" $(git ls-remote $(make -C ${BUILD_BASE} get-fuel-repo | grep https) | awk '{print $(NF-1)}') >> ${BUILD_BASE}/.versions + echo "odl" $(git ls-remote $(make -C ${BUILD_BASE} get-odl-repo | grep https) | awk '{print $(NF-1)}') >> ${BUILD_BASE}/.versions + + rm -rf ${BUILD_BASE}/release + mkdir ${BUILD_BASE}/release + echo "This is a fake debug OPNFV .iso image" > ${BUILD_BASE}/release/fake-debug.iso + echo "This is a fake debug OPNFV .iso.txt message" > ${BUILD_BASE}/release/fake-debug.iso.txt + echo "This a fake debug odl build history" > ${BUILD_BASE}/opendaylight/.odl-build-history + echo "This a fake debug odl build log" > ${BUILD_BASE}/opendaylight/.odl-build.log +} +# +# END of debug_make +############################################################################ |