From e12a5ef7fa61256acdc2d44df637bdb3aee370f3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petr=20Ospal=C3=BD?= Date: Wed, 11 Sep 2019 17:03:03 +0200 Subject: [PATCH] Add support for HTTPS in SDC sanity/uiSanity tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit New variable: SDC_TEST_HTTPS Adjusted robot test too and fixed bad naming there - it was not the SDC BE container but SDC FE. For this change to work the upstream change in SDC has to be merged too - or use this only with a local repo and with some proper setup. + Added quotes around shell variables Issue-ID: SDC-2564 Signed-off-by: Petr Ospalý Change-Id: I3db9f2e1c22a539df3b6c356bd91f67f0328cbd7 Signed-off-by: Petr Ospalý --- plans/sdc/sanity/setup.sh | 3 ++ plans/sdc/uiSanity/setup.sh | 3 ++ scripts/sdc/setup_sdc_for_sanity.sh | 98 +++++++++++++++++++++++++++---------- tests/sdc/sanity/test1.robot | 4 +- tests/sdc/uiSanity/test1.robot | 4 +- 5 files changed, 83 insertions(+), 29 deletions(-) diff --git a/plans/sdc/sanity/setup.sh b/plans/sdc/sanity/setup.sh index 20a8eac3..8c0336c9 100644 --- a/plans/sdc/sanity/setup.sh +++ b/plans/sdc/sanity/setup.sh @@ -15,6 +15,9 @@ # limitations under the License. # +# It can enable HTTPS for SDC sanity tests +export SDC_TEST_HTTPS="${SDC_TEST_HTTPS:-false}" + # By default all images are from remote upstream registry, this option # provides the chance to test locally built images export SDC_LOCAL_IMAGES="${SDC_LOCAL_IMAGES:-false}" diff --git a/plans/sdc/uiSanity/setup.sh b/plans/sdc/uiSanity/setup.sh index b02cd7be..bfb9a153 100644 --- a/plans/sdc/uiSanity/setup.sh +++ b/plans/sdc/uiSanity/setup.sh @@ -15,6 +15,9 @@ # limitations under the License. # +# It can enable HTTPS for SDC uiSanity tests +export SDC_TEST_HTTPS="${SDC_TEST_HTTPS:-false}" + # By default all images are from remote upstream registry, this option # provides the chance to test locally built images export SDC_LOCAL_IMAGES="${SDC_LOCAL_IMAGES:-false}" diff --git a/scripts/sdc/setup_sdc_for_sanity.sh b/scripts/sdc/setup_sdc_for_sanity.sh index 562c26d1..2d644c3f 100644 --- a/scripts/sdc/setup_sdc_for_sanity.sh +++ b/scripts/sdc/setup_sdc_for_sanity.sh @@ -6,12 +6,13 @@ function usage { echo "setup sdc and run ui test suite: setup_sdc_for_sanity.sh tud" } -# returns 0: if SDC_LOCAL_IMAGES is set to true value +# arg: +# returns 0: if is set to true value # returns 1: otherwise -function using_local_images { - SDC_LOCAL_IMAGES=$(echo "${SDC_LOCAL_IMAGES}" | tr '[:upper:]' '[:lower:]') +function is_true { + _value=$(eval echo "\$${1}" | tr '[:upper:]' '[:lower:]') - case "$SDC_LOCAL_IMAGES" in + case "$_value" in 1|yes|true|Y) return 0 ;; @@ -20,6 +21,18 @@ function using_local_images { 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 +} + +# returns 0: if SDC_TEST_HTTPS is set to true value +# returns 1: otherwise +function using_https { + is_true SDC_TEST_HTTPS +} + # fail quick if error set -exo pipefail @@ -32,10 +45,10 @@ if [ "$1" != "tad" ] && [ "$1" != "tud" ]; then fi # Clone sdc enviroment template -mkdir -p ${WORKSPACE}/data/environments/ -mkdir -p ${WORKSPACE}/data/clone/ +mkdir -p "${WORKSPACE}/data/environments/" +mkdir -p "${WORKSPACE}/data/clone/" -cd ${WORKSPACE}/data/clone +cd "${WORKSPACE}/data/clone" if using_local_images && [ -n "$SDC_LOCAL_GITREPO" ] ; then if [ -d "$SDC_LOCAL_GITREPO" ] ; then rm -rf ./sdc @@ -48,29 +61,41 @@ else git clone --depth 1 http://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 +export TEST_SUITE="$1" ifconfig 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 +# 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 -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 - -cp ${WORKSPACE}/data/clone/sdc/sdc-os-chef/scripts/docker_run.sh ${WORKSPACE}/scripts/sdc/ +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 +source "${WORKSPACE}/data/clone/sdc/version.properties" +export RELEASE="${major}.${minor}-STAGING-latest" if using_local_images ; then if [ -n "$SDC_LOCAL_TAG" ] ; then @@ -81,17 +106,40 @@ if using_local_images ; then fi echo "[INFO]: We will use the locally built images (tag: ${RELEASE})" - ${WORKSPACE}/scripts/sdc/docker_run.sh \ + "${WORKSPACE}/scripts/sdc/docker_run.sh" \ --local \ - -r ${RELEASE} \ - -e ${ENV_NAME} \ - -p 10001 -${TEST_SUITE} + -r "${RELEASE}" \ + -e "${ENV_NAME}" \ + -p 10001 "-${TEST_SUITE}" 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} + -r "${RELEASE}" \ + -e "${ENV_NAME}" \ + -p 10001 "-${TEST_SUITE}" +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... diff --git a/tests/sdc/sanity/test1.robot b/tests/sdc/sanity/test1.robot index 3705d8f5..2b92be74 100644 --- a/tests/sdc/sanity/test1.robot +++ b/tests/sdc/sanity/test1.robot @@ -7,9 +7,9 @@ Library json *** Test Cases *** Get Requests health check ok [Tags] get - CreateSession sdc-be http://localhost:8181 + CreateSession sdc-fe ${SDC_FE_PROTOCOL}://localhost:${SDC_FE_PORT} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= Get Request sdc-be /sdc1/rest/healthCheck headers=&{headers} + ${resp}= Get Request sdc-fe /sdc1/rest/healthCheck headers=&{headers} Should Be Equal As Strings ${resp.status_code} 200 @{ITEMS}= Copy List ${resp.json()['componentsInfo']} : FOR ${ELEMENT} IN @{ITEMS} diff --git a/tests/sdc/uiSanity/test1.robot b/tests/sdc/uiSanity/test1.robot index 3705d8f5..2b92be74 100644 --- a/tests/sdc/uiSanity/test1.robot +++ b/tests/sdc/uiSanity/test1.robot @@ -7,9 +7,9 @@ Library json *** Test Cases *** Get Requests health check ok [Tags] get - CreateSession sdc-be http://localhost:8181 + CreateSession sdc-fe ${SDC_FE_PROTOCOL}://localhost:${SDC_FE_PORT} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= Get Request sdc-be /sdc1/rest/healthCheck headers=&{headers} + ${resp}= Get Request sdc-fe /sdc1/rest/healthCheck headers=&{headers} Should Be Equal As Strings ${resp.status_code} 200 @{ITEMS}= Copy List ${resp.json()['componentsInfo']} : FOR ${ELEMENT} IN @{ITEMS} -- 2.16.6