Replace ifonfig with ip a
[integration/csit.git] / scripts / sdc / setup_sdc_for_sanity.sh
index 79708c5..90ffa23 100644 (file)
 #!/bin/bash
 
 function usage {
-    echo "usage: setup_sdc_for_sanity.sh {tad|tud}"
-    echo "setup sdc and run api test suite: setup_sdc_for_sanity.sh tad"
-    echo "setup sdc and run ui test suite: setup_sdc_for_sanity.sh tud"
+cat <<EOF
+USAGE
+    setup_sdc_for_sanity.sh [tad|tud]
+
+EXAMPLES
+    setup_sdc_for_sanity.sh
+        just setup sdc component (containers)
+
+    setup_sdc_for_sanity.sh tad
+        setup sdc and run api test suite
+
+    setup_sdc_for_sanity.sh tud
+        setup sdc and run ui test suite
+EOF
 }
 
+# arg: <variable name>
+# returns 0: if <variable name> is set to true value
+# returns 1: otherwise
+function is_true {
+    _value=$(eval echo "\$${1}" | tr '[:upper:]' '[:lower:]')
 
-set -x
+    case "$_value" in
+        1|yes|true|Y)
+            return 0
+            ;;
+    esac
 
-echo "This is ${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh"
+    return 1
+}
 
+# returns 0: if SDC_LOCAL_IMAGES is set to true value
+# returns 1: otherwise
+function using_local_images {
+    is_true SDC_LOCAL_IMAGES
+}
 
-if [ "$1" != "tad" ] && [ "$1" != "tud" ]; then
-    usage
-    exit 1
-fi
+# returns 0: if SDC_TEST_HTTPS is set to true value
+# returns 1: otherwise
+function using_https {
+    is_true SDC_TEST_HTTPS
+}
 
-# Clone sdc enviroment template
-mkdir -p ${WORKSPACE}/data/environments/
-mkdir -p ${WORKSPACE}/data/clone/
-#mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE
-#mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE
-#chmod -R 777 ${WORKSPACE}/data/logs
-#ls -lR ${WORKSPACE}/data/logs/
+# fail quick if error
+set -exo pipefail
+
+echo "This is ${WORKSPACE}/scripts/sdc/setup_sdc_for_sanity.sh"
 
-cd ${WORKSPACE}/data/clone
-git clone --depth 1 http://gerrit.onap.org/r/sdc -b ${GERRIT_BRANCH}
+ENABLE_SIMULATOR=
+case "$1" in
+    tad|tud)
+        # enable test
+        export TEST_SUITE="-${1}"
+        ;;
+    '')
+        # we will just setup sdc - no tests
+        export TEST_SUITE=""
+
+        # this is mandatory
+        ENABLE_SIMULATOR="--simulator"
+        ;;
+    *)
+        usage
+        exit 1
+        ;;
+esac
+
+# Clone sdc enviroment template
+mkdir -p "${WORKSPACE}/data/environments/"
+mkdir -p "${WORKSPACE}/data/clone/"
+
+cd "${WORKSPACE}/data/clone"
+if using_local_images && [ -n "$SDC_LOCAL_GITREPO" ] ; then
+    SDC_LOCAL_GITREPO=$(realpath "$SDC_LOCAL_GITREPO")
+    if [ -d "$SDC_LOCAL_GITREPO" ] ; then
+        rm -rf ./sdc
+        cp -a "$SDC_LOCAL_GITREPO" ./sdc
+    else
+        echo "[ERROR]: Local git repo for sdc does not exist: ${SDC_LOCAL_GITREPO}"
+        exit 1
+    fi
+else
+    git clone --depth 1 "https://gerrit.onap.org/r/sdc" -b ${GERRIT_BRANCH}
+fi
 
-chmod -R 777 ${WORKSPACE}/data/clone
+# TODO: why?
+chmod -R 777 "${WORKSPACE}/data/clone"
 
 # set enviroment variables
 
 export ENV_NAME='CSIT'
 export MR_IP_ADDR='10.0.0.1'
-export TEST_SUITE=$1
 
-ifconfig
+ip a
 IP_ADDRESS=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'`
-export HOST_IP=$IP_ADDRESS
+export HOST_IP="$IP_ADDRESS"
 
 # setup enviroment json
