# Applies only to images defined in the test-env files with image names and tags defined as XXXX_RELEASE
IMAGE_CATEGORY="DEV"
+#Var to indicate docker-compose version, V1 or V2
+#V1 names replicated containers <proj-name>_<service-name>_<index>
+#V2 names replicated containers <proj-name>-<service-name>-<index>
+DOCKER_COMPOSE_VERION="V1"
+
# Function to indent cmd output with one space
indent1() { sed 's/^/ /'; }
#Var for measuring execution time
TCTEST_START=$SECONDS
+#Vars to hold the start time and timer text for a custom timer
+TC_TIMER_STARTTIME=""
+TC_TIMER_TIMER_TEXT=""
+TC_TIMER_CURRENT_FAILS="" # Then numer of failed test when timer starts.
+ # Compared with the current number of fails at timer stop
+ # to judge the measurement reliability
+
#File to save timer measurement results
TIMER_MEASUREMENTS=".timer_measurement.txt"
-echo -e "Activity \t Duration" > $TIMER_MEASUREMENTS
+echo -e "Activity \t Duration \t Info" > $TIMER_MEASUREMENTS
# If this is set, some images (control by the parameter repo-polcy) will be re-tagged and pushed to this repo before any
IMAGE_REPO_ADR=""
if [ $paramerror -eq 0 ]; then
if [ "$1" == "--print-stats" ]; then
PRINT_CURRENT_STATS=1
- echo "Option set - Print stats"
+ echo "Option set - Print stats after every test-case and config"
shift;
foundparm=0
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
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
+ __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 $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"
+ . $file_pointer
+ if [ ! -f "$file_pointer" ]; then
+ echo " Include file $file_pointer for app $iapp does not exist"
+ exit 1
+ fi
+ fi
+ done
echo ""
+echo -e $BOLD"Test environment info"$EBOLD
+
# Check needed installed sw
+
+tmp=$(which bash)
+if [ $? -ne 0 ] || [ -z "$tmp" ]; then
+ echo -e $RED"bash is required to run the test environment, pls install"$ERED
+ exit 1
+fi
+echo " bash is installed and using version:"
+echo "$(bash --version)" | indent2
+
tmp=$(which python3)
-if [ $? -ne 0 ] || [ -z tmp ]; then
+if [ $? -ne 0 ] || [ -z "$tmp" ]; then
echo -e $RED"python3 is required to run the test environment, pls install"$ERED
exit 1
fi
+echo " python3 is installed and using version: $(python3 --version)"
+
tmp=$(which docker)
-if [ $? -ne 0 ] || [ -z tmp ]; then
+if [ $? -ne 0 ] || [ -z "$tmp" ]; then
echo -e $RED"docker is required to run the test environment, pls install"$ERED
exit 1
fi
+echo " docker is installed and using versions:"
+echo " $(docker version --format 'Client version {{.Client.Version}} Server version {{.Server.Version}}')"
tmp=$(which docker-compose)
-if [ $? -ne 0 ] || [ -z tmp ]; then
+if [ $? -ne 0 ] || [ -z "$tmp" ]; then
if [ $RUNMODE == "DOCKER" ]; then
echo -e $RED"docker-compose is required to run the test environment, pls install"$ERED
exit 1
fi
fi
-if [ $RUNMODE == "DOCKER" ]; then
- tmp=$(docker-compose version | grep -i 'docker' | grep -i 'compose' | grep -i 'version')
- if [[ "$tmp" == *'v2'* ]]; then
- echo -e $RED"docker-compose is using docker-compose version 2"$ERED
- echo -e $RED"The test environment only support version 1"$ERED
- echo -e $RED"Disable version 2 by cmd 'docker-compose disable-v2' and re-run the script "$ERED
- exit 1
- fi
+tmp=$(docker-compose version --short)
+echo " docker-compose installed and using version $tmp"
+if [[ "$tmp" == *'v2'* ]]; then
+ DOCKER_COMPOSE_VERION="V2"
fi
tmp=$(which kubectl)
fi
else
if [ $RUNMODE == "KUBE" ]; then
+ echo " kubectl is installed and using versions:"
+ echo $(kubectl version --short=true) | indent2
res=$(kubectl cluster-info 2>&1)
if [ $? -ne 0 ]; then
echo -e "$BOLD$RED############################################# $ERED$EBOLD"
fi
fi
+echo ""
+
echo -e $BOLD"Checking configured image setting for this test case"$EBOLD
#Temp var to check for image variable name errors
IMAGE_SUFFIX="none"
fi
# A function name is created from the app short name
- # for example app short name 'ECS' -> produce the function
- # name __ECS_imagesetup
+ # 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 ecs test functions
+ # 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
echo "===================================="
column -t -s $'\t' $TIMER_MEASUREMENTS
if [ $RES_PASS != $RES_TEST ]; then
- echo -e $RED"Measurement may not be reliable when there are failed test - script timeouts may cause long measurement values"$ERED
+ echo -e $RED"Measurement may not be reliable when there are failed test - failures may cause long measurement values due to timeouts etc."$ERED
fi
echo ""
#####################################################################
# Start timer for time measurement
-# args - (any args will be printed though)
+# args: <timer message to print> - timer value and message will be printed both on screen
+# and in the timer measurement report - if at least one "print_timer is called"
start_timer() {
echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $@ $EBOLD
- TC_TIMER=$SECONDS
+ TC_TIMER_STARTTIME=$SECONDS
+ TC_TIMER_TIMER_TEXT="${@:1}"
+ if [ $# -ne 1 ]; then
+ __print_err "need 1 arg, <timer message to print>" $@
+ TC_TIMER_TIMER_TEXT=${FUNCNAME[0]}":"${BASH_LINENO[0]}
+ echo " Assigning timer name: "$TC_TIMER_TIMER_TEXT
+ fi
+ TC_TIMER_CURRENT_FAILS=$(($RES_FAIL+$RES_CONF_FAIL))
echo " Timer started: $(date)"
}
-# Print the value of the time (in seconds)
-# args - <timer message to print> - timer value and message will be printed both on screen
-# and in the timer measurement report
+# Print the running timer the value of the time (in seconds)
+# Timer value and message will be printed both on screen and in the timer measurement report
print_timer() {
- echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $@ $EBOLD
- if [ $# -lt 1 ]; then
- ((RES_CONF_FAIL++))
- __print_err "need 1 or more args, <timer message to print>" $@
- exit 1
+ echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $TC_TIMER_TIMER_TEXT $EBOLD
+ if [ -z "$TC_TIMER_STARTTIME" ]; then
+ __print_err "timer not started" $@
+ return 1
fi
- duration=$(($SECONDS-$TC_TIMER))
+ duration=$(($SECONDS-$TC_TIMER_STARTTIME))
if [ $duration -eq 0 ]; then
duration="<1 second"
else
duration=$duration" seconds"
fi
echo " Timer duration :" $duration
-
- echo -e "${@:1} \t $duration" >> $TIMER_MEASUREMENTS
-}
-
-# Print the value of the time (in seconds) and reset the timer
-# args - <timer message to print> - timer value and message will be printed both on screen
-# and in the timer measurement report
-print_and_reset_timer() {
- echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $@ $EBOLD
- if [ $# -lt 1 ]; then
- ((RES_CONF_FAIL++))
- __print_err "need 1 or more args, <timer message to print>" $@
- exit 1
+ res="-"
+ if [ $(($RES_FAIL+$RES_CONF_FAIL)) -ne $TC_TIMER_CURRENT_FAILS ]; then
+ res="Failures occured during test - timer not reliabled"
fi
- duration=$(($SECONDS-$TC_TIMER))" seconds"
- if [ $duration -eq 0 ]; then
- duration="<1 second"
- else
- duration=$duration" seconds"
- fi
- echo " Timer duration :" $duration
- TC_TIMER=$SECONDS
- echo " Timer reset"
-
- echo -e "${@:1} \t $duration" >> $TIMER_MEASUREMENTS
+ echo -e "$TC_TIMER_TIMER_TEXT \t $duration \t $res" >> $TIMER_MEASUREMENTS
}
+
# Print info about a deviations from intended tests
# Each deviation counted is also printed in the testreport
# args <deviation message to print>
for imagename in $APP_SHORT_NAMES; do
docker ps -a --filter "label=nrttest_app=$imagename" --filter "network=$DOCKER_SIM_NWNAME" --format ' {{.Label "nrttest_dp"}}\n{{.Label "nrttest_app"}}\n{{.Names}}' >> $running_contr_file
done
+ running_contr_file_empty="No docker containers running, started by previous test execution"
+ if [ -s $running_contr_file ]; then
+ running_contr_file_empty=""
+ fi
# Kill all containers started by the test env - to speed up shut down
docker kill $(docker ps -a --filter "label=nrttest_app" --format '{{.Names}}') &> /dev/null
tab_heading3="$tab_heading3"" "
done
- echo " $tab_heading1$tab_heading2$tab_heading3"" Actions"
- cntr=0
- while read p; do
- if (( $cntr % 3 == 0 ));then
- row=""
- heading=$p
- heading_len=$tab_heading1_len
- fi
- if (( $cntr % 3 == 1));then
- heading=$p
- heading_len=$tab_heading2_len
- fi
- if (( $cntr % 3 == 2));then
- contr=$p
- heading=$p
- heading_len=$tab_heading3_len
- fi
- while (( ${#heading} < $heading_len)); do
- heading="$heading"" "
- done
- row=$row$heading
- if (( $cntr % 3 == 2));then
- echo -ne $row$SAMELINE
- echo -ne " $row ${GREEN}stopping...${EGREEN}${SAMELINE}"
- docker stop $(docker ps -qa --filter name=${contr} --filter network=$DOCKER_SIM_NWNAME) &> /dev/null
- echo -ne " $row ${GREEN}stopped removing...${EGREEN}${SAMELINE}"
- docker rm --force $(docker ps -qa --filter name=${contr} --filter network=$DOCKER_SIM_NWNAME) &> /dev/null
- echo -e " $row ${GREEN}stopped removed ${EGREEN}"
- fi
- let cntr=cntr+1
- done <$running_contr_file
+ if [ ! -z "$running_contr_file_empty" ]; then
+ echo $running_contr_file_empty | indent1
+ else
+ echo " $tab_heading1$tab_heading2$tab_heading3"" Actions"
+ cntr=0
+ while read p; do
+ if (( $cntr % 3 == 0 ));then
+ row=""
+ heading=$p
+ heading_len=$tab_heading1_len
+ fi
+ if (( $cntr % 3 == 1));then
+ heading=$p
+ heading_len=$tab_heading2_len
+ fi
+ if (( $cntr % 3 == 2));then
+ contr=$p
+ heading=$p
+ heading_len=$tab_heading3_len
+ fi
+ while (( ${#heading} < $heading_len)); do
+ heading="$heading"" "
+ done
+ row=$row$heading
+ if (( $cntr % 3 == 2));then
+ echo -ne $row$SAMELINE
+ echo -ne " $row ${GREEN}stopping...${EGREEN}${SAMELINE}"
+ docker stop $(docker ps -qa --filter name=${contr} --filter network=$DOCKER_SIM_NWNAME) &> /dev/null
+ echo -ne " $row ${GREEN}stopped removing...${EGREEN}${SAMELINE}"
+ docker rm --force $(docker ps -qa --filter name=${contr} --filter network=$DOCKER_SIM_NWNAME) &> /dev/null
+ echo -e " $row ${GREEN}stopped removed ${EGREEN}"
+ fi
+ let cntr=cntr+1
+ done <$running_contr_file
+ fi
echo ""
echo -e " Scaled $restype $resid $ns_text with label $labelname=$labelid to 0, current count=$count $GREEN OK $EGREEN"
fi
echo -ne " Deleting $restype $resid $ns_text with label $labelname=$labelid "$SAMELINE
- kubectl delete $restype $resid $ns_flag 1> /dev/null 2> ./tmp/kubeerr
+ kubectl delete --grace-period=1 $restype $resid $ns_flag 1> /dev/null 2> ./tmp/kubeerr
if [ $? -eq 0 ]; then
echo -e " Deleted $restype $resid $ns_text with label $labelname=$labelid $GREEN OK $EGREEN"
else
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
if [ $RUNMODE == "KUBE" ]; then
__clean_kube
if [ $PRE_CLEAN -eq 1 ]; then
- echo " Clean docker resouces to free up resources, may take time..."
+ echo " Cleaning docker resouces to free up resources, may take time..."
../common/clean_docker.sh 2&>1 /dev/null
echo ""
fi
appcount=$1
shift
+ envsubst < $compose_file > "gen_"$compose_file
+ compose_file="gen_"$compose_file
+
if [ "$compose_args" == "NODOCKERARGS" ]; then
docker-compose -f $compose_file up -d &> .dockererr
if [ $? -ne 0 ]; then