-
Notifications
You must be signed in to change notification settings - Fork 899
/
test-execution-abort.sh
executable file
·124 lines (86 loc) · 2.66 KB
/
test-execution-abort.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/bin/bash
#test aborting execution from /api/execution/{id}/abort
errorMsg() {
echo "$*" 1>&2
}
assert(){
# assert expected, actual
if [ "$1" != "$2" ] ; then
errorMsg "FAIL: Expected value \"$1\" but saw: \"$2\" ${3}"
exit 2
fi
}
DIR=$(cd `dirname $0` && pwd)
# accept url argument on commandline, if '-' use default
url="$1"
if [ "-" == "$1" ] ; then
url='http://localhost:4440'
fi
apiurl="${url}/api"
VERSHEADER="X-RUNDECK-API-VERSION: 1.2"
# curl opts to use a cookie jar, and follow redirects, showing only errors
CURLOPTS="-s -S -L -c $DIR/cookies -b $DIR/cookies"
CURL="curl $CURLOPTS"
XMLSTARLET=xml
####
# Setup: create simple adhoc command execution to provide execution ID.
####
runurl="${apiurl}/run/command"
proj="test"
params="project=${proj}&exec=echo+testing+execution+api%3Bsleep+120"
# get listing
$CURL --header "$VERSHEADER" ${runurl}?${params} > $DIR/curl.out
if [ 0 != $? ] ; then
errorMsg "ERROR: failed query request"
exit 2
fi
sh $DIR/api-test-success.sh $DIR/curl.out || exit 2
#select id
execid=$($XMLSTARLET sel -T -t -v "/result/execution/@id" $DIR/curl.out)
if [ -z "$execid" ] ; then
errorMsg "FAIL: expected execution id"
exit 2
fi
####
# Test:
####
# now submit req
runurl="${apiurl}/execution/${execid}"
echo "TEST: /api/execution/${execid} ..."
params=""
# get listing
$CURL --header "$VERSHEADER" ${runurl}?${params} > $DIR/curl.out
if [ 0 != $? ] ; then
errorMsg "ERROR: failed query request"
exit 2
fi
sh $DIR/api-test-success.sh $DIR/curl.out || exit 2
#Check projects list
itemcount=$($XMLSTARLET sel -T -t -v "/result/executions/@count" $DIR/curl.out)
assert "1" "$itemcount" "execution count should be 1"
assert "running" $($XMLSTARLET sel -T -t -v "/result/executions/execution/@status" $DIR/curl.out) "execution was not running"
echo "OK"
####
# test /abort
####
runurl="${apiurl}/execution/${execid}/abort"
echo "TEST: /api/execution/${execid}/abort ..."
params=""
# pause
sleep 4
# get listing
$CURL --header "$VERSHEADER" ${runurl}?${params} > $DIR/curl.out
if [ 0 != $? ] ; then
errorMsg "ERROR: failed query request"
exit 2
fi
sh $DIR/api-test-success.sh $DIR/curl.out || exit 2
#Check projects list
astatus=$($XMLSTARLET sel -T -t -v "/result/abort/@status" $DIR/curl.out)
aexecid=$($XMLSTARLET sel -T -t -v "/result/abort/execution/@id" $DIR/curl.out)
aexecstatus=$($XMLSTARLET sel -T -t -v "/result/abort/execution/@status" $DIR/curl.out)
assert "pending" "$astatus" "Abort status should be pending"
assert "$execid" "$aexecid" "Wrong execution id in abort status"
assert "running" "$aexecstatus" "Wrong execution status in abort status"
echo "OK"
rm $DIR/curl.out