X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fhttpproxy_api_functions.sh;h=2ff505f63cddf4bed5aac9da0bffea4d66d56a21;hb=900ceda884f7cd92be20bfb1fb3a424073dc4316;hp=3378a1dd63e4d755a8a8152871f32a5b71e95f98;hpb=09e21f39a3ffcfc2063110bcad028014b0056398;p=nonrtric.git diff --git a/test/common/httpproxy_api_functions.sh b/test/common/httpproxy_api_functions.sh index 3378a1dd..2ff505f6 100644 --- a/test/common/httpproxy_api_functions.sh +++ b/test/common/httpproxy_api_functions.sh @@ -17,7 +17,7 @@ # ============LICENSE_END================================================= # -# This is a script that contains container/service managemnt functions for Http Proxy +# This is a script that contains container/service management functions for Http Proxy ################ Test engine functions ################ @@ -25,7 +25,7 @@ # arg: (selects staging, snapshot, release etc) # is present only for images with staging, snapshot,release tags __HTTPPROXY_imagesetup() { - __check_and_create_image_var HTTPPROXY "HTTP_PROXY_IMAGE" "HTTP_PROXY_IMAGE_BASE" "HTTP_PROXY_IMAGE_TAG" LOCAL "$HTTP_PROXY_DISPLAY_NAME" + __check_and_create_image_var HTTPPROXY "HTTP_PROXY_IMAGE" "HTTP_PROXY_IMAGE_BASE" "HTTP_PROXY_IMAGE_TAG" LOCAL "$HTTP_PROXY_DISPLAY_NAME" $IMAGE_TARGET_PLATFORM_IMG_TAG } # Pull image from remote repo or use locally built image @@ -43,7 +43,7 @@ __HTTPPROXY_imagepull() { __HTTPPROXY_imagebuild() { cd ../$HTTP_PROXY_BUILD_DIR # Note: Reusing same impl as for kube proxy echo " Building HTTPPROXY - $HTTP_PROXY_DISPLAY_NAME - image: $HTTP_PROXY_IMAGE" - docker build --build-arg NEXUS_PROXY_REPO=$NEXUS_PROXY_REPO -t $HTTP_PROXY_IMAGE . &> .dockererr + docker build $IMAGE_TARGET_PLATFORM_CMD_PARAM --build-arg NEXUS_PROXY_REPO=$NEXUS_PROXY_REPO -t $HTTP_PROXY_IMAGE . &> .dockererr if [ $? -eq 0 ]; then echo -e $GREEN" Build Ok"$EGREEN __retag_and_push_image HTTP_PROXY_IMAGE @@ -77,12 +77,12 @@ __HTTPPROXY_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. __HTTPPROXY_kube_scale_zero_and_wait() { - echo -e $RED" HTTPPROXY replicas kept as is"$ERED + echo -e $RED" HTTPPROXY app is not scaled in this state"$ERED } -# 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. __HTTPPROXY_kube_delete_all() { __kube_delete_all_resources $KUBE_SIM_NAMESPACE autotest HTTPPROXY @@ -90,10 +90,10 @@ __HTTPPROXY_kube_delete_all() { # Store docker logs # This function is called for apps managed by the test script. -# args: +# args: __HTTPPROXY_store_docker_logs() { if [ $RUNMODE == "KUBE" ]; then - kubectl logs -l "autotest=HTTPPROXY" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_httpproxy.log 2>&1 + kubectl $KUBECONF logs -l "autotest=HTTPPROXY" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_httpproxy.log 2>&1 else docker logs $HTTP_PROXY_APP_NAME > $1$2_httpproxy.log 2>&1 fi @@ -103,14 +103,14 @@ __HTTPPROXY_store_docker_logs() { # This function is called for apps managed by the test script. # args: - __HTTPPROXY_initial_setup() { - : + use_http_proxy_http } -# 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: - -__HTTPPROXY_statisics_setup() { +__HTTPPROXY_statistics_setup() { if [ $RUNMODE == "KUBE" ]; then echo "HTTPPROXY $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE" else @@ -118,44 +118,73 @@ __HTTPPROXY_statisics_setup() { fi } -####################################################### - - -## Access to Http Proxy Receiver -# Host name may be changed if app started by kube -# Direct access from script -HTTP_PROXY_HTTPX="http" -HTTP_PROXY_HOST_NAME=$LOCALHOST_NAME -HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_EXTERNAL_PORT +# Check application requirements, e.g. helm, the the test needs. Exit 1 if req not satisfied +# args: - +__HTTPPROXY_test_requirements() { + : +} -######################### -### Http Proxy functions -######################### +####################################################### -# All calls to httpproxy will be directed to the http interface +# Set http as the protocol to use for all communication to the http proxy # args: - # (Function for test scripts) use_http_proxy_http() { - echo -e $BOLD"$HTTP_PROXY_DISPLAY_NAME protocol setting"$EBOLD - echo -e " Using $BOLD http $EBOLD" - HTTP_PROXY_HTTPX="http" - HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_EXTERNAL_PORT - - echo "" + __http_proxy_set_protocoll "http" $HTTP_PROXY_INTERNAL_PORT $HTTP_PROXY_EXTERNAL_PORT $HTTP_PROXY_WEB_INTERNAL_PORT $HTTP_PROXY_WEB_EXTERNAL_PORT } -# All calls to httpproxy will be directed to the https interface +# Set https as the protocol to use for all communication to the http proxy # args: - # (Function for test scripts) use_http_proxy_https() { + __http_proxy_set_protocoll "https" $HTTP_PROXY_INTERNAL_SECURE_PORT $HTTP_PROXY_EXTERNAL_SECURE_PORT $HTTP_PROXY_WEB_INTERNAL_SECURE_PORT $HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT +} + +# Setup paths to svc/container for internal and external access +# args: +__http_proxy_set_protocoll() { echo -e $BOLD"$HTTP_PROXY_DISPLAY_NAME protocol setting"$EBOLD - echo -e " Using $BOLD https $EBOLD" - HTTP_PROXY_HTTPX="https" - HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_EXTERNAL_SECURE_PORT + echo -e " Using $BOLD $1 $EBOLD towards $HTTP_PROXY_DISPLAY_NAME" + + ## Access to http proxy + ## HTTP_PROXY_CONFIG_HOST_NAME and HTTP_PROXY_CONFIG_PORT used by apps as config for proxy host and port + + HTTP_PROXY_SERVICE_PATH=$1"://"$HTTP_PROXY_APP_NAME":"$2 # docker access, container->container and script->container via proxy + HTTP_PROXY_WEB_PATH=$1"://"$HTTP_PROXY_APP_NAME":"$4 + HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME + HTTP_PROXY_CONFIG_PORT=$2 + if [ $RUNMODE == "KUBE" ]; then + HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME"."$KUBE_SIM_NAMESPACE + HTTP_PROXY_CONFIG_PORT=$3 + HTTP_PROXY_SERVICE_PATH=$1"://"$HTTP_PROXY_APP_NAME.$KUBE_SIM_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy + HTTP_PROXY_WEB_PATH=$1"://"$HTTP_PROXY_APP_NAME.$KUBE_SIM_NAMESPACE":"$5 + fi echo "" } +# Export env vars for config files, docker compose and kube resources +# args: +__http_proxy_export_vars() { + + export HTTP_PROXY_APP_NAME + export HTTP_PROXY_DISPLAY_NAME + + export HTTP_PROXY_WEB_EXTERNAL_PORT + export HTTP_PROXY_WEB_INTERNAL_PORT + export HTTP_PROXY_EXTERNAL_PORT + export HTTP_PROXY_INTERNAL_PORT + + export HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT + export HTTP_PROXY_WEB_INTERNAL_SECURE_PORT + export HTTP_PROXY_EXTERNAL_SECURE_PORT + export HTTP_PROXY_INTERNAL_SECURE_PORT + + export KUBE_SIM_NAMESPACE + export DOCKER_SIM_NWNAME + export HTTP_PROXY_IMAGE +} + # Start the Http Proxy in the simulator group # args: - # (Function for test scripts) @@ -169,7 +198,7 @@ start_http_proxy() { __check_included_image "HTTPPROXY" 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 "HTTPPROXY" retcode_p=$? @@ -193,23 +222,11 @@ start_http_proxy() { if [ $retcode_i -eq 0 ]; then echo -e " Creating $HTTP_PROXY_APP_NAME deployment and service" - export HTTP_PROXY_APP_NAME - - export HTTP_PROXY_WEB_EXTERNAL_PORT - export HTTP_PROXY_WEB_INTERNAL_PORT - export HTTP_PROXY_EXTERNAL_PORT - export HTTP_PROXY_INTERNAL_PORT - - export HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT - export HTTP_PROXY_WEB_INTERNAL_SECURE_PORT - export HTTP_PROXY_EXTERNAL_SECURE_PORT - export HTTP_PROXY_INTERNAL_SECURE_PORT - - export KUBE_SIM_NAMESPACE - export HTTP_PROXY_IMAGE __kube_create_namespace $KUBE_SIM_NAMESPACE + __http_proxy_export_vars + # Create service input_yaml=$SIM_GROUP"/"$HTTP_PROXY_COMPOSE_DIR"/"svc.yaml output_yaml=$PWD/tmp/proxy_svc.yaml @@ -222,29 +239,7 @@ start_http_proxy() { fi - echo " Retrieving host and ports for service..." - HTTP_PROXY_HOST_NAME=$(__kube_get_service_host $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE) - HTTP_PROXY_WEB_EXTERNAL_PORT=$(__kube_get_service_port $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "web") - HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "webs") - - HTTP_PROXY_EXTERNAL_PORT=$(__kube_get_service_port $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "http") - HTTP_PROXY_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "https") - - if [ $HTTP_PROXY_HTTPX == "http" ]; then - HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_EXTERNAL_PORT - HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_EXTERNAL_PORT - HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME"."$KUBE_SIM_NAMESPACE - - echo " Host IP, http port: $HTTP_PROXY_HOST_NAME $HTTP_PROXY_WEB_EXTERNAL_PORT" - else - HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT - HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_EXTERNAL_SECURE_PORT - HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME"."$KUBE_SIM_NAMESPACE - - echo " Host IP, https port: $HTTP_PROXY_HOST_NAME $HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT" - fi - - __check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_PATH$HTTP_PROXY_ALIVE_URL + __check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_WEB_PATH$HTTP_PROXY_ALIVE_URL else # Check if docker app shall be fully managed by the test script @@ -255,36 +250,27 @@ start_http_proxy() { exit fi - export HTTP_PROXY_APP_NAME - export HTTP_PROXY_EXTERNAL_PORT - export HTTP_PROXY_INTERNAL_PORT - export HTTP_PROXY_EXTERNAL_SECURE_PORT - export HTTP_PROXY_INTERNAL_SECURE_PORT - export HTTP_PROXY_WEB_EXTERNAL_PORT - export HTTP_PROXY_WEB_INTERNAL_PORT - export HTTP_PROXY_WEB_EXTERNAL_SECURE_PORT - export HTTP_PROXY_WEB_INTERNAL_SECURE_PORT - export DOCKER_SIM_NWNAME - - export HTTP_PROXY_DISPLAY_NAME + __http_proxy_export_vars __start_container $HTTP_PROXY_COMPOSE_DIR "" NODOCKERARGS 1 $HTTP_PROXY_APP_NAME - if [ $HTTP_PROXY_HTTPX == "http" ]; then - HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_INTERNAL_PORT - else - HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_INTERNAL_SECURE_PORT - fi - __check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_PATH$HTTP_PROXY_ALIVE_URL - - if [ $HTTP_PROXY_HTTPX == "http" ]; then - HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_INTERNAL_PORT - else - HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_INTERNAL_SECURE_PORT - fi - HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME - + __check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_WEB_PATH$HTTP_PROXY_ALIVE_URL fi echo "" } +# Turn on debug logging in httpproxy +# args: - +# (Function for test scripts) +set_httpproxy_debug() { + echo -e $BOLD"Setting httpproxy debug logging"$EBOLD + curlString="$HTTP_PROXY_WEB_PATH/debug -X PUT" + result=$(__do_curl "$curlString") + if [ $? -ne 0 ]; then + __print_err "could not set debug logging" $@ + ((RES_CONF_FAIL++)) + return 1 + fi + echo "" + return 0 +}