X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fagent_api_functions.sh;h=08c8f961eabb10a775225ea0c49bfd437a5ae628;hb=d29cf3d0088b86438722092e849d4750995f7a3b;hp=312eacb55906aa65f6c6d7a51edbc16fa357ea23;hpb=acdd3f361ff7af58b0276789cc5148180a06e552;p=nonrtric.git diff --git a/test/common/agent_api_functions.sh b/test/common/agent_api_functions.sh index 312eacb5..08c8f961 100644 --- a/test/common/agent_api_functions.sh +++ b/test/common/agent_api_functions.sh @@ -23,8 +23,11 @@ # Generic function to query the agent via the REST or DMAAP interface. # Used by all other agent api test functions +# If operation prefix is '_BATCH' the the send and get response is split in two sequences, +# one for sending the requests and one for receiving the response +# but only when using the DMAAP interface # REST or DMAAP is controlled of the base url of $ADAPTER -# arg: GET|PUT|POST|DELETE [] +# arg: (GET|PUT|POST|DELETE|GET_BATCH|PUT_BATCH|POST_BATCH|DELETE_BATCH []) | (RESPONSE ) # (Not for test scripts) __do_curl_to_agent() { echo "(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ >> $HTTPLOG @@ -39,30 +42,41 @@ __do_curl_to_agent() { httpcode=" -sw %{http_code}" accept='' content='' - + batch=0 + if [[ $1 == *"_BATCH" ]]; then + batch=1 + fi if [ $# -gt 2 ]; then content=" -H Content-Type:application/json" fi - if [ $1 == "GET" ]; then + if [ $1 == "GET" ] || [ $1 == "GET_BATCH" ]; then oper="GET" - if [ $# -ne 2 ];then + if [ $# -ne 2 ]; then paramError=1 fi - elif [ $1 == "PUT" ]; then + elif [ $1 == "PUT" ] || [ $1 == "PUT_BATCH" ]; then oper="PUT" if [ $# -eq 3 ]; then file=" --data-binary @$3" fi accept=" -H accept:application/json" - elif [ $1 == "POST" ]; then + elif [ $1 == "POST" ] || [ $1 == "POST_BATCH" ]; then oper="POST" accept=" -H accept:*/*" - if [ $# -ne 2 ];then + if [ $# -ne 2 ]; then paramError=1 fi - elif [ $1 == "DELETE" ]; then + elif [ $1 == "DELETE" ] || [ $1 == "DELETE_BATCH" ]; then oper="DELETE" - if [ $# -ne 2 ];then + if [ $# -ne 2 ]; then + paramError=1 + fi + elif [ $1 == "RESPONSE" ]; then + oper="RESPONSE" + if [ $# -ne 2 ]; then + paramError=1 + fi + if ! [ $ADAPTER == $DMAAPBASE ]; then paramError=1 fi else @@ -73,16 +87,16 @@ __do_curl_to_agent() { if [ $paramError -eq 1 ]; then ((RES_CONF_FAIL++)) echo "-Incorrect number of parameters to __do_curl_agent " $@ >> $HTTPLOG - echo "-Expected: GET|PUT|POST|DELETE []" >> $HTTPLOG + echo "-Expected: (GET|PUT|POST|DELETE|GET_BATCH|PUT_BATCH|POST_BATCH|DELETE_BATCH []) | (RESPONSE ) []" >> $HTTPLOG echo "-Returning response 000" >> $HTTPLOG echo "-000" return 1 fi - if [ $ADAPTER == $RESTBASE ]; then + if [ $ADAPTER == $RESTBASE ] || [ $ADAPTER == $RESTBASE_SECURE ]; then url=" "${ADAPTER}${2} oper=" -X "$oper - curlString="curl"${oper}${timeout}${httpcode}${accept}${content}${url}${file} + curlString="curl -k "${oper}${timeout}${httpcode}${accept}${content}${url}${file} echo " CMD: "$curlString >> $HTTPLOG if [ $# -eq 3 ]; then echo " FILE: $(<$3)" >> $HTTPLOG @@ -119,70 +133,81 @@ __do_curl_to_agent() { echo $res return 0 else - requestUrl=$2 - if [ $1 == "PUT" ] && [ $# -eq 3 ]; then - payload="$(cat $3 | tr -d '\n' | tr -d ' ' )" - echo "payload: "$payload >> $HTTPLOG - file=" --data-binary "$payload - fi - #urlencode the request url since it will be carried by send-request url - requestUrl=$(python -c "from __future__ import print_function; import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$2") - url=" "${ADAPTER}"/send-request?url="${requestUrl}"&operation="${oper} - curlString="curl -X POST${timeout}${httpcode}${content}${url}${file}" - echo " CMD: "$curlString >> $HTTPLOG - res=$($curlString) - retcode=$? - if [ $retcode -ne 0 ]; then - echo " RETCODE: "$retcode >> $HTTPLOG - echo "000" - return 1 - fi - echo " RESP: "$res >> $HTTPLOG - status=${res:${#res}-3} - if [ $status -ne 200 ]; then - echo "000" - return 1 - fi - cid=${res:0:${#res}-3} - url=" "${ADAPTER}"/receive-response?correlationid="${cid} - curlString="curl -X GET"${timeout}${httpcode}${url} - echo " CMD: "$curlString >> $HTTPLOG - res=$($curlString) - retcode=$? - if [ $retcode -ne 0 ]; then - echo " RETCODE: "$retcode >> $HTTPLOG - echo "000" - return 1 - fi - echo " RESP: "$res >> $HTTPLOG - status=${res:${#res}-3} - TS=$SECONDS - # wait of the reply from the agent... - while [ $status -eq 204 ]; do - if [ $(($SECONDS - $TS)) -gt 90 ]; then - echo " RETCODE: (timeout after 90s)" >> $HTTPLOG - echo "000" - return 1 + if [ $oper != "RESPONSE" ]; then + requestUrl=$2 + if [ $1 == "PUT" ] && [ $# -eq 3 ]; then + payload="$(cat $3 | tr -d '\n' | tr -d ' ' )" + echo "payload: "$payload >> $HTTPLOG + file=" --data-binary "$payload fi - sleep 1 - echo " CMD: "$curlString >> $HTTPLOG - res=$($curlString) - if [ $retcode -ne 0 ]; then - echo " RETCODE: "$retcode >> $HTTPLOG - echo "000" - return 1 - fi - echo " RESP: "$res >> $HTTPLOG - status=${res:${#res}-3} - done - if [ $status -eq 200 ]; then - body=${res:0:${#res}-3} - echo $body - return 0 - fi - echo "Status not 200, returning response 000" >> $HTTPLOG - echo "0000" - return 1 + #urlencode the request url since it will be carried by send-request url + requestUrl=$(python3 -c "from __future__ import print_function; import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$2") + url=" "${ADAPTER}"/send-request?url="${requestUrl}"&operation="${oper} + curlString="curl -X POST${timeout}${httpcode}${content}${url}${file}" + echo " CMD: "$curlString >> $HTTPLOG + res=$($curlString) + retcode=$? + if [ $retcode -ne 0 ]; then + echo " RETCODE: "$retcode >> $HTTPLOG + echo "000" + return 1 + fi + echo " RESP: "$res >> $HTTPLOG + status=${res:${#res}-3} + if [ $status -ne 200 ]; then + echo "000" + return 1 + fi + cid=${res:0:${#res}-3} + if [[ $batch -eq 1 ]]; then + echo $cid"200" + return 0 + fi + fi + if [ $oper == "RESPONSE" ] || [ $batch -eq 0 ]; then + if [ $oper == "RESPONSE" ]; then + cid=$2 + fi + url=" "${ADAPTER}"/receive-response?correlationid="${cid} + curlString="curl -X GET"${timeout}${httpcode}${url} + echo " CMD: "$curlString >> $HTTPLOG + res=$($curlString) + retcode=$? + if [ $retcode -ne 0 ]; then + echo " RETCODE: "$retcode >> $HTTPLOG + echo "000" + return 1 + fi + echo " RESP: "$res >> $HTTPLOG + status=${res:${#res}-3} + TS=$SECONDS + # wait of the reply from the agent... + while [ $status -eq 204 ]; do + if [ $(($SECONDS - $TS)) -gt 90 ]; then + echo " RETCODE: (timeout after 90s)" >> $HTTPLOG + echo "000" + return 1 + fi + sleep 0.01 + echo " CMD: "$curlString >> $HTTPLOG + res=$($curlString) + if [ $retcode -ne 0 ]; then + echo " RETCODE: "$retcode >> $HTTPLOG + echo "000" + return 1 + fi + echo " RESP: "$res >> $HTTPLOG + status=${res:${#res}-3} + done + if [ $status -eq 200 ]; then + body=${res:0:${#res}-3} + echo $body + return 0 + fi + echo "Status not 200, returning response 000" >> $HTTPLOG + echo "0000" + return 1 + fi fi } @@ -286,7 +311,7 @@ api_get_policies() { targetJson=$targetJson"]" echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body" "id") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED @@ -331,7 +356,7 @@ api_get_policy() { sed 's/XXX/'${2}'/g' $3 > $file targetJson=$(< $file) echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED ((RES_FAIL++)) @@ -381,7 +406,7 @@ api_put_policy() { sed 's/XXX/'${pid}'/g' $6 > $file res="$(__do_curl_to_agent PUT $query $file)" status=${res:${#res}-3} - echo -ne " Creating "$count"("$max")\033[0K\r" + echo -ne " Creating "$count"("$max")${SAMELINE}" if [ $status -ne $1 ]; then let pid=$pid+1 @@ -393,8 +418,88 @@ api_put_policy() { let pid=$pid+1 let count=$count+1 - echo -ne " Created "$count"("$max")\033[0K\r" + echo -ne " Created "$count"("$max")${SAMELINE}" + done + echo "" + + ((RES_PASS++)) + echo -e $GREEN" PASS"$EGREEN + return 0 +} + +# API Test function: PUT /policy to run in batch +# args: [] +# (Function for test scripts) +api_put_policy_batch() { + echo -e $BOLD"TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ $EBOLD + echo "TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ >> $HTTPLOG + ((RES_TEST++)) + + if [ $# -lt 6 ] || [ $# -gt 7 ]; then + __print_err " []" $@ + return 1 + fi + + ric=$3 + count=0 + max=1 + + if [ $# -eq 7 ]; then + max=$7 + fi + + pid=$5 + file=$6 + ARR="" + while [ $count -lt $max ]; do + query="/policy?id=$pid&ric=$ric&service=$2" + + if [ $4 == "NOTYPE" ]; then + query="/policy?id=$pid&ric=$ric&service=$2" + else + query="/policy?id=$pid&ric=$ric&service=$2&type=$4" + fi + + file=".p.json" + sed 's/XXX/'${pid}'/g' $6 > $file + res="$(__do_curl_to_agent PUT_BATCH $query $file)" + status=${res:${#res}-3} + echo -ne " Requested(batch) "$count"("$max")${SAMELINE}" + + if [ $status -ne 200 ]; then + let pid=$pid+1 + echo " Requested(batch) "$count"?("$max")" + echo -e $RED" FAIL. Exepected status 200 (in request), got "$status $ERED + ((RES_FAIL++)) + return 1 + fi + cid=${res:0:${#res}-3} + ARR=$ARR" "$cid + let pid=$pid+1 + let count=$count+1 + echo -ne " Requested(batch) "$count"("$max")${SAMELINE}" done + + echo "" + count=0 + for cid in $ARR; do + + res="$(__do_curl_to_agent RESPONSE $cid)" + status=${res:${#res}-3} + echo -ne " Created(batch) "$count"("$max")${SAMELINE}" + + if [ $status -ne $1 ]; then + let pid=$pid+1 + echo " Created(batch) "$count"?("$max")" + echo -e $RED" FAIL. Exepected status "$1", got "$status $ERED + ((RES_FAIL++)) + return 1 + fi + + let count=$count+1 + echo -ne " Created(batch) "$count"("$max")${SAMELINE}" + done + echo "" ((RES_PASS++)) @@ -429,7 +534,7 @@ api_delete_policy() { query="/policy?id="$pid res="$(__do_curl_to_agent DELETE $query)" status=${res:${#res}-3} - echo -ne " Deleting "$count"("$max")\033[0K\r" + echo -ne " Deleting "$count"("$max")${SAMELINE}" if [ $status -ne $1 ]; then echo " Deleted "$count"?("$max")" @@ -439,10 +544,78 @@ api_delete_policy() { fi let pid=$pid+1 let count=$count+1 - echo -ne " Deleted "$count"("$max")\033[0K\r" + echo -ne " Deleted "$count"("$max")${SAMELINE}" + done + echo "" + + ((RES_PASS++)) + echo -e $GREEN" PASS"$EGREEN + return 0 +} + +# API Test function: DELETE /policy to run in batch +# args: [count] +# (Function for test scripts) +api_delete_policy_batch() { + echo -e $BOLD"TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ $EBOLD + echo "TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ >> $HTTPLOG + ((RES_TEST++)) + + if [ $# -lt 2 ] || [ $# -gt 3 ]; then + __print_err " [count]" $@ + return 1 + fi + + count=0 + max=1 + + if [ $# -eq 3 ]; then + max=$3 + fi + + pid=$2 + ARR="" + while [ $count -lt $max ]; do + query="/policy?id="$pid + res="$(__do_curl_to_agent DELETE_BATCH $query)" + status=${res:${#res}-3} + echo -ne " Requested(batch) "$count"("$max")${SAMELINE}" + + if [ $status -ne 200 ]; then + let pid=$pid+1 + echo " Requested(batch) "$count"?("$max")" + echo -e $RED" FAIL. Exepected status 200 (in request), got "$status $ERED + ((RES_FAIL++)) + return 1 + fi + cid=${res:0:${#res}-3} + ARR=$ARR" "$cid + let pid=$pid+1 + let count=$count+1 + echo -ne " Requested(batch) "$count"("$max")${SAMELINE}" done + echo "" + count=0 + for cid in $ARR; do + + res="$(__do_curl_to_agent RESPONSE $cid)" + status=${res:${#res}-3} + echo -ne " Deleted(batch) "$count"("$max")${SAMELINE}" + + if [ $status -ne $1 ]; then + let pid=$pid+1 + echo " Deleted(batch) "$count"?("$max")" + echo -e $RED" FAIL. Exepected status "$1", got "$status $ERED + ((RES_FAIL++)) + return 1 + fi + + let count=$count+1 + echo -ne " Deleted(batch) "$count"("$max")${SAMELINE}" + done + ((RES_PASS++)) echo -e $GREEN" PASS"$EGREEN return 0 @@ -507,7 +680,7 @@ api_get_policy_ids() { targetJson=$targetJson"]" echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED @@ -550,7 +723,7 @@ api_get_policy_schema() { targetJson=$(< $3) echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED @@ -602,13 +775,13 @@ api_get_policy_schemas() { if [ $file == "NOFILE" ]; then targetJson=$targetJson"{}" else - targetJson=$targetJson$(< $3) + targetJson=$targetJson$(< $file) fi done targetJson=$targetJson"]" echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED @@ -666,7 +839,7 @@ api_get_policy_status() { echo "TARGET JSON: $targetJson" >> $HTTPLOG body=${res:0:${#res}-3} - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED @@ -725,7 +898,7 @@ api_get_policy_types() { targetJson=$targetJson"]" echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED @@ -841,7 +1014,7 @@ api_get_rics() { if [ $# -gt 2 ]; then body=${res:0:${#res}-3} - res=$(python ../common/create_rics_json.py ".tmp_rics.json" "$3" ) + res=$(python3 ../common/create_rics_json.py ".tmp_rics.json" "$3" ) if [ $res -ne 0 ]; then echo -e $RED" FAIL, could not create target ric info json"$ERED ((RES_FAIL++)) @@ -850,7 +1023,7 @@ api_get_rics() { targetJson=$(<.tmp_rics.json) echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED ((RES_FAIL++)) @@ -905,7 +1078,6 @@ api_get_services() { echo -e $BOLD"TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ $EBOLD echo "TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ >> $HTTPLOG ((RES_TEST++)) - #Number of accepted parameters: 1, 2, 4, 7, 10, 13,... paramError=1 if [ $# -eq 1 ]; then @@ -960,7 +1132,7 @@ api_get_services() { done targetJson=$targetJson"]" echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body" "serviceName") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED ((RES_FAIL++)) @@ -1007,7 +1179,7 @@ api_get_service_ids() { targetJson=$targetJson"]" echo "TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python ../common/compare_json.py "$targetJson" "$body" "serviceName") + res=$(python3 ../common/compare_json.py "$targetJson" "$body") if [ $res -ne 0 ]; then echo -e $RED" FAIL, returned body not correct"$ERED