Merge "Updates of function test for f-release"
[nonrtric.git] / test / common / testcase_common.sh
index 80059a1..da2abf5 100755 (executable)
@@ -163,18 +163,51 @@ TESTLOGS=$PWD/logs
 # files in the ./tmp is moved to ./tmp/prev when a new test is started
 if [ ! -d "tmp" ]; then
     mkdir tmp
+       if [ $? -ne 0 ]; then
+               echo "Cannot create dir for temp files, $PWD/tmp"
+               echo "Exiting...."
+               exit 1
+       fi
 fi
 curdir=$PWD
 cd tmp
 if [ $? -ne 0 ]; then
        echo "Cannot cd to $PWD/tmp"
-       echo "Dir cannot be created. Exiting...."
+       echo "Exiting...."
+       exit 1
 fi
+
+TESTENV_TEMP_FILES=$PWD
+
 if [ ! -d "prev" ]; then
     mkdir prev
+       if [ $? -ne 0 ]; then
+               echo "Cannot create dir for previous temp files, $PWD/prev"
+               echo "Exiting...."
+               exit 1
+       fi
 fi
+
+TMPFILES=$(ls -A  | grep -vw prev)
+if [ ! -z "$TMPFILES" ]; then
+       cp -r $TMPFILES prev   #Move all temp files to prev dir
+       if [ $? -ne 0 ]; then
+               echo "Cannot move temp files in $PWD to previous temp files in, $PWD/prev"
+               echo "Exiting...."
+               exit 1
+       fi
+       if [ $(pwd | xargs basename) == "tmp" ]; then    #Check that current dir is tmp...for safety
+
+               rm -rf $TMPFILES # Remove all temp files
+       fi
+fi
+
 cd $curdir
