aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonrad Bańka <k.banka@samsung.com>2019-07-10 12:11:32 +0200
committerKonrad Bańka <k.banka@samsung.com>2019-07-15 14:45:46 +0200
commit670a20f33a2b741a6a5e7c7c4f7dfc9e16378a75 (patch)
treee6a0712872e750d494c71fe7758211f962524a37
parentd0182270d9169c4928bdbdefc5b83b67ff3b457e (diff)
Provide wrapper functions for issuing k8splugin API calls
In plugin.sh and plugin_edgex.sh test scenarios, there are executed many curl calls to API endpoint. As curl's default behavior for handling 4xx and 5xx status code is not perfect, wrapper functions have been created to easily ensure correctness of issued API call. Issue-ID: MULTICLOUD-686 Signed-off-by: Konrad Bańka <k.banka@samsung.com> Change-Id: I0c6dd5e4f896972245a6fa6c8c2a10d8df8ec406
-rwxr-xr-xkud/tests/_functions.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/kud/tests/_functions.sh b/kud/tests/_functions.sh
index a885bc50..483aed5c 100755
--- a/kud/tests/_functions.sh
+++ b/kud/tests/_functions.sh
@@ -33,6 +33,44 @@ function get_ovn_central_address {
echo "$(echo ${ansible_ifconfig#*>>} | tr '\n' ':')6641"
}
+function call_api {
+ #Runs curl with passed flags and provides
+ #additional error handling and debug information
+
+ #Function outputs server response body
+ #and performs validation of http_code
+
+ local status
+ local curl_response_file="$(mktemp -p /tmp)"
+ local curl_common_flags=(-s -w "%{http_code}" -o "${curl_response_file}")
+ local command=(curl "${curl_common_flags[@]}" "$@")
+
+ echo "[INFO] Running '${command[@]}'" >&2
+ if ! status="$("${command[@]}")"; then
+ echo "[ERROR] Internal curl error! '$status'" >&2
+ cat "${curl_response_file}"
+ rm "${curl_response_file}"
+ return 2
+ else
+ echo "[INFO] Server replied with status: ${status}" >&2
+ cat "${curl_response_file}"
+ rm "${curl_response_file}"
+ if [[ "${status:0:1}" =~ [45] ]]; then
+ return 1
+ else
+ return 0
+ fi
+ fi
+}
+
+function delete_resource {
+ #Issues DELETE http call to provided endpoint
+ #and further validates by following GET request
+
+ call_api -X DELETE "$1"
+ ! call_api -X GET "$1" >/dev/null
+}
+
# init_network() - This function creates the OVN resouces required by the test
function init_network {
local fname=$1