blob: 93a19d66a236bf7569711c48e13ac02cb51a33e5 [file] [log] [blame]
Milosz Wasilewski10438582020-12-03 11:36:21 +00001#!/bin/bash
2
Leonardo Sandoval9f159802021-01-20 16:47:25 -06003set -xe
Milosz Wasilewski10438582020-12-03 11:36:21 +00004
Leonardo Sandovaleb94e912021-01-29 12:23:59 -06005# Run the given command passed through parameters, if fails, try
6# at most more N-times with a pause of M-seconds until success.
7resilient_cmd() {
8 local cmd="$*"
9 local max_wait=10
10 local sleep_body=2
11 local iter=0
12
13 echo "Waiting for $cmd to complete"
14 while true; do
15 if ${cmd}; then
16 echo "$cmd job finished"
17 break
18 fi
19
20 sleep ${sleep_body}
21
22 iter=$(( iter + 1 ))
23 if [ ${iter} -ge ${max_wait} ]; then
24 return 1
25 fi
26 done
27 return 0
28}
29
Milosz Wasilewski10438582020-12-03 11:36:21 +000030ls -l ${WORKSPACE}
31
Leonardo Sandoval9f159802021-01-20 16:47:25 -060032if [ -n "${QA_SERVER_VERSION}" ]; then
33 if [ -n "${GERRIT_CHANGE_NUMBER}" ] && [ -n "${GERRIT_PATCHSET_NUMBER}" ]; then
Milosz Wasilewski10438582020-12-03 11:36:21 +000034 curl \
35 --retry 4 \
36 -X POST \
37 --header "Auth-Token: ${QA_REPORTS_TOKEN}" \
38 -d patch_source=${GERRIT_HOST} \
39 -d patch_id=${GERRIT_CHANGE_NUMBER},${GERRIT_PATCHSET_NUMBER} \
40 ${QA_SERVER}/api/createbuild/${QA_SERVER_TEAM}/${QA_SERVER_PROJECT}/${QA_SERVER_VERSION}
41 fi
42
43 TESTJOB_ID=$(curl \
44 --retry 4 \
45 -X POST \
46 --header "Auth-Token: ${QA_REPORTS_TOKEN}" \
47 --form backend=${LAVA_SERVER} \
48 --form definition=@artefacts/debug/job.yaml \
49 ${QA_SERVER}/api/submitjob/${QA_SERVER_TEAM}/${QA_SERVER_PROJECT}/${QA_SERVER_VERSION}/${DEVICE_TYPE})
Leonardo Sandoval9f159802021-01-20 16:47:25 -060050
51 if [ -n "${TESTJOB_ID}" ]; then
Milosz Wasilewski10438582020-12-03 11:36:21 +000052 echo "TEST JOB URL: ${QA_SERVER}/testjob/${TESTJOB_ID} TEST JOB ID: ${TESTJOB_ID}"
Leonardo Sandoval9f159802021-01-20 16:47:25 -060053
Leonardo Sandoval9f159802021-01-20 16:47:25 -060054
Leonardo Sandoval73d301a2021-02-12 13:42:55 -060055 # The below loop with a sleep is intentional: LAVA could be under heavy load so previous job creation can
56 # take 'some' time to get the right numeric LAVA JOB ID
57 renumber='^[0-9]+$'
58 LAVAJOB_ID="null"
59 iter=0
60 max_tries=10
61 while ! [[ $LAVAJOB_ID =~ $renumber ]]; do
62 if [ $iter -eq $max_tries ] ; then
63 LAVAJOB_ID=''
64 break
65 fi
66 sleep 2
67 LAVAJOB_ID=$(curl --retry 4 ${QA_SERVER}/api/testjobs/${TESTJOB_ID}/?fields=job_id)
68
69 # Get the job_id value (whatever it is)
70 LAVAJOB_ID=$(echo ${LAVAJOB_ID} | jq '.job_id')
71 LAVAJOB_ID="${LAVAJOB_ID//\"/}"
72
73 iter=$(( iter + 1 ))
74 done
Leonardo Sandoval9f159802021-01-20 16:47:25 -060075
76 # check that rest query at least get non-empty value
77 if [ -n "${LAVAJOB_ID}" ]; then
78
Leonardo Sandoval73d301a2021-02-12 13:42:55 -060079 echo "LAVA URL: https://${LAVA_SERVER}/scheduler/job/${LAVAJOB_ID} LAVA JOB ID: ${LAVAJOB_ID}"
Leonardo Sandoval9f159802021-01-20 16:47:25 -060080
Leonardo Sandoval73d301a2021-02-12 13:42:55 -060081 resilient_cmd lavacli identities add --username ${LAVA_USER} --token ${LAVA_TOKEN} --uri "https://${LAVA_SERVER}/RPC2" default
82 resilient_cmd lavacli jobs wait ${LAVAJOB_ID}
83 resilient_cmd lavacli jobs logs ${LAVAJOB_ID} > "${WORKSPACE}/lava.log"
Leonardo Sandovala8078d62021-02-11 16:29:25 -060084
Leonardo Sandoval73d301a2021-02-12 13:42:55 -060085 # Fetch and store LAVA job result (1 failure, 0 success)
86 resilient_cmd lavacli results ${LAVAJOB_ID} | tee "${WORKSPACE}/lava.res"
87 if grep '\[fail\]' "${WORKSPACE}/lava.res"; then
88 echo "LAVA JOB RESULT: 1"
Leonardo Sandoval9f159802021-01-20 16:47:25 -060089 else
Leonardo Sandoval73d301a2021-02-12 13:42:55 -060090 echo "LAVA JOB RESULT: 0"
Leonardo Sandoval9f159802021-01-20 16:47:25 -060091 fi
92 else
93 echo "LAVA Job ID could not be obtained"
94 fi
Milosz Wasilewski10438582020-12-03 11:36:21 +000095 fi
96fi