-mv ./tmp/* ./tmp/prev 2> /dev/null
+if [ $? -ne 0 ]; then
+       echo "Cannot cd to $curdir"
+       echo "Exiting...."
+       exit 1
+fi
 
 # Create a http message log for this testcase
 HTTPLOG=$PWD"/.httplog_"$ATC".txt"
@@ -756,6 +789,7 @@ fi
 
 echo ""
 # auto adding system apps
+__added_apps=""
 echo -e $BOLD"Auto adding system apps"$EBOLD
 if [ $RUNMODE == "KUBE" ]; then
        INCLUDED_IMAGES=$INCLUDED_IMAGES" "$TESTENV_KUBE_SYSTEM_APPS
@@ -768,22 +802,47 @@ if [ ! -z "$TMP_APPS" ]; then
        for iapp in "$TMP_APPS"; do
                file_pointer=$(echo $iapp | tr '[:upper:]' '[:lower:]')
                file_pointer="../common/"$file_pointer"_api_functions.sh"
-               echo " Auto-adding system app $iapp.  Sourcing $file_pointer"
+           padded_iapp=$iapp
+               while [ ${#padded_iapp} -lt 16 ]; do
+                       padded_iapp=$padded_iapp" "
+               done
+               echo " Auto-adding system app   $padded_iapp  Sourcing $file_pointer"
                . $file_pointer
+               if [ $? -ne 0 ]; then
+                       echo " Include file $file_pointer contain errors. Exiting..."
+                       exit 1
+               fi
+               __added_apps=" $iapp "$__added_apps
        done
 else
        echo " None"
 fi
 
+if [ $RUNMODE == "KUBE" ]; then
+       TMP_APPS=$INCLUDED_IMAGES" "$KUBE_PRESTARTED_IMAGES
+else
+       TMP_APPS=$INCLUDED_IMAGES
+fi
+
 echo -e $BOLD"Auto adding included apps"$EBOLD
-       for iapp in $INCLUDED_IMAGES; do
-               file_pointer=$(echo $iapp | tr '[:upper:]' '[:lower:]')
-               file_pointer="../common/"$file_pointer"_api_functions.sh"
-               echo " Auto-adding included app $iapp.  Sourcing $file_pointer"
-               . $file_pointer
-               if [ ! -f "$file_pointer" ]; then
-                       echo " Include file $file_pointer for app $iapp does not exist"
-                       exit 1
+       for iapp in $TMP_APPS; do
+               if [[ "$__added_apps" != *"$iapp"* ]]; then
+                       file_pointer=$(echo $iapp | tr '[:upper:]' '[:lower:]')
+                       file_pointer="../common/"$file_pointer"_api_functions.sh"
+                       padded_iapp=$iapp
+                       while [ ${#padded_iapp} -lt 16 ]; do
+                               padded_iapp=$padded_iapp" "
+                       done
+                       echo " Auto-adding included app $padded_iapp  Sourcing $file_pointer"
+                       if [ ! -f "$file_pointer" ]; then
+                               echo " Include file $file_pointer for app $iapp does not exist"
+                               exit 1
+                       fi
+                       . $file_pointer
+                       if [ $? -ne 0 ]; then
+                               echo " Include file $file_pointer contain errors. Exiting..."
+                               exit 1
+                       fi
                fi
        done
 echo ""
@@ -866,6 +925,8 @@ else
 
                        exit 1
                fi
+               echo " Node(s) and container container runtime config"
+               kubectl get nodes -o wide | indent2
        fi
 fi
 
@@ -1279,6 +1340,9 @@ setup_testenvironment() {
                        # 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
 
@@ -1996,7 +2060,7 @@ __kube_delete_all_resources() {
        namespace=$1
        labelname=$2
        labelid=$3
-       resources="deployments replicaset statefulset services pods configmaps persistentvolumeclaims persistentvolumes"
+       resources="deployments replicaset statefulset services pods configmaps persistentvolumeclaims persistentvolumes serviceaccounts clusterrolebindings"
        deleted_resourcetypes=""
        for restype in $resources; do
                ns_flag="-n $namespace"
@@ -2005,6 +2069,10 @@ __kube_delete_all_resources() {
                        ns_flag=""
                        ns_text=""
                fi
+               if [ $restype == "clusterrolebindings" ]; then
+                       ns_flag=""
+                       ns_text=""
+               fi
                result=$(kubectl get $restype $ns_flag -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
                if [ $? -eq 0 ] && [ ! -z "$result" ]; then
                        deleted_resourcetypes=$deleted_resourcetypes" "$restype
@@ -2083,6 +2151,51 @@ __kube_create_namespace() {
        return 0
 }
 
+# Removes a namespace if it exists
+# args: <namespace>
+# (Not for test scripts)
+__kube_delete_namespace() {
+
+       #Check if test namespace exists, if so remove it
+       kubectl get namespace $1 1> /dev/null 2> ./tmp/kubeerr
+       if [ $? -eq 0 ]; then
+               echo -ne " Removing namespace "$1 $SAMELINE
+               kubectl delete namespace $1 1> /dev/null 2> ./tmp/kubeerr
+               if [ $? -ne 0 ]; then
+                       echo -e " Removing namespace $1 $RED$BOLD FAILED $EBOLD$ERED"
+                       ((RES_CONF_FAIL++))
+                       echo "  Message: $(<./tmp/kubeerr)"
+                       return 1
+               else
+                       echo -e " Removing namespace $1 $GREEN$BOLD OK $EBOLD$EGREEN"
+               fi
+       else
+               echo -e " Namespace $1 $GREEN$BOLD does not exist, OK $EBOLD$EGREEN"
+       fi
+       return 0
+}
+
+# Removes a namespace
+# args: <namespace>
+# (Not for test scripts)
+clean_and_create_namespace() {
+       __log_conf_start $@
+
+    if [ $# -ne 1 ]; then
+               __print_err "<namespace>" $@
+               return 1
+       fi
+       __kube_delete_namespace $1
+       if [ $? -ne 0 ]; then
+               return 1
+       fi
+       __kube_create_namespace $1
+       if [ $? -ne 0 ]; then
+               return 1
+       fi
+
+}
+
 # Find the host ip of an app (using the service resource)
 # args: <app-name> <namespace>
 # (Not for test scripts)
@@ -2241,6 +2354,7 @@ __kube_clean_pvc() {
        export PVC_CLEANER_NAMESPACE=$2
        export PVC_CLEANER_CLAIMNAME=$3
        export PVC_CLEANER_RM_PATH=$4
+       export PVC_CLEANER_APP_NAME
        input_yaml=$SIM_GROUP"/"$PVC_CLEANER_COMPOSE_DIR"/"pvc-cleaner.yaml
        output_yaml=$PWD/tmp/$2-pvc-cleaner.yaml
 
@@ -2325,14 +2439,14 @@ clean_environment() {
                __clean_kube
                if [ $PRE_CLEAN -eq 1 ]; then
                        echo " Cleaning docker resouces to free up resources, may take time..."
-                       ../common/clean_docker.sh 2&>1 /dev/null
+                       ../common/clean_docker.sh 2>&1 /dev/null
                        echo ""
                fi
        else
                __clean_containers
                if [ $PRE_CLEAN -eq 1 ]; then
                        echo " Cleaning kubernetes resouces to free up resources, may take time..."
-                       ../common/clean_kube.sh 2&>1 /dev/null
+                       ../common/clean_kube.sh 2>&1 /dev/null
                        echo ""
                fi
        fi
@@ -2435,9 +2549,14 @@ __start_container() {
 
        envsubst < $compose_file > "gen_"$compose_file
        compose_file="gen_"$compose_file
+       if [ $DOCKER_COMPOSE_VERION == "V1" ]; then
+               docker_compose_cmd="docker-compose"
+       else
+               docker_compose_cmd="docker compose"
+       fi
 
        if [ "$compose_args" == "NODOCKERARGS" ]; then
-               docker-compose -f $compose_file up -d &> .dockererr
+               $docker_compose_cmd -f $compose_file up -d &> .dockererr
                if [ $? -ne 0 ]; then
                        echo -e $RED"Problem to launch container(s) with docker-compose"$ERED
                        cat .dockererr
@@ -2445,7 +2564,7 @@ __start_container() {
                        exit 1
                fi
        else
-               docker-compose -f $compose_file up -d $compose_args &> .dockererr
+               $docker_compose_cmd -f $compose_file up -d $compose_args &> .dockererr
                if [ $? -ne 0 ]; then
                        echo -e $RED"Problem to launch container(s) with docker-compose"$ERED
                        cat .dockererr