blob: 7b3a650b68c307c4b8ba61d8a42391fcfe61b9e8 [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
54 # The below sleep command is intentional: LAVA could be under heavy load so previous job creation can
55 # take 'some' time
56 sleep 2
57
58 LAVAJOB_ID=$(curl --retry 4 ${QA_SERVER}/api/testjobs/${TESTJOB_ID}/?fields=job_id)
59
60 # check that rest query at least get non-empty value
61 if [ -n "${LAVAJOB_ID}" ]; then
62
63 # Get the numeric ID
64 LAVAJOB_ID=$(echo ${LAVAJOB_ID} | jq '.job_id')
65 LAVAJOB_ID="${LAVAJOB_ID//\"/}"
66 if [ -n "${LAVAJOB_ID}" ]; then
67 echo "LAVA URL: https://${LAVA_SERVER}/scheduler/job/${LAVAJOB_ID} LAVA JOB ID: ${LAVAJOB_ID}"
68
Leonardo Sandovaleb94e912021-01-29 12:23:59 -060069 resilient_cmd lavacli identities add --username ${LAVA_USER} --token ${LAVA_TOKEN} --uri "https://${LAVA_SERVER}/RPC2" default
70 resilient_cmd lavacli jobs wait ${LAVAJOB_ID}
71 resilient_cmd lavacli jobs logs ${LAVAJOB_ID} > "${WORKSPACE}/lava.log"
Leonardo Sandovala8078d62021-02-11 16:29:25 -060072
73 # Fetch and store LAVA job result (1 failure, 0 success)
74 resilient_cmd lavacli results ${LAVAJOB_ID} | tee "${WORKSPACE}/lava.res"
75 if grep '\[fail\]' "${WORKSPACE}/lava.res"; then
76 echo "LAVA JOB RESULT: 1"
77 else
78 echo "LAVA JOB RESULT: 0"
79 fi
Leonardo Sandoval9f159802021-01-20 16:47:25 -060080 else
81 echo "LAVA Job ID could not be obtained"
82 fi
83 else
84 echo "LAVA Job ID could not be obtained"
85 fi
Milosz Wasilewski10438582020-12-03 11:36:21 +000086 fi
87fi