aboutsummaryrefslogtreecommitdiffstats
path: root/fuel/include/build.sh.debug
diff options
context:
space:
mode:
Diffstat (limited to 'fuel/include/build.sh.debug')
-rw-r--r--fuel/include/build.sh.debug355
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
+############################################################################