-
-cat ${WORKSPACE}/data/clone/sdc/sdc-os-chef/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > ${WORKSPACE}/data/environments/$ENV_NAME.json
-sed -i "s/xxx/"$ENV_NAME"/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
-sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
-sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" ${WORKSPACE}/data/environments/$ENV_NAME.json
-
-  
-source ${WORKSPACE}/data/clone/sdc/version.properties
-export RELEASE=$major.$minor-STAGING-latest
-export DEP_ENV=$ENV_NAME
-
-cp ${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh ${WORKSPACE}/scripts/sdc/
-#sed -i "s~/data~${WORKSPACE}\/data~g" ${WORKSPACE}/scripts/sdc/docker_run.sh
-#sed -i "s/HOST_IP=\${IP}/HOST_IP=\${HOST_IP}/g" ${WORKSPACE}/scripts/sdc/docker_run.sh
-#sed -i "s/ENVNAME=\"\${DEP_ENV}\"/ENVNAME=\"\${ENV_NAME}\"/g" ${WORKSPACE}/scripts/sdc/docker_run.sh
-
-source ${WORKSPACE}/data/clone/sdc/version.properties
-export RELEASE=$major.$minor-STAGING-latest
-
-${WORKSPACE}/scripts/sdc/docker_run.sh -r ${RELEASE} -e ${ENV_NAME} -p 10001 -${TEST_SUITE}
-
-sleep 120
-
-#monitor test processes
-
-TIME_OUT=1200
-INTERVAL=20
-TIME=0
-CID=`docker ps | grep tests |  awk '{print $1}'`
-
-while [ "$TIME" -lt "$TIME_OUT" ]; do
-  
-PID=`docker exec -i $CID ps -ef | grep java | awk '{print $1}'`
-
-echo sanity PID is -- $PID
-  
-if [ -z "$PID" ]
- then
-    echo SDC sanity finished in $TIME seconds
-    break
-  fi
-
-  echo Sleep: $INTERVAL seconds before testing if SDC sanity completed. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
-  sleep $INTERVAL
-  TIME=$(($TIME+$INTERVAL))
-done
-
-if [ "$TIME" -ge "$TIME_OUT" ]
- then
-   echo TIME OUT: SDC sanity was NOT completed in $TIME_OUT seconds... Could cause problems for tests...
+# TODO: use jq or find a better way altogether...
+cp "${WORKSPACE}/data/clone/sdc/sdc-os-chef/environments/Template.json" \
+    "${WORKSPACE}/data/environments/$ENV_NAME.json"
+sed -i \
+    -e "s/xxx/${ENV_NAME}/g" \
+    -e "s/yyy/${IP_ADDRESS}/g" \
+    -e "s/\"ueb_url_list\":.*/\"ueb_url_list\": \"${MR_IP_ADDR},${MR_IP_ADDR}\",/g" \
+    -e "s/\"fqdn\":.*/\"fqdn\": [\"${MR_IP_ADDR}\", \"${MR_IP_ADDR}\"]/g" \
+    "${WORKSPACE}/data/environments/$ENV_NAME.json"
+if using_https ; then
+    # this is very fragile (as all above) and relies on the current state of Template.json in another project...
+    # using jq filters would be much better approach and no need for some "yyy"...
+    sed -i \
+        -e 's/"disableHttp":[[:space:]]*"\?[[:alnum:]]*"\?/"disableHttp": true/' \
+        "${WORKSPACE}/data/environments/$ENV_NAME.json"
 fi
 
+cp "${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh" "${WORKSPACE}/scripts/sdc/"
+
+source "${WORKSPACE}/data/clone/sdc/version.properties"
+export RELEASE="${major}.${minor}-STAGING-latest"
+
+if using_local_images ; then
+    if [ -n "$SDC_LOCAL_TAG" ] ; then
+        RELEASE="$SDC_LOCAL_TAG"
+    elif [ -z "$SDC_LOCAL_GITREPO" ] ; then
+        echo "[WARNING]: Local images used but no tag and no source (git repo) provided for them - we will use tag 'latest'"
+        RELEASE=latest
+    fi
+
+    echo "[INFO]: We will use the locally built images (tag: ${RELEASE})"
+    "${WORKSPACE}/scripts/sdc/docker_run.sh" \
+        --local \
+        -r "${RELEASE}" \
+        -e "${ENV_NAME}" \
+        -p 10001 ${TEST_SUITE} ${ENABLE_SIMULATOR}
+else
+    echo "[INFO]: We will download images from the default registry (tag: ${RELEASE})"
+    ${WORKSPACE}/scripts/sdc/docker_run.sh \
+        -r "${RELEASE}" \
+        -e "${ENV_NAME}" \
+        -p 10001 ${TEST_SUITE} ${ENABLE_SIMULATOR}
+fi
 
+# final step if the robot test needs to be adjusted
+# TODO: again grab the values from Template directly with jq
+# jq should be mandatory installed package (is it?)
+if using_https ; then
+    ROBOT_VARIABLES="${ROBOT_VARIABLES} \
+        -v SDC_FE_PROTOCOL:https \
+        -v SDC_FE_PORT:9443 \
+        -v SDC_BE_PROTOCOL:https \
+        -v SDC_BE_PORT:8443 \
+        -v SDC_ONBOARDING_BE_PROTOCOL:https \
+        -v SDC_ONBOARDING_BE_PORT:8443 \
+        "
+else
+    ROBOT_VARIABLES="${ROBOT_VARIABLES} \
+        -v SDC_FE_PROTOCOL:http \
+        -v SDC_FE_PORT:8181 \
+        -v SDC_BE_PROTOCOL:http \
+        -v SDC_BE_PORT:8080 \
+        -v SDC_ONBOARDING_BE_PROTOCOL:http \
+        -v SDC_ONBOARDING_BE_PORT:8081 \
+        "
+fi
 
+# This file is sourced in another script which is out of our control...
+set +e
+set +o pipefail