X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fecs_api_functions.sh;h=d55f4399a98a1c8f5eb68aefaefcada85c205475;hb=520b912bce8eebb3e272c9ccfa3378b01dfd200b;hp=ba451e6f71abc87ad7663892e1bd624cad7e85d4;hpb=cdc8a586be446a08d1d43f1f8a56115d5f72d9c6;p=nonrtric.git diff --git a/test/common/ecs_api_functions.sh b/test/common/ecs_api_functions.sh index ba451e6f..d55f4399 100644 --- a/test/common/ecs_api_functions.sh +++ b/test/common/ecs_api_functions.sh @@ -19,6 +19,65 @@ # This is a script that contains container/service management functions and test functions for ECS +################ Test engine functions ################ + +# Create the image var used during the test +# arg: (selects staging, snapshot, release etc) +# is present only for images with staging, snapshot,release tags +__ECS_imagesetup() { + __check_and_create_image_var ECS "ECS_IMAGE" "ECS_IMAGE_BASE" "ECS_IMAGE_TAG" $1 "$ECS_DISPLAY_NAME" +} + +# Pull image from remote repo or use locally built image +# arg: +# Shall be used for images allowing overriding. For example use a local image when test is started to use released images +# Shall be used for images that does not allow overriding +# Both var may contain: 'remote', 'remote-remove' or 'local' +__ECS_imagepull() { + __check_and_pull_image $1 "$ECS_DISPLAY_NAME" $ECS_APP_NAME $ECS_IMAGE +} + +# Build image (only for simulator or interfaces stubs owned by the test environment) +# arg: (selects staging, snapshot, release etc) +# is present only for images with staging, snapshot,release tags +__ECS_imagebuild() { + echo -e $RED" Image for app ECS shall never be built"$ERED +} + +# Generate a string for each included image using the app display name and a docker images format string +# arg: +__ECS_image_data() { + echo -e "$ECS_DISPLAY_NAME\t$(docker images --format $1 $ECS_IMAGE)" >> $2 +} + +# Scale kubernetes resources to zero +# All resources shall be ordered to be scaled to 0, if relevant. If not relevant to scale, then do no action. +# This function is called for apps fully managed by the test script +__ECS_kube_scale_zero() { + __kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest ECS +} + +# Scale kubernetes resources to zero and wait until this has been accomplished, if relevant. If not relevant to scale, then do no action. +# This function is called for prestarted apps not managed by the test script. +__ECS_kube_scale_zero_and_wait() { + __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-enrichmentservice +} + +# Delete all kube resouces for the app +# This function is called for apps managed by the test script. +__ECS_kube_delete_all() { + __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest ECS +} + +# Store docker logs +# This function is called for apps managed by the test script. +# args: +__ECS_store_docker_logs() { + docker logs $ECS_APP_NAME > $1$2_ecs.log 2>&1 +} +####################################################### + + ## Access to ECS # Host name may be changed if app started by kube # Direct access @@ -88,7 +147,7 @@ use_ecs_dmaap_https() { } # Start the ECS -# args: - +# args: PROXY|NOPROXY # (Function for test scripts) start_ecs() { @@ -141,12 +200,37 @@ start_ecs() { export ECS_DATA_CONFIGMAP_NAME=$ECS_APP_NAME"-data" export ECS_CONTAINER_MNT_DIR + export ECS_DATA_PV_NAME=$ECS_APP_NAME"-pv" + #Create a unique path for the pv each time to prevent a previous volume to be reused + export ECS_PV_PATH="ecsdata-"$(date +%s) + + 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 + # Create pv + input_yaml=$SIM_GROUP"/"$ECS_COMPOSE_DIR"/"pv.yaml + output_yaml=$PWD/tmp/ecs_pv.yaml + __kube_create_instance pv $ECS_APP_NAME $input_yaml $output_yaml + # Create pvc input_yaml=$SIM_GROUP"/"$ECS_COMPOSE_DIR"/"pvc.yaml output_yaml=$PWD/tmp/ecs_pvc.yaml @@ -193,7 +277,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,13 +296,36 @@ 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 + export ECS_DISPLAY_NAME + + 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 - __start_container $ECS_COMPOSE_DIR NODOCKERARGS 1 $ECS_APP_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 fi @@ -279,13 +386,20 @@ 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 } +# Check the ecs logs for WARNINGs and ERRORs +# args: - +# (Function for test scripts) +check_ecs_logs() { + __check_container_logs "ECS" $ECS_APP_NAME $ECS_LOGPATH WARN ERR +} + # Tests if a variable value in the ECS is equal to a target value and and optional timeout. # Arg: - This test set pass or fail depending on if the variable is @@ -322,7 +436,7 @@ ecs_api_a1_get_job_ids() { return 1 fi else - echo -e $YELLOW"USING NOT CONFIRMED INTERFACE - FLAT URI STRUCTURE"$EYELLOW + echo -e $YELLOW"INTERFACE - FLAT URI STRUCTURE"$EYELLOW # Valid number of parameters 4,5,6 etc if [ $# -lt 3 ]; then __print_err " |NOTYPE |NOOWNER [ EMPTY | + ]" $@ @@ -505,7 +619,7 @@ ecs_api_a1_get_job_status() { fi fi else - echo -e $YELLOW"USING NOT CONFIRMED INTERFACE - FLAT URI STRUCTURE"$EYELLOW + echo -e $YELLOW"INTERFACE - FLAT URI STRUCTURE"$EYELLOW if [ $# -lt 2 ] && [ $# -gt 4 ]; then __print_err " [ []]" $@ return 1 @@ -580,7 +694,7 @@ ecs_api_a1_get_job() { fi query="/A1-EI/v1/eitypes/$2/eijobs/$3" else - echo -e $YELLOW"USING NOT CONFIRMED INTERFACE - FLAT URI STRUCTURE"$EYELLOW + echo -e $YELLOW"INTERFACE - FLAT URI STRUCTURE"$EYELLOW if [ $# -ne 2 ] && [ $# -ne 7 ]; then __print_err " [ ]" $@ return 1 @@ -656,7 +770,7 @@ ecs_api_a1_delete_job() { query="/A1-EI/v1/eitypes/$2/eijobs/$3" else - echo -e $YELLOW"USING NOT CONFIRMED INTERFACE - FLAT URI STRUCTURE"$EYELLOW + echo -e $YELLOW"INTERFACE - FLAT URI STRUCTURE"$EYELLOW if [ $# -ne 2 ]; then __print_err " " $@ return 1 @@ -701,7 +815,7 @@ ecs_api_a1_put_job() { query="/A1-EI/v1/eitypes/$2/eijobs/$3" else - echo -e $YELLOW"USING NOT CONFIRMED INTERFACE - FLAT URI STRUCTURE"$EYELLOW + echo -e $YELLOW"INTERFACE - FLAT URI STRUCTURE"$EYELLOW if [ $# -lt 7 ]; then __print_err " " $@ return 1 @@ -1368,7 +1482,7 @@ ecs_api_edp_put_producer_2() { } # 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 $@ @@ -1431,6 +1545,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 #### @@ -1464,7 +1641,7 @@ ecs_api_service_status() { # Function prefix: ecs_api_admin # Admin to remove all jobs -# args: +# args: [ ] # (Function for test scripts) ecs_api_admin_reset() {