+ fi
+
+ __retag_and_push_image $4
+
+ return $?
+}
+
+setup_testenvironment() {
+ # Check that image env setting are available
+ echo ""
+
+ # Image var setup for all project images included in the test
+ for imagename in $APP_SHORT_NAMES; do
+ __check_included_image $imagename
+ incl=$?
+ __check_project_image $imagename
+ proj=$?
+ if [ $incl -eq 0 ]; then
+ if [ $proj -eq 0 ]; then
+ IMAGE_SUFFIX=$(__check_image_override $imagename)
+ if [ $? -ne 0 ]; then
+ echo -e $RED"Image setting from cmd line not consistent for $imagename."$ERED
+ ((IMAGE_ERR++))
+ fi
+ else
+ IMAGE_SUFFIX="none"
+ fi
+ # A function name is created from the app short name
+ # for example app short name 'ICS' -> produce the function
+ # name __ICS_imagesetup
+ # This function is called and is expected to exist in the imported
+ # file for the ics test functions
+ # The resulting function impl will call '__check_and_create_image_var' function
+ # with appropriate parameters
+ # If the image suffix is none, then the component decides the suffix
+ function_pointer="__"$imagename"_imagesetup"
+ $function_pointer $IMAGE_SUFFIX
+
+ function_pointer="__"$imagename"_test_requirements"
+ $function_pointer
+ fi
+ done
+
+ #Errors in image setting - exit
+ if [ $IMAGE_ERR -ne 0 ]; then
+ exit 1
+ fi
+
+ #Print a tables of the image settings
+ echo -e $BOLD"Images configured for start arg: "$START_ARG $EBOLD
+ column -t -s $'\t' $image_list_file | indent1
+
+ echo ""
+
+ #Set the SIM_GROUP var
+ echo -e $BOLD"Setting var to main dir of all container/simulator scripts"$EBOLD
+ if [ -z "$SIM_GROUP" ]; then
+ SIM_GROUP=$AUTOTEST_HOME/../simulator-group
+ if [ ! -d $SIM_GROUP ]; then
+ echo "Trying to set env var SIM_GROUP to dir 'simulator-group' in the nontrtric repo, but failed."
+ echo -e $RED"Please set the SIM_GROUP manually in the applicable $TEST_ENV_VAR_FILE"$ERED
+ exit 1
+ else
+ echo " SIM_GROUP auto set to: " $SIM_GROUP
+ fi
+ elif [ $SIM_GROUP = *simulator_group ]; then
+ echo -e $RED"Env var SIM_GROUP does not seem to point to dir 'simulator-group' in the repo, check $TEST_ENV_VAR_FILE"$ERED
+ exit 1
+ else
+ echo " SIM_GROUP env var already set to: " $SIM_GROUP
+ fi
+
+ echo ""
+
+ #Temp var to check for image pull errors
+ IMAGE_ERR=0
+
+ # Delete namespaces
+ echo -e $BOLD"Deleting namespaces"$EBOLD
+
+
+ if [ "$DELETE_KUBE_NAMESPACES" -eq 1 ]; then
+ test_env_namespaces=$(kubectl $KUBECONF get ns --no-headers -o custom-columns=":metadata.name" -l autotest=engine) #Get list of ns created by the test env
+ if [ $? -ne 0 ]; then
+ echo " Cannot get list of namespaces...ignoring delete"
+ else
+ for test_env_ns in $test_env_namespaces; do
+ __kube_delete_namespace $test_env_ns
+ done
+ fi
+ else
+ echo " Namespace delete option not set or ignored"
+ fi
+ echo ""
+
+ # Delete containers
+ echo -e $BOLD"Deleting containers"$EBOLD
+
+ if [ "$DELETE_CONTAINERS" -eq 1 ]; then
+ echo " Stopping containers label 'nrttest_app'..."
+ docker stop $(docker ps -qa --filter "label=nrttest_app") 2> /dev/null
+ echo " Removing stopped containers..."
+ docker rm $(docker ps -qa --filter "label=nrttest_app") 2> /dev/null
+ else
+ echo " Contatiner delete option not set or ignored"
+ fi
+ echo ""
+
+ # The following sequence pull the configured images
+ echo -e $BOLD"Pulling configured images, if needed"$EBOLD
+ if [ ! -z "$IMAGE_REPO_ADR" ] && [ $IMAGE_REPO_POLICY == "local" ]; then
+ echo -e $YELLOW" Excluding all remote image check/pull when running with image repo: $IMAGE_REPO_ADR and image policy $IMAGE_REPO_POLICY"$EYELLOW
+ else
+ for imagename in $APP_SHORT_NAMES; do
+ __check_included_image $imagename
+ incl=$?
+ __check_project_image $imagename
+ proj=$?
+ if [ $incl -eq 0 ]; then
+ if [ $proj -eq 0 ]; then
+ START_ARG_MOD=$START_ARG
+ __check_image_local_override $imagename
+ if [ $? -eq 1 ]; then
+ START_ARG_MOD="local"
+ fi
+ else
+ START_ARG_MOD=$START_ARG
+ fi
+ __check_image_local_build $imagename
+ #No pull of images built locally
+ if [ $? -ne 0 ]; then
+ # A function name is created from the app short name
+ # for example app short name 'HTTPPROXY' -> produce the function
+ # name __HTTPPROXY_imagesetup
+ # This function is called and is expected to exist in the imported
+ # file for the httpproxy test functions
+ # The resulting function impl will call '__check_and_pull_image' function
+ # with appropriate parameters
+ function_pointer="__"$imagename"_imagepull"
+ $function_pointer $START_ARG_MOD $START_ARG
+ fi
+ else
+ echo -e $YELLOW" Excluding $imagename image from image check/pull"$EYELLOW
+ fi
+ done
+ fi
+
+ #Errors in image setting - exit
+ if [ $IMAGE_ERR -ne 0 ]; then
+ echo ""
+ echo "#################################################################################################"
+ echo -e $RED"One or more images could not be pulled or containers using the images could not be stopped/removed"$ERED
+ echo -e $RED"Or local image, overriding remote image, does not exist"$ERED
+ if [ $IMAGE_CATEGORY == "DEV" ]; then
+ echo ""
+ echo -e $RED"Note that SNAPSHOT and staging images may be purged from nexus after a certain period."$ERED
+ echo -e $RED"In addition, the image may not have been updated in the current release so no SNAPSHOT or staging image exists"$ERED
+ echo -e $RED"In these cases, switch to use a released image instead, use the flag '--use-release-image <App-short-name>'"$ERED
+ echo -e $RED"Use the 'App-short-name' for the applicable image from the above table: 'Images configured for start arg'."$ERED
+ fi
+ echo "#################################################################################################"
+ echo ""
+ exit 1
+ fi
+
+ echo ""
+
+ echo -e $BOLD"Building images needed for test"$EBOLD
+
+ for imagename in $APP_SHORT_NAMES; do
+ cd $AUTOTEST_HOME #Always reset to orig dir
+ __check_image_local_build $imagename
+ if [ $? -eq 0 ]; then
+ __check_included_image $imagename
+ if [ $? -eq 0 ]; then
+ # A function name is created from the app short name
+ # for example app short name 'MR' -> produce the function
+ # name __MR_imagebuild
+ # This function is called and is expected to exist in the imported
+ # file for the mr test functions
+ # The resulting function impl shall build the imagee
+ function_pointer="__"$imagename"_imagebuild"
+ $function_pointer
+
+ else
+ echo -e $YELLOW" Excluding image for app $imagename from image build"$EYELLOW
+ fi
+ fi
+ done
+
+ cd $AUTOTEST_HOME # Just to make sure...
+
+ echo ""
+
+ # Create a table of the images used in the script - from local repo
+ echo -e $BOLD"Local docker registry images used in this test script"$EBOLD
+
+ docker_tmp_file=./tmp/.docker-images-table
+ format_string="{{.Repository}}\\t{{.Tag}}\\t{{.CreatedSince}}\\t{{.Size}}\\t{{.CreatedAt}}"
+ echo -e "Application\tRepository\tTag\tCreated since\tSize\tCreated at" > $docker_tmp_file
+
+ for imagename in $APP_SHORT_NAMES; do
+ __check_included_image $imagename
+ if [ $? -eq 0 ]; then
+ # Only print image data if image repo is null, or if image repo is set and image is local
+ print_image_data=0
+ if [ -z "$IMAGE_REPO_ADR" ]; then
+ print_image_data=1
+ else
+ __check_image_local_build $imagename
+ if [ $? -eq 0 ]; then
+ print_image_data=1
+ fi
+ fi
+ if [ $print_image_data -eq 1 ]; then
+ # A function name is created from the app short name
+ # for example app short name 'MR' -> produce the function
+ # name __MR_imagebuild
+ # This function is called and is expected to exist in the imported
+ # file for the mr test functions
+ # The resulting function impl shall build the imagee
+ function_pointer="__"$imagename"_image_data"
+ $function_pointer "$format_string" $docker_tmp_file
+ fi
+ fi
+ done