X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fecs_api_functions.sh;h=e9ff1f9a0f331f091959da5d78292c9d67bcf435;hb=b0cd302e1d3adaec4335226d34a36edc9410fd65;hp=986f396867d3fe072d8cb2d015018bee7c11c55b;hpb=1e539490bc37fed791895dd1f2f898caa3b0ca5c;p=nonrtric.git diff --git a/test/common/ecs_api_functions.sh b/test/common/ecs_api_functions.sh index 986f3968..e9ff1f9a 100644 --- a/test/common/ecs_api_functions.sh +++ b/test/common/ecs_api_functions.sh @@ -88,7 +88,7 @@ use_ecs_dmaap_https() { } # Start the ECS -# args: - +# args: PROXY|NOPROXY # (Function for test scripts) start_ecs() { @@ -141,9 +141,25 @@ start_ecs() { export ECS_DATA_CONFIGMAP_NAME=$ECS_APP_NAME"-data" export ECS_CONTAINER_MNT_DIR + if [ $1 == "PROXY" ]; then + ECS_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started + ECS_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started + if [ $ECS_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$ECS_HTTP_PROXY_CONFIG_HOST_NAME" ]; then + echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW + else + echo " Configured with http proxy" + fi + else + ECS_HTTP_PROXY_CONFIG_PORT=0 + ECS_HTTP_PROXY_CONFIG_HOST_NAME="" + echo " Configured without http proxy" + fi + export ECS_HTTP_PROXY_CONFIG_PORT + export ECS_HTTP_PROXY_CONFIG_HOST_NAME + # Create config map for config datafile=$PWD/tmp/$ECS_CONFIG_FILE - cp $1 $datafile + cp $2 $datafile output_yaml=$PWD/tmp/ecs_cfc.yaml __kube_create_configmap $ECS_CONFIG_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest ECS $datafile $output_yaml @@ -193,7 +209,7 @@ start_ecs() { cd $SIM_GROUP cd ecs cd $ECS_HOST_MNT_DIR - cd .. + #cd .. if [ -d db ]; then if [ "$(ls -A $DIR)" ]; then echo -e $BOLD" Cleaning files in mounted dir: $PWD/db"$EBOLD @@ -212,12 +228,34 @@ start_ecs() { export ECS_APP_NAME_ALIAS export ECS_HOST_MNT_DIR export ECS_CONTAINER_MNT_DIR + export ECS_CONFIG_MOUNT_PATH + export ECS_CONFIG_FILE export ECS_INTERNAL_PORT export ECS_EXTERNAL_PORT export ECS_INTERNAL_SECURE_PORT export ECS_EXTERNAL_SECURE_PORT export DOCKER_SIM_NWNAME + if [ $1 == "PROXY" ]; then + ECS_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT #Set if proxy is started + ECS_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started + if [ $ECS_HTTP_PROXY_CONFIG_PORT -eq 0 ] || [ -z "$ECS_HTTP_PROXY_CONFIG_HOST_NAME" ]; then + echo -e $YELLOW" Warning: HTTP PROXY will not be configured, proxy app not started"$EYELLOW + else + echo " Configured with http proxy" + fi + else + ECS_HTTP_PROXY_CONFIG_PORT=0 + ECS_HTTP_PROXY_CONFIG_HOST_NAME="" + echo " Configured without http proxy" + fi + export ECS_HTTP_PROXY_CONFIG_PORT + export ECS_HTTP_PROXY_CONFIG_HOST_NAME + + dest_file=$SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_HOST_MNT_DIR/$ECS_CONFIG_FILE + + envsubst < $2 > $dest_file + __start_container $ECS_COMPOSE_DIR NODOCKERARGS 1 $ECS_APP_NAME __check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL @@ -279,9 +317,9 @@ set_ecs_trace() { # Perform curl retries when making direct call to ECS for the specified http response codes # Speace separated list of http response codes # args: []* -use_agent_retries() { +use_ecs_retries() { echo -e $BOLD"Do curl retries to the ECS REST inteface for these response codes:$@"$EBOLD - ECS_AGENT_RETRY_CODES=$@ + ECS_RETRY_CODES=$@ echo "" return 0 } @@ -473,7 +511,7 @@ ecs_api_a1_get_type_ids() { # API Test function: GET ​/A1-EI​/v1​/eitypes​/{eiTypeId}​/eijobs​/{eiJobId}​/status # args: [] -# args (flat uri structure): [] +# args (flat uri structure): [ []] # (Function for test scripts) ecs_api_a1_get_job_status() { __log_test_start $@ @@ -506,31 +544,60 @@ ecs_api_a1_get_job_status() { fi else echo -e $YELLOW"USING NOT CONFIRMED INTERFACE - FLAT URI STRUCTURE"$EYELLOW - if [ $# -ne 2 ] && [ $# -ne 3 ]; then - __print_err " []" $@ + if [ $# -lt 2 ] && [ $# -gt 4 ]; then + __print_err " [ []]" $@ return 1 fi query="/A1-EI/v1/eijobs/$2/status" - res="$(__do_curl_to_api ECS GET $query)" - status=${res:${#res}-3} + start=$SECONDS + for (( ; ; )); do + res="$(__do_curl_to_api ECS GET $query)" + status=${res:${#res}-3} - if [ $status -ne $1 ]; then - __log_test_fail_status_code $1 $status - return 1 - fi - if [ $# -eq 3 ]; then - body=${res:0:${#res}-3} - targetJson="{\"eiJobStatus\": \"$3\"}" - echo " TARGET JSON: $targetJson" >> $HTTPLOG - res=$(python3 ../common/compare_json.py "$targetJson" "$body") + if [ $# -eq 4 ]; then + duration=$((SECONDS-start)) + echo -ne " Response=${status} after ${duration} seconds, waiting for ${3} ${SAMELINE}" + if [ $duration -gt $4 ]; then + echo "" + duration=-1 #Last iteration + fi + else + duration=-1 #single test, no wait + fi - if [ $res -ne 0 ]; then - __log_test_fail_body - return 1 + if [ $status -ne $1 ]; then + if [ $duration -eq -1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi fi - fi + if [ $# -ge 3 ] && [ $status -eq $1 ]; then + body=${res:0:${#res}-3} + targetJson="{\"eiJobStatus\": \"$3\"}" + echo " TARGET JSON: $targetJson" >> $HTTPLOG + res=$(python3 ../common/compare_json.py "$targetJson" "$body") + + if [ $res -ne 0 ]; then + if [ $duration -eq -1 ]; then + __log_test_fail_body + return 1 + fi + else + duration=-1 #Goto pass + fi + fi + if [ $duration -eq -1 ]; then + if [ $# -eq 4 ]; then + echo "" + fi + __log_test_pass + return 0 + else + sleep 1 + fi + done fi __log_test_pass @@ -818,7 +885,7 @@ ecs_api_edp_get_producer_status() { # API Test function: GET /ei-producer/v1/eiproducers -# args: [ EMPTY | +] +# args (v1_1): [ EMPTY | +] # (Function for test scripts) ecs_api_edp_get_producer_ids() { __log_test_start $@ @@ -864,8 +931,58 @@ ecs_api_edp_get_producer_ids() { return 0 } +# API Test function: GET /ei-producer/v1/eiproducers +# args (v1_2): [ ( NOTYPE | ) [ EMPTY | +] ] +# (Function for test scripts) +ecs_api_edp_get_producer_ids_2() { + __log_test_start $@ + + if [ $# -lt 1 ]; then + __print_err " [ ( NOTYPE | ) [ EMPTY | +] ]" $@ + return 1 + fi + + query="/ei-producer/v1/eiproducers" + if [ $# -gt 1 ] && [ $2 != "NOTYPE" ]; then + query=$query"?ei_type_id=$2" + fi + res="$(__do_curl_to_api ECS GET $query)" + status=${res:${#res}-3} + + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + + if [ $# -gt 2 ]; then + body=${res:0:${#res}-3} + targetJson="[" + + for pid in ${@:3} ; do + if [ "$targetJson" != "[" ]; then + targetJson=$targetJson"," + fi + if [ $pid != "EMPTY" ]; then + targetJson=$targetJson"\"$pid\"" + fi + done + + targetJson=$targetJson"]" + echo " TARGET JSON: $targetJson" >> $HTTPLOG + res=$(python3 ../common/compare_json.py "$targetJson" "$body") + + if [ $res -ne 0 ]; then + __log_test_fail_body + return 1 + fi + fi + + __log_test_pass + return 0 +} + # API Test function: GET /ei-producer/v1/eitypes/{eiTypeId} -# args: [ (EMPTY | []+)] +# args: (v1_1) [ (EMPTY | []+)] # (Function for test scripts) ecs_api_edp_get_type() { __log_test_start $@ @@ -923,8 +1040,115 @@ ecs_api_edp_get_type() { return 0 } +# API Test function: GET /ei-producer/v1/eitypes/{eiTypeId} +# args: (v1_2) [ ] +# (Function for test scripts) +ecs_api_edp_get_type_2() { + __log_test_start $@ + + paramError=1 + if [ $# -eq 2 ]; then + paramError=0 + fi + if [ $# -eq 3 ]; then + paramError=0 + fi + if [ $paramError -ne 0 ]; then + __print_err " [ ]" $@ + return 1 + fi + + query="/ei-producer/v1/eitypes/$2" + res="$(__do_curl_to_api ECS GET $query)" + status=${res:${#res}-3} + + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + if [ $# -eq 3 ]; then + body=${res:0:${#res}-3} + + if [ -f $3 ]; then + schema=$(cat $3) + else + __log_test_fail_general "Job template file "$3", does not exist" + return 1 + fi + + targetJson="{\"ei_job_data_schema\":$schema}" + + echo " TARGET JSON: $targetJson" >> $HTTPLOG + res=$(python3 ../common/compare_json.py "$targetJson" "$body") + + if [ $res -ne 0 ]; then + __log_test_fail_body + return 1 + fi + fi + __log_test_pass + return 0 +} + +# API Test function: PUT /ei-producer/v1/eitypes/{eiTypeId} +# args: (v1_2) +# (Function for test scripts) +ecs_api_edp_put_type_2() { + __log_test_start $@ + + if [ $# -ne 3 ]; then + __print_err " " $@ + return 1 + fi + + if [ ! -f $3 ]; then + __log_test_fail_general "Job schema file "$3", does not exist" + return 1 + fi + schema=$(cat $3) + input_json="{\"ei_job_data_schema\":$schema}" + file="./tmp/put_type.json" + echo $input_json > $file + + query="/ei-producer/v1/eitypes/$2" + res="$(__do_curl_to_api ECS PUT $query $file)" + status=${res:${#res}-3} + + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + + __log_test_pass + return 0 +} + +# API Test function: DELETE /ei-producer/v1/eitypes/{eiTypeId} +# args: (v1_2) +# (Function for test scripts) +ecs_api_edp_delete_type_2() { + __log_test_start $@ + + if [ $# -ne 2 ]; then + __print_err " " $@ + return 1 + fi + + query="/ei-producer/v1/eitypes/$2" + res="$(__do_curl_to_api ECS DELETE $query)" + status=${res:${#res}-3} + + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + + __log_test_pass + return 0 +} + # API Test function: GET /ei-producer/v1/eiproducers/{eiProducerId} -# args: [ (EMPTY | [ ]+) ] +# args: (v1_1) [ (EMPTY | [ ]+) ] # (Function for test scripts) ecs_api_edp_get_producer() { __log_test_start $@ @@ -992,6 +1216,67 @@ ecs_api_edp_get_producer() { return 0 } +# API Test function: GET /ei-producer/v1/eiproducers/{eiProducerId} +# args (v1_2): [ (EMPTY | +) ] +# (Function for test scripts) +ecs_api_edp_get_producer_2() { + __log_test_start $@ + + #Possible arg count: 2, 5, 6, 7, 8 etc + paramError=1 + if [ $# -eq 2 ]; then + paramError=0 + fi + if [ $# -eq 5 ] && [ "$5" == "EMPTY" ]; then + paramError=0 + fi + if [ $# -ge 5 ]; then + paramError=0 + fi + + if [ $paramError -ne 0 ]; then + __print_err " [ (EMPTY | +) ]" $@ + return 1 + fi + + query="/ei-producer/v1/eiproducers/$2" + res="$(__do_curl_to_api ECS GET $query)" + status=${res:${#res}-3} + + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + + if [ $# -gt 2 ]; then + body=${res:0:${#res}-3} + targetJson="[" + if [ $# -gt 4 ] && [ "$5" != "EMPTY" ]; then + arr=(${@:5}) + for ((i=0; i<$(($#-4)); i=i+1)); do + if [ "$targetJson" != "[" ]; then + targetJson=$targetJson"," + fi + targetJson=$targetJson"\"${arr[$i]}\"" + done + fi + targetJson=$targetJson"]" + if [ $# -gt 4 ]; then + targetJson="{\"supported_ei_types\":$targetJson,\"ei_job_callback_url\": \"$3\",\"ei_producer_supervision_callback_url\": \"$4\"}" + fi + echo " TARGET JSON: $targetJson" >> $HTTPLOG + res=$(python3 ../common/compare_json.py "$targetJson" "$body") + + if [ $res -ne 0 ]; then + __log_test_fail_body + return 1 + fi + fi + + __log_test_pass + return 0 +} + # API Test function: DELETE /ei-producer/v1/eiproducers/{eiProducerId} # args: # (Function for test scripts) @@ -1017,7 +1302,7 @@ ecs_api_edp_delete_producer() { } # API Test function: PUT /ei-producer/v1/eiproducers/{eiProducerId} -# args: NOTYPE|[ ]+ +# args: (v1_1) NOTYPE|[ ]+ # (Function for test scripts) ecs_api_edp_put_producer() { __log_test_start $@ @@ -1071,8 +1356,57 @@ ecs_api_edp_put_producer() { return 0 } +# API Test function: PUT /ei-producer/v1/eiproducers/{eiProducerId} +# args: (v1_2) NOTYPE|[+] +# (Function for test scripts) +ecs_api_edp_put_producer_2() { + __log_test_start $@ + + #Valid number of parametrer 5,6,8,10, + paramError=1 + if [ $# -eq 5 ] && [ "$5" == "NOTYPE" ]; then + paramError=0 + elif [ $# -ge 5 ]; then + paramError=0 + fi + if [ $paramError -ne 0 ]; then + __print_err " NOTYPE|[+]" $@ + return 1 + fi + + inputJson="[" + if [ $# -gt 4 ] && [ "$5" != "NOTYPE" ]; then + arr=(${@:5}) + for ((i=0; i<$(($#-4)); i=i+1)); do + if [ "$inputJson" != "[" ]; then + inputJson=$inputJson"," + fi + inputJson=$inputJson"\""${arr[$i]}"\"" + done + fi + inputJson="\"supported_ei_types\":"$inputJson"]" + + inputJson=$inputJson",\"ei_job_callback_url\": \"$3\",\"ei_producer_supervision_callback_url\": \"$4\"" + + inputJson="{"$inputJson"}" + + file="./tmp/.p.json" + echo "$inputJson" > $file + query="/ei-producer/v1/eiproducers/$2" + res="$(__do_curl_to_api ECS PUT $query $file)" + status=${res:${#res}-3} + + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + + __log_test_pass + return 0 +} + # API Test function: GET /ei-producer/v1/eiproducers/{eiProducerId}/eijobs -# args: (EMPTY | [ ]+) +# args: (V1-1) (EMPTY | [ ]+) # (Function for test scripts) ecs_api_edp_get_producer_jobs() { __log_test_start $@ @@ -1135,6 +1469,69 @@ ecs_api_edp_get_producer_jobs() { return 0 } +# API Test function: GET /ei-producer/v1/eiproducers/{eiProducerId}/eijobs +# args: (V1-2) (EMPTY | [ ]+) +# (Function for test scripts) +ecs_api_edp_get_producer_jobs_2() { + __log_test_start $@ + + #Valid number of parameter 2,3,7,11 + paramError=1 + if [ $# -eq 2 ]; then + paramError=0 + fi + if [ $# -eq 3 ] && [ "$3" == "EMPTY" ]; then + paramError=0 + fi + variablecount=$(($#-2)) + if [ $# -gt 3 ] && [ $(($variablecount%5)) -eq 0 ]; then + paramError=0 + fi + if [ $paramError -eq 1 ]; then + __print_err " (EMPTY | [ ]+)" $@ + return 1 + fi + + query="/ei-producer/v1/eiproducers/$2/eijobs" + res="$(__do_curl_to_api ECS GET $query)" + status=${res:${#res}-3} + if [ $status -ne $1 ]; then + __log_test_fail_status_code $1 $status + return 1 + fi + if [ $# -gt 2 ]; then + body=${res:0:${#res}-3} + targetJson="[" + if [ $# -gt 3 ]; then + arr=(${@:3}) + for ((i=0; i<$(($#-3)); i=i+5)); do + if [ "$targetJson" != "[" ]; then + targetJson=$targetJson"," + fi + if [ -f ${arr[$i+4]} ]; then + jobfile=$(cat ${arr[$i+4]}) + jobfile=$(echo "$jobfile" | sed "s/XXXX/${arr[$i]}/g") + else + _log_test_fail_general "Job template file "${arr[$i+4]}", does not exist" + return 1 + fi + targetJson=$targetJson"{\"ei_job_identity\":\"${arr[$i]}\",\"ei_type_identity\":\"${arr[$i+1]}\",\"target_uri\":\"${arr[$i+2]}\",\"owner\":\"${arr[$i+3]}\",\"ei_job_data\":$jobfile, \"last_updated\":\"????\"}" + done + fi + targetJson=$targetJson"]" + + echo " TARGET JSON: $targetJson" >> $HTTPLOG + res=$(python3 ../common/compare_json.py "$targetJson" "$body") + + if [ $res -ne 0 ]; then + __log_test_fail_body + return 1 + fi + fi + + __log_test_pass + return 0 +} ########################################## #### Service status ####