1 ##############################################################################
2 # Copyright (c) 2015 Ericsson AB and others.
3 # stefan.k.berg@ericsson.com
4 # jonas.bjurel@ericsson.com
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
11 ############################################################################
12 # BEGIN of build script integration test
17 make -C ${BUILD_BASE} clean
23 rm -rf ${TEST_BUILD_CACHE_URI_DIR}
26 test_output_clean () {
27 rm -rf ${TEST_BUILD_RESULT_DIR}
34 mkdir -p ${TEST_BUILD_CACHE_URI_DIR}
38 if [ ! -f ${BUILD_BASE}/fuel-6.0.1.iso ] || \
39 [ ! -f ${BUILD_BASE}/.versions ] || \
40 [ ! -f ${BUILD_BASE}/opendaylight/.odl-build-history ]; \
41 [ ! -f ${BUILD_BASE}/opendaylight/.odl-build.log ]; then
42 echo "Cache not present in the build system"
47 if [ ! -f ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ]; then
48 echo "Cache archive not present"
53 if tar -tf ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ${CACHE_DIR}/.mark > /dev/null 2>&1; then
54 echo "Cache archive is invalidated"
60 test_output_check () {
61 if [ ! -f ${TEST_BUILD_RESULT_DIR}/*.iso ] || \
62 [ ! -f ${TEST_BUILD_RESULT_DIR}/*.txt ] || \
63 [ ! -f ${TEST_BUILD_RESULT_DIR}/.versions ]; then
64 echo "Build output not produced by the build system"
70 test_invalidate_cache () {
71 tar -C ${TEST_BUILD_CACHE_URI_DIR} -xf ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz
72 echo "cache.mk 123" > ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions
73 echo "config.mk 123" >> ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions
74 echo "fuel 123" >> ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions
75 echo "odl 123" >> ${TEST_BUILD_CACHE_URI_DIR}/cache/.versions
77 echo "This file marks the invalid cache" > ${TEST_BUILD_CACHE_URI_DIR}/cache/.mark
78 rm -f ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz
79 tar --dereference -C ${TEST_BUILD_CACHE_URI_DIR} -caf ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ${CACHE_DIR}
82 ##### Always succeed integration test ####
84 echo "TEST - $0 - ALWAYS SUCCEED"
89 if [ $rc -ne 0 ]; then
96 ##### Always fail integration test (TC2) ####
98 echo "TEST - $0 - ALWAYS FAIL"
103 if [ $rc -eq 0 ]; then
110 ##### Fake build and populate dummy cache - integration test (TC3) ####
112 echo "TEST - $0 - FAKE BUILD AND POPULATE DUMMY CACHE"
114 mkdir -p ${TEST_BUILD_CACHE_URI_DIR}
116 $0 -c ${TEST_BUILD_CACHE_URI} -f PD ${TEST_BUILD_RESULT_DIR}
119 if [ $rc -ne 0 ]; then
133 ##### Fake build usng dummy cache integration test (TC4) ####
135 echo "TEST - $0 - FAKE BUILD USING DUMMY CACHE"
137 $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR}
140 if [ $rc -ne 0 ]; then
154 #### Fake build and repopulate cache because cache non existant (TC5) ####
156 echo "TEST - $0 - FAKE BUILD AND REPOPULATE CACHE BECAUSE NON EXISTANT"
157 rm -rf ${TEST_BUILD_CACHE_URI_DIR}/*
159 $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR}
162 if [ $rc -ne 0 ]; then
176 #### Fake build and repopulate cache because cache is ivalidated (TC6) ####
178 echo "TEST - $0 - FAKE BUILD AND REPOPULATE DUE TO CACHE INVALIDATION"
179 test_invalidate_cache
181 $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR}
184 if [ $rc -ne 0 ]; then
198 #### Real build and populate cache (TC7) ####
200 echo "TEST - $0 - FULL BUILD AND POPULATE CACHE"
202 BUILD_START=$(date +%s)
204 $0 -c ${TEST_BUILD_CACHE_URI} -f Pi ${TEST_BUILD_RESULT_DIR}
207 if [ $rc -ne 0 ]; then
214 BUILD_TIME=$(($(date +%s)-${BUILD_START}))
221 #### Real build using cache from TC7 (TC8) ####
223 echo "TEST - $0 - INCREMENTAL BUILD AND USING CACHE"
224 BUILD_START=$(date +%s)
226 $0 -c ${TEST_BUILD_CACHE_URI} -f i ${TEST_BUILD_RESULT_DIR}
229 if [ $rc -ne 0 ]; then
235 BUILD_TIME=$(($(date +%s)-${BUILD_START}))
242 TEST_BUILD_ARTIFACT_DIR=${BUILD_BASE}/test
243 TEST_BUILD_CACHE_URI_DIR=${TEST_BUILD_ARTIFACT_DIR}
244 TEST_BUILD_CACHE_URI=file://${TEST_BUILD_CACHE_URI_DIR}
245 TEST_BUILD_RESULT_DIR=${BUILD_BASE}/tmp/output
247 TEST_START=$(date +%s)
248 # Run test case 1: Always succeed integration test
249 echo ==========================================================================
250 echo ========================= RUNNING TEST CASE 1 ============================
251 echo ==========================================================================
255 # Run test case 2: Always fail integration test
256 echo ==========================================================================
257 echo ========================= RUNNING TEST CASE 2 ============================
258 echo ==========================================================================
262 # Run test case 3: Fake build and populate a build cach
263 echo ==========================================================================
264 echo ========================= RUNNING TEST CASE 3 ============================
265 echo ==========================================================================
269 # Run test case 4: Fake build using the build cache produced in TC 3
270 echo ==========================================================================
271 echo ========================= RUNNING TEST CASE 4 ============================
272 echo ==========================================================================
275 # Run test case 5: Fake build and repopulate the build cache as there is no existing one
276 echo ==========================================================================
277 echo ========================= RUNNING TEST CASE 5 ============================
278 echo ==========================================================================
282 # Run test case 6: Fake build and repopulate the build cache as there the current one is invalidated/outdated
283 echo ==========================================================================
284 echo ========================= RUNNING TEST CASE 6 ============================
285 echo ==========================================================================
286 test_invalidate_cache
289 # Run test case 7: Build from upstream repos and populate the build cache
290 if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then
291 echo ==========================================================================
292 echo ========================= RUNNING TEST CASE 7 ============================
293 echo ==========================================================================
296 POPULATE_CACHE_TIME=${BUILD_TIME}
299 # Run test case 8: Build from cache produced in TC7
300 if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then
301 echo ==========================================================================
302 echo ========================= RUNNING TEST CASE 8 ============================
303 echo ==========================================================================
305 PARTIAL_BUILD_TIME=${BUILD_TIME}
308 # Run test case 9: Build and repopulate the cache as the current one is invalidated/not up to date
309 if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then
310 echo ==========================================================================
311 echo ========================= RUNNING TEST CASE 9 ============================
312 echo ==========================================================================
313 echo "TEST - $0 - REPOPULATING CACHE DUE TO CACHE INVALIDATION"
314 test_invalidate_cache
318 TEST_TIME=$(($(date +%s)-${TEST_START}))
321 echo "All tests passed!, test duration was ${TEST_TIME} seconds"
322 if [ ${FULL_INTEGRATION_TEST} -eq 1 ]; then
323 echo "Full build took ${POPULATE_CACHE_TIME} second"
324 echo "Incremental build took ${PARTIAL_BUILD_TIME} seconds"
330 # END of build script integration test
331 ############################################################################
333 ############################################################################
334 # BEGIN of debug_make - a fake make initiated with -D for debugging
337 make -C ${BUILD_BASE} clean
338 echo "This is a fake debug fuel .iso image" > ${BUILD_BASE}/fuel-6.0.1.iso
340 echo "This is a fake debug versions file" > ${BUILD_BASE}/.versions
341 echo "cache.mk" $(md5sum ${BUILD_BASE}/cache.mk | cut -f1 -d " ") >> ${BUILD_BASE}/.versions
342 echo "config.mk" $(md5sum ${BUILD_BASE}/config.mk | cut -f1 -d " ") >> ${BUILD_BASE}/.versions
343 echo "fuel" $(git ls-remote $(make -C ${BUILD_BASE} get-fuel-repo | grep https) | awk '{print $(NF-1)}') >> ${BUILD_BASE}/.versions
344 echo "odl" $(git ls-remote $(make -C ${BUILD_BASE} get-odl-repo | grep https) | awk '{print $(NF-1)}') >> ${BUILD_BASE}/.versions
346 rm -rf ${BUILD_BASE}/release
347 mkdir ${BUILD_BASE}/release
348 echo "This is a fake debug OPNFV .iso image" > ${BUILD_BASE}/release/fake-debug.iso
349 echo "This is a fake debug OPNFV .iso.txt message" > ${BUILD_BASE}/release/fake-debug.iso.txt
350 echo "This a fake debug odl build history" > ${BUILD_BASE}/opendaylight/.odl-build-history
351 echo "This a fake debug odl build log" > ${BUILD_BASE}/opendaylight/.odl-build.log
355 ############################################################################