Updates docs for SR1 with final revision
[genesis.git] / fuel / include / build.sh.debug
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 ##############################################################################
10
11 ############################################################################
12 # BEGIN of build script integration test
13 #
14 integration-test () {
15
16 test_clean () {
17     make -C ${BUILD_BASE} clean
18     test_cache_clean
19     test_output_clean
20 }
21
22 test_cache_clean () {
23     rm -rf ${TEST_BUILD_CACHE_URI_DIR}
24 }
25
26 test_output_clean () {
27     rm -rf ${TEST_BUILD_RESULT_DIR}
28 }
29
30 test_prepare () {
31     test_clean
32     test_cache_clean
33     test_output_clean
34     mkdir -p ${TEST_BUILD_CACHE_URI_DIR}
35 }
36
37 test_cache_check () {
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"
43         echo "TEST FAILED"
44         exit $rc
45     fi
46
47     if [ ! -f ${TEST_BUILD_CACHE_URI_DIR}/${REMOTE_CACHE_ARCH_NAME}.tgz ]; then
48         echo "Cache archive not present"
49         echo "TEST FAILED"
50         exit $rc
51     fi
52
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"
55         echo "TEST FAILED"
56         exit $rc
57     fi
58 }
59
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"
65         echo "TEST FAILED"
66         exit $rc
67     fi
68 }
69
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
76
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}
80 }
81
82 ##### Always succeed integration test ####
83 build_tc1 () {
84     echo "TEST - $0 - ALWAYS SUCCEED"
85     set +e
86     $0 -f s tmp/output
87     rc=$?
88     set -e
89     if [ $rc -ne 0 ]; then
90         echo "TEST FAILED"
91         rc=151
92         exit $rc
93     fi
94 }
95
96 ##### Always fail integration test (TC2) ####
97 build_tc2 () {
98     echo "TEST - $0 - ALWAYS FAIL"
99     set +e
100     $0 -f f tmp/output
101     rc=$?
102     set -e
103     if [ $rc -eq 0 ]; then
104         echo "TEST FAILED"
105         rc=152
106         exit $rc
107     fi
108 }
109
110 ##### Fake build and populate dummy cache - integration test (TC3) ####
111 build_tc3 () {
112     echo "TEST - $0 - FAKE BUILD AND POPULATE DUMMY CACHE"
113     rm -rf tmp
114     mkdir -p ${TEST_BUILD_CACHE_URI_DIR}
115     set +e
116     $0 -c ${TEST_BUILD_CACHE_URI} -f PD ${TEST_BUILD_RESULT_DIR}
117     rc=$?
118     set -e
119     if [ $rc -ne 0 ]; then
120         echo "Build failed"
121         echo "TEST FAILED"
122         rc=152
123         exit $rc
124     fi
125
126     rc=153
127     test_output_check
128
129     rc=154
130     test_cache_check
131 }
132
133 ##### Fake build usng dummy cache integration test (TC4) ####
134 build_tc4 () {
135     echo "TEST - $0 - FAKE BUILD USING DUMMY CACHE"
136     set +e
137     $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR}
138     rc=$?
139     set -e
140     if [ $rc -ne 0 ]; then
141         echo "Build failed"
142         echo "TEST FAILED"
143         rc=155
144         exit $rc
145     fi
146
147     rc=156
148     test_output_check
149
150     rc=157
151     test_cache_check
152 }
153
154 #### Fake build and repopulate cache because cache non existant (TC5) ####
155 build_tc5 () {
156     echo "TEST - $0 - FAKE BUILD AND REPOPULATE CACHE BECAUSE NON EXISTANT"
157     rm -rf ${TEST_BUILD_CACHE_URI_DIR}/*
158     set +e
159     $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR}
160     rc=$?
161     set -e
162     if [ $rc -ne 0 ]; then
163         echo "Build failed"
164         echo "TEST FAILED"
165         rc=158
166         exit $rc
167     fi
168
169     rc=159
170     test_output_check
171
172     rc=160
173     test_cache_check
174 }
175
176 #### Fake build and repopulate cache because cache is ivalidated (TC6) ####
177 build_tc6 () {
178     echo "TEST - $0 - FAKE BUILD AND REPOPULATE DUE TO CACHE INVALIDATION"
179     test_invalidate_cache
180     set +e
181     $0 -c ${TEST_BUILD_CACHE_URI} -f D ${TEST_BUILD_RESULT_DIR}
182     rc=$?
183     set -e
184     if [ $rc -ne 0 ]; then
185         echo "Build failed"
186         echo "TEST FAILED"
187         rc=161
188         exit $rc
189     fi
190
191     rc=162
192     test_output_check
193
194     rc=163
195     test_cache_check
196 }
197
198 #### Real build and populate cache (TC7) ####
199 build_tc7 () {
200     echo "TEST - $0 - FULL BUILD AND POPULATE CACHE"
201     test_prepare
202     BUILD_START=$(date +%s)
203     set +e
204     $0 -c ${TEST_BUILD_CACHE_URI} -f Pi ${TEST_BUILD_RESULT_DIR}
205     rc=$?
206     set -e
207     if [ $rc -ne 0 ]; then
208         echo "Build failed"
209         echo "TEST FAILED"
210         rc=164
211         exit $rc
212     fi
213
214     BUILD_TIME=$(($(date +%s)-${BUILD_START}))
215     rc=165
216     test_output_check
217     rc=166
218     test_cache_check
219 }
220
221 #### Real build using cache from TC7 (TC8) ####
222 build_tc8 () {
223     echo "TEST - $0 - INCREMENTAL BUILD AND USING CACHE"
224     BUILD_START=$(date +%s)
225     set +e
226     $0 -c ${TEST_BUILD_CACHE_URI} -f i ${TEST_BUILD_RESULT_DIR}
227     rc=$?
228     set -e
229     if [ $rc -ne 0 ]; then
230         echo "Build failed"
231         echo "TEST FAILED"
232         rc=167
233         exit $rc
234     fi
235     BUILD_TIME=$(($(date +%s)-${BUILD_START}))
236     test_output_check
237     rc=168
238     test_cache_check
239     rc=169
240 }
241
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
246
247 TEST_START=$(date +%s)
248 # Run test case 1: Always succeed integration test
249 echo ==========================================================================
250 echo ========================= RUNNING TEST CASE 1 ============================
251 echo ==========================================================================
252 test_prepare
253 build_tc1
254
255 # Run test case 2: Always fail integration test
256 echo ==========================================================================
257 echo ========================= RUNNING TEST CASE 2 ============================
258 echo ==========================================================================
259 test_prepare
260 build_tc2
261
262 # Run test case 3: Fake build and populate a build cach
263 echo ==========================================================================
264 echo ========================= RUNNING TEST CASE 3 ============================
265 echo ==========================================================================
266 test_prepare
267 build_tc3
268
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 ==========================================================================
273 build_tc4
274
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 ==========================================================================
279 test_prepare
280 build_tc5
281
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
287 build_tc4
288
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 ==========================================================================
294     test_prepare
295     build_tc7
296     POPULATE_CACHE_TIME=${BUILD_TIME}
297 fi
298
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 ==========================================================================
304     build_tc8
305     PARTIAL_BUILD_TIME=${BUILD_TIME}
306 fi
307
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
315     build_tc8
316 fi
317
318 TEST_TIME=$(($(date +%s)-${TEST_START}))
319
320 rm -rf tmp
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"
325 fi
326 rc=0
327 exit $rc
328 }
329 #
330 # END of build script integration test
331 ############################################################################
332
333 ############################################################################
334 # BEGIN of debug_make - a fake make initiated with -D for debugging
335 #
336 debug_make () {
337     make -C ${BUILD_BASE} clean
338     echo "This is a fake debug fuel .iso image" > ${BUILD_BASE}/fuel-6.0.1.iso
339
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
345
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
352 }
353 #
354 # END of debug_make
355 ############################################################################