X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fa1pms_api_functions.sh;h=b80bb25ef159e6addbc4fb0c4677ccb6a6e42e1c;hb=84525a0316cc1626fe4d6328283d4578f735ae9b;hp=e39187274414cdbbf1e4e7bd3f1a51a205a8a937;hpb=d03286355ba8f11aacabbee178fe5cb084be7b51;p=nonrtric.git diff --git a/test/common/a1pms_api_functions.sh b/test/common/a1pms_api_functions.sh index e3918727..b80bb25e 100644 --- a/test/common/a1pms_api_functions.sh +++ b/test/common/a1pms_api_functions.sh @@ -2,6 +2,7 @@ # ============LICENSE_START=============================================== # Copyright (C) 2021-2023 Nordix Foundation. All rights reserved. +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # ======================================================================== # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,7 +26,7 @@ # arg: (selects staging, snapshot, release etc) # is present only for images with staging, snapshot,release tags __A1PMS_imagesetup() { - __check_and_create_image_var A1PMS "A1PMS_IMAGE" "A1PMS_IMAGE_BASE" "A1PMS_IMAGE_TAG" $1 "$A1PMS_DISPLAY_NAME" + __check_and_create_image_var A1PMS "A1PMS_IMAGE" "A1PMS_IMAGE_BASE" "A1PMS_IMAGE_TAG" $1 "$A1PMS_DISPLAY_NAME" "" } # Pull image from remote repo or use locally built image @@ -62,12 +63,12 @@ __A1PMS_kube_scale_zero() { } # 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. +# This function is called for pre-started apps not managed by the test script. __A1PMS_kube_scale_zero_and_wait() { __kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app "$KUBE_NONRTRIC_NAMESPACE"-policymanagementservice } -# Delete all kube resouces for the app +# Delete all kube resources for the app # This function is called for apps managed by the test script. __A1PMS_kube_delete_all() { __kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest A1PMS @@ -75,7 +76,7 @@ __A1PMS_kube_delete_all() { # Store docker logs # This function is called for apps managed by the test script. -# args: +# args: __A1PMS_store_docker_logs() { if [ $RUNMODE == "KUBE" ]; then kubectl $KUBECONF logs -l "autotest=A1PMS" -n $KUBE_NONRTRIC_NAMESPACE --tail=-1 > $1$2_a1pms.log 2>&1 @@ -92,11 +93,11 @@ __A1PMS_initial_setup() { export A1PMS_SIDECAR_JWT_FILE="" } -# Set app short-name, app name and namespace for logging runtime statistics of kubernets pods or docker containers +# Set app short-name, app name and namespace for logging runtime statistics of kubernetes pods or docker containers # For docker, the namespace shall be excluded -# This function is called for apps managed by the test script as well as for prestarted apps. +# This function is called for apps managed by the test script as well as for pre-started apps. # args: - -__A1PMS_statisics_setup() { +__A1PMS_statistics_setup() { if [ $RUNMODE == "KUBE" ]; then echo "A1PMS $A1PMS_APP_NAME $KUBE_NONRTRIC_NAMESPACE" else @@ -238,7 +239,7 @@ start_a1pms() { __check_included_image "A1PMS" retcode_i=$? - # Check if app shall only be used by the testscipt + # Check if app shall only be used by the test script __check_prestarted_image "A1PMS" retcode_p=$? @@ -456,13 +457,13 @@ start_stopped_a1pms() { } -# Function to perpare the consul configuration according to the current simulator configuration +# Function to prepare the a1pms configuration according to the current simulator configuration # args: SDNC|NOSDNC [ ] # (Function for test scripts) prepare_a1pms_config() { echo -e $BOLD"Prepare A1PMS config"$EBOLD - echo " Writing consul config for "$A1PMS_APP_NAME" to file: "$2 + echo " Writing a1pms config for "$A1PMS_APP_NAME" to file: "$2 if [ $# != 2 ] && [ $# != 4 ]; then ((RES_CONF_FAIL++)) @@ -543,19 +544,16 @@ prepare_a1pms_config() { echo $YELLOW"Warning: No rics found for the configuration"$EYELLOW fi else - rics=$(docker ps --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "label=a1sim" --filter "status=running" --format {{.Names}}) - if [ $? -ne 0 ] || [ -z "$rics" ]; then - echo -e $RED" FAIL - the names of the running RIC Simulator cannot be retrieved." $ERED - ((RES_CONF_FAIL++)) - return 1 - fi + rics=$(docker ps --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "label=a1sim" --filter "status=running" --format {{.Names}}) oranrics=$(docker ps --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "label=orana1sim" --filter "status=running" --format {{.Names}}) + + rics="$rics $oranrics" + if [ $? -ne 0 ] || [ -z "$rics" ]; then - echo -e $RED" FAIL - the names of the running RIC Simulator cannot be retrieved." $ERED + echo -e $RED" FAIL - the names of the running RIC Simulator or ORAN RIC cannot be retrieved." $ERED ((RES_CONF_FAIL++)) - return 1 + exit 1 fi - rics="$rics $oranrics" fi cntr=0 for ric in $rics; do @@ -567,13 +565,9 @@ prepare_a1pms_config() { ric_id=${ric%.*.*} #extract pod id from full hosthame ric_id=$(echo "$ric_id" | tr '-' '_') else - if [ $DOCKER_COMPOSE_VERSION == "V1" ]; then - ric_id=$ric - else - ric_id=$(echo "$ric" | tr '-' '_') #ric id still needs underscore as it is different from the container name - fi + ric_id=$(echo "$ric" | tr '-' '_') #ric var still needs underscore as it is different from the container name fi - echo " Found a1 sim: "$ric_id + echo " Found a1 sim: "$ric config_json=$config_json"\n \"name\": \"$ric_id\"," xricfound=0 @@ -1410,7 +1404,7 @@ a1pms_api_delete_policy_parallel() { #if [ $A1PMS_ADAPTER != $RESTBASE ] && [ $A1PMS_ADAPTER != $RESTBASE_SECURE ]; then if [ $A1PMS_ADAPTER_TYPE != "REST" ]; then - echo " Info - a1pms_api_delete_policy_parallel uses only the a1pms REST interface - create over dmaap in parallel is not supported" + echo " Info - a1pms_api_delete_policy_parallel uses only the a1pms REST interface - delete over dmaap in parallel is not supported" echo " Info - will execute over a1pms REST" fi @@ -1470,6 +1464,84 @@ a1pms_api_delete_policy_parallel() { return 1 } +# API Test function: GET /policy and V2 GET /v2/policies/{policy_id}, to run in i parallel for a number of rics +# args: +# (Function for test scripts) +a1pms_api_get_policy_parallel() { + __log_test_start $@ + + if [ $# -ne 5 ]; then + __print_err " " $@ + return 1 + fi + resp_code=$1; shift; + num_rics=$1; shift; + start_id=$1; shift; + count=$1; shift; + pids=$1; shift; + + #if [ $A1PMS_ADAPTER != $RESTBASE ] && [ $A1PMS_ADAPTER != $RESTBASE_SECURE ]; then + if [ $A1PMS_ADAPTER_TYPE != "REST" ]; then + echo " Info - a1pms_api_get_policy_parallel uses only the a1pms REST interface - GET over dmaap in parallel is not supported" + echo " Info - will execute over a1pms REST" + fi + + if [ "$A1PMS_VERSION" == "V2" ]; then + query="$A1PMS_API_PREFIX/v2/policies/" + else + query="/policy" + fi + + urlbase=${A1PMS_ADAPTER}${query} + + httpproxy="NOPROXY" + if [ ! -z "$KUBE_PROXY_PATH" ]; then + httpproxy=$KUBE_PROXY_PATH + fi + + for ((i=1; i<=$pids; i++)) + do + uuid=$UUID + if [ -z "$uuid" ]; then + uuid="NOUUID" + fi + echo "" > "./tmp/.pid${i}.get.res.txt" + echo $resp_code $urlbase $num_rics $uuid $start_id $count $pids $i $httpproxy> "./tmp/.pid${i}.get.txt" + echo $i + done | xargs -n 1 -I{} -P $pids bash -c '{ + arg=$(echo {}) + echo " Parallel process $arg started" + tmp=$(< "./tmp/.pid${arg}.get.txt") + python3 ../common/get_policies_process.py $tmp > ./tmp/.pid${arg}.get.res.txt + }' + msg="" + for ((i=1; i<=$pids; i++)) + do + file="./tmp/.pid${i}.get.res.txt" + tmp=$(< $file) + if [ -z "$tmp" ]; then + echo " Process $i : unknown result (result file empty" + msg="failed" + else + res=${tmp:0:1} + if [ $res == "0" ]; then + echo " Process $i : OK - "${tmp:1} + else + echo " Process $i : failed - "${tmp:1} + msg="failed" + fi + fi + done + if [ -z $msg ]; then + __collect_endpoint_stats "A1PMS" 04 "GET" $A1PMS_API_PREFIX"/v2/policies/{policy_id}" $resp_code $(($count*$num_rics)) + __log_test_pass " $(($count*$num_rics)) policy request(s) executed" + return 0 + fi + + __log_test_fail_general "One of more processes failed to execute" + return 1 +} + # API Test function: GET /policy_ids and V2 GET /v2/policies # args: |NORIC |NOSERVICE |NOTYPE ([