diff options
Diffstat (limited to 'csit')
-rwxr-xr-x | csit/run-acm-regression.sh | 124 | ||||
-rwxr-xr-x | csit/run-k8s-csit.sh | 85 | ||||
-rwxr-xr-x | csit/run-project-csit.sh | 17 |
3 files changed, 167 insertions, 59 deletions
diff --git a/csit/run-acm-regression.sh b/csit/run-acm-regression.sh index 5f77d214..677c2630 100755 --- a/csit/run-acm-regression.sh +++ b/csit/run-acm-regression.sh @@ -16,23 +16,50 @@ # # Script to run the ACM regression test suite in cucumber. -# Deploys ACM-R and participants in two different release versions for testing backward compatibility. - -if [ $# -eq 0 ] -then - echo "No release versions provided. Testing ACM-R and participants with the default version" - echo "Usage: $0 <acm_release> <compatibility_test_release>" - ACM_RELEASE=$(awk -F= '$1 == "defaultbranch" { print $2 }' \ - "${WORKSPACE}"/.gitreview) - PPNT_RELEASE=$ACM_RELEASE -fi - -if [ $1 ]; then - ACM_RELEASE=$1 -fi - -if [ $2 ]; then - PPNT_RELEASE=$2 +# Deploys ACM-R and participants in two different release branch/versions for testing backward compatibility. + +function usage() { + echo "Usage: $0 --release <acmr-release_branch> <ppnt-release_branch> | --version <acmr-version> <ppnt-version>" + exit 1 +} + +# Legacy config files for releases up to 'newdelhi' +function release_config_path() { + if [ $1 == 'master' ] || [[ "$(echo "$1" | cut -c1 )" > 'n' ]]; then + echo "config/clamp" + else + echo "config/clamp/legacy" + fi +} + +# Legacy config files for versions before 8.0.0 +function version_config_path() { + if [[ "$(printf '%s\n' "$1" "8.0.0" | sort -V | head -n 1)" == "8.0.0" ]]; then + echo "config/clamp" + else + echo "config/clamp/legacy" + fi +} + +function validate_version() { + local version=$1 + if [[ ! $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Invalid version format: $version. Expected format: x.y.z where x, y, and z are numbers." + usage + fi +} + +function validate_release() { + local release=$1 + if [[ ! $release =~ ^[a-zA-Z._-]+$ ]]; then + echo "Invalid release format: $release. Expected a string release name" + usage + fi +} + +# Invalid input +if [ "$#" -ne 0 ] && [ "$#" -ne 3 ]; then + usage fi if [ -z "${WORKSPACE}" ]; then @@ -40,24 +67,68 @@ if [ -z "${WORKSPACE}" ]; then export WORKSPACE fi +if [ -z "$ROBOT_LOG_DIR" ]; then + export ROBOT_LOG_DIR=/tmp/ +fi export SCRIPTS="${WORKSPACE}/csit/resources/scripts" - COMPOSE_FOLDER="${WORKSPACE}"/compose REGRESSION_FOLDER="${WORKSPACE}"/policy-regression-tests/policy-clamp-regression/ export PROJECT='clamp' +DEFAULT_BRANCH=$(awk -F= '$1 == "defaultbranch" { print $2 }' \ + "${WORKSPACE}"/.gitreview) -# Sign in to nexus3 docker repo -docker login -u docker -p docker nexus3.onap.org:10001 +# Run from default branch +if [ $# -eq 0 ] +then + echo "Usage: $0 --release <acmr-release_branch> <ppnt-release_branch> | --version <acmr-version> <ppnt-version>" + echo "*** No release_branch/versions provided. Default branch will be used." + echo "Fetching image versions for all components..." + source ${COMPOSE_FOLDER}/get-versions-regression.sh $DEFAULT_BRANCH $DEFAULT_BRANCH > /dev/null 2>&1 + echo "Starting Regression with ACM-R and PPNT from the default release branch $DEFAULT_BRANCH ***" + export CLAMP_CONFIG_PATH=$(release_config_path "$DEFAULT_BRANCH") + export PPNT_CONFIG_PATH="$CLAMP_CONFIG_PATH" + echo "Using configuration file located at $CLAMP_CONFIG_PATH for ACM-R and $PPNT_CONFIG_PATH for PPNTS." + +# Run with specific release/version +elif [ "$#" -gt 0 ] +then + case $1 in + --release) + validate_release $2 + validate_release $3 + echo "Fetching image versions for all components..." + source ${COMPOSE_FOLDER}/get-versions-regression.sh $2 $3 > /dev/null 2>&1 + echo "*** Starting Regression with ACM-R from branch $2 and PPNT from branch $3 ***" + export CLAMP_CONFIG_PATH=$(release_config_path $2) + export PPNT_CONFIG_PATH=$(release_config_path $3) + echo "Using configuration file located at $CLAMP_CONFIG_PATH for ACM-R and $PPNT_CONFIG_PATH for PPNTS." + ;; + --version) + validate_version $2 + validate_version $3 + echo "Fetching image versions for all components..." + source ${COMPOSE_FOLDER}/get-versions-regression.sh $DEFAULT_BRANCH $DEFAULT_BRANCH > /dev/null 2>&1 + export POLICY_CLAMP_VERSION=$2 + export POLICY_CLAMP_PPNT_VERSION=$3 + echo "*** Starting Regression with ACM-R version $2 and PPNT version $3 ***" + export CLAMP_CONFIG_PATH=$(version_config_path "$2") + export PPNT_CONFIG_PATH=$(version_config_path "$3") + echo "Using configuration file located at $CLAMP_CONFIG_PATH for ACM-R and $PPNT_CONFIG_PATH for PPNTS." + ;; + *) + echo "Unknown parameter: $1" + usage + ;; + esac +fi +echo "*** Configure docker compose and trigger deployment***" cd ${COMPOSE_FOLDER} - -echo "Configuring docker compose..." - +docker login -u docker -p docker nexus3.onap.org:10001 > /dev/null 2>&1 source export-ports.sh > /dev/null 2>&1 -source get-versions-regression.sh $ACM_RELEASE $PPNT_RELEASE > /dev/null 2>&1 -docker-compose -f docker-compose.yml up -d "policy-clamp-runtime-acm" +docker compose -f docker-compose.yml up -d "policy-clamp-runtime-acm" # wait for the app to start up "${SCRIPTS}"/wait_for_rest.sh localhost "${ACM_PORT}" @@ -65,4 +136,5 @@ docker-compose -f docker-compose.yml up -d "policy-clamp-runtime-acm" cd ${REGRESSION_FOLDER} # Invoke the regression test cases -mvn clean test -Dtests.skip=false
\ No newline at end of file +mvn clean test -Dtests.skip=false + diff --git a/csit/run-k8s-csit.sh b/csit/run-k8s-csit.sh index 4e25356c..6502c348 100755 --- a/csit/run-k8s-csit.sh +++ b/csit/run-k8s-csit.sh @@ -69,7 +69,7 @@ function spin_microk8s_cluster() { if [ "$exitcode" -ne 0 ]; then echo "Microk8s cluster not available, Spinning up the cluster.." - sudo snap install microk8s --classic --channel=1.26/stable + sudo snap install microk8s --classic --channel=1.30/stable if [ "${?}" -ne 0 ]; then echo "Failed to install kubernetes cluster. Aborting.." @@ -77,8 +77,8 @@ function spin_microk8s_cluster() { fi echo "Microk8s cluster installed successfully" sudo usermod -a -G microk8s $USER - echo "Enabling DNS and helm3 plugins" - sudo microk8s.enable dns helm3 hostpath-storage + echo "Enabling DNS and Storage plugins" + sudo microk8s.enable dns hostpath-storage echo "Creating configuration file for Microk8s" sudo mkdir -p $HOME/.kube sudo chown -R $USER:$USER $HOME/.kube @@ -96,8 +96,8 @@ function spin_microk8s_cluster() { exitcode="${?}" if [ "$exitcode" -ne 0 ]; then - echo "Kubectl not available, Spinning up the cluster.." - sudo snap install kubectl --classic --channel=1.26/stable + echo "Kubectl not available, Installing.." + sudo snap install kubectl --classic --channel=1.30/stable if [ "${?}" -ne 0 ]; then echo "Failed to install Kubectl. Aborting.." @@ -110,6 +110,26 @@ function spin_microk8s_cluster() { echo "----------------------------------------" return 0 fi + + echo "Verify if helm is running.." + helm version + exitcode="${?}" + + if [ "$exitcode" -ne 0 ]; then + echo "Helm not available, Installing.." + sudo snap install helm --classic --channel=3.7 + + if [ "${?}" -ne 0 ]; then + echo "Failed to install Helm client. Aborting.." + return 1 + fi + echo "Helm installation completed" + echo "----------------------------------------" + else + echo "Helm is already running" + echo "----------------------------------------" + return 0 + fi } function install_kafka() { @@ -121,17 +141,17 @@ function install_kafka() { function uninstall_policy() { echo "Removing the policy helm deployment" - sudo microk8s helm uninstall csit-policy - sudo microk8s helm uninstall prometheus - sudo microk8s helm uninstall csit-robot + sudo helm uninstall csit-policy + sudo helm uninstall prometheus + sudo helm uninstall csit-robot sudo kubectl delete deploy $ZK_CONTAINER $KAFKA_CONTAINER rm -rf ${WORKSPACE}/helm/policy/Chart.lock if [ "$PROJECT" == "clamp" ] || [ "$PROJECT" == "policy-clamp" ]; then - sudo microk8s helm uninstall policy-chartmuseum - sudo microk8s helm repo remove chartmuseum-git policy-chartmuseum + sudo helm uninstall policy-chartmuseum + sudo helm repo remove chartmuseum-git policy-chartmuseum fi sudo rm -rf /dockerdata-nfs/mariadb-galera/ - sudo microk8s kubectl delete pvc --all + sudo kubectl delete pvc --all echo "Policy deployment deleted" echo "Clean up docker" docker image prune -f @@ -140,6 +160,8 @@ function uninstall_policy() { function teardown_cluster() { echo "Removing k8s cluster and k8s configuration file" sudo snap remove microk8s;rm -rf $HOME/.kube/config + sudo snap remove helm; + sudo snap remove kubectl; echo "MicroK8s Cluster removed" } @@ -173,14 +195,14 @@ function start_csit() { while [[ ${POD_READY_STATUS} != "1/1" ]]; do echo "Waiting for chartmuseum pod to come up..." sleep 5 - POD_READY_STATUS=$(sudo microk8s kubectl get pods | grep -e "policy-chartmuseum" | awk '{print $2}') + POD_READY_STATUS=$(sudo kubectl get pods | grep -e "policy-chartmuseum" | awk '{print $2}') done push_acelement_chart fi echo "Installing Robot framework pod for running CSIT" cd ${WORKSPACE}/helm mkdir -p ${ROBOT_LOG_DIR} - sudo microk8s helm install csit-robot robot --set robot="$ROBOT_FILE" --set "readiness={${READINESS_CONTAINERS[*]}}" --set robotLogDir=$ROBOT_LOG_DIR + sudo helm install csit-robot robot --set robot="$ROBOT_FILE" --set "readiness={${READINESS_CONTAINERS[*]}}" --set robotLogDir=$ROBOT_LOG_DIR print_robot_log fi } @@ -190,17 +212,17 @@ function print_robot_log() { while [[ ${count_pods} -eq 0 ]]; do echo "Waiting for pods to come up..." sleep 5 - count_pods=$(sudo microk8s kubectl get pods --output name | wc -l) + count_pods=$(sudo kubectl get pods --output name | wc -l) done - robotpod=$(sudo microk8s kubectl get po | grep policy-csit) + robotpod=$(sudo kubectl get po | grep policy-csit) podName=$(echo "$robotpod" | awk '{print $1}') echo "The robot tests will begin once the policy components {${READINESS_CONTAINERS[*]}} are up and running..." - sudo microk8s kubectl wait --for=jsonpath='{.status.phase}'=Running --timeout=18m pod/"$podName" + sudo kubectl wait --for=jsonpath='{.status.phase}'=Running --timeout=18m pod/"$podName" echo "Policy deployment status:" - sudo microk8s kubectl get po - sudo microk8s kubectl get all -A + sudo kubectl get po + sudo kubectl get all -A echo "Robot Test logs:" - sudo microk8s kubectl logs -f "$podName" + sudo kubectl logs -f "$podName" } function clone_models() { @@ -296,29 +318,30 @@ function set_project_config() { } function install_chartmuseum () { + echo "---------------------------------------------" echo "Installing Chartmuseum helm repository..." - sudo microk8s helm repo add chartmuseum-git https://chartmuseum.github.io/charts - sudo microk8s helm repo update - sudo microk8s helm install policy-chartmuseum chartmuseum-git/chartmuseum --set env.open.DISABLE_API=false --set service.type=NodePort --set service.nodePort=30208 - sudo microk8s helm plugin install https://github.com/chartmuseum/helm-push + sudo helm repo add chartmuseum-git https://chartmuseum.github.io/charts + sudo helm repo update + sudo helm install policy-chartmuseum chartmuseum-git/chartmuseum --set env.open.DISABLE_API=false --set service.type=NodePort --set service.nodePort=30208 + sudo helm plugin install https://github.com/chartmuseum/helm-push echo "---------------------------------------------" } function push_acelement_chart() { echo "Pushing acelement chart to the chartmuseum repo..." - sudo microk8s helm repo add policy-chartmuseum http://localhost:30208 + sudo helm repo add policy-chartmuseum http://localhost:30208 # download clamp repo git clone -b "${GERRIT_BRANCH}" --single-branch https://github.com/onap/policy-clamp.git "${WORKSPACE}"/csit/resources/tests/clamp ACELEMENT_CHART=${WORKSPACE}/csit/resources/tests/clamp/examples/src/main/resources/clamp/acm/acelement-helm/acelement - sudo microk8s helm cm-push $ACELEMENT_CHART policy-chartmuseum - sudo microk8s helm repo update + sudo helm cm-push $ACELEMENT_CHART policy-chartmuseum + sudo helm repo update rm -rf ${WORKSPACE}/csit/resources/tests/clamp/ echo "-------------------------------------------" } function get_pod_name() { - pods=$(microk8s kubectl get pods --no-headers -o custom-columns=':metadata.name' | grep $1) + pods=$(kubectl get pods --no-headers -o custom-columns=':metadata.name' | grep $1) read -rd '' -a pod_array <<< "$pods" echo "${pod_array[@]}" } @@ -405,10 +428,10 @@ if [ $OPERATION == "install" ]; then ${WORKSPACE}/compose/loaddockerimage.sh fi cd ${WORKSPACE}/helm || exit - sudo microk8s helm dependency build policy - sudo microk8s helm install csit-policy policy ${SET_VALUES} - sudo microk8s helm install prometheus prometheus - wait_for_pods_running default 480 ${READINESS_CONTAINERS[@]} + sudo helm dependency build policy + sudo helm install csit-policy policy ${SET_VALUES} + sudo helm install prometheus prometheus + wait_for_pods_running default 900 ${READINESS_CONTAINERS[@]} echo "Policy chart installation completed" echo "-------------------------------------------" fi diff --git a/csit/run-project-csit.sh b/csit/run-project-csit.sh index aa19b257..36bad1ff 100755 --- a/csit/run-project-csit.sh +++ b/csit/run-project-csit.sh @@ -80,7 +80,7 @@ function setup_apex() { function setup_apex_postgres() { export ROBOT_FILES="apex-pdp-test.robot" - source "${WORKSPACE}"/compose/start-postgres-tests.sh 1 + source "${WORKSPACE}"/compose/start-postgres-tests.sh apex-pdp 1 sleep 10 bash "${SCRIPTS}"/wait_for_rest.sh localhost ${PAP_PORT} bash "${SCRIPTS}"/wait_for_rest.sh localhost ${APEX_PORT} @@ -141,6 +141,13 @@ function setup_xacml_pdp() { bash "${SCRIPTS}"/wait_for_rest.sh localhost "${XACML_PORT}" } +function setup_xacml_pdp_postgres() { + export ROBOT_FILES="xacml-pdp-test.robot" + source "${WORKSPACE}"/compose/start-postgres-tests.sh xacml-pdp 1 + sleep 10 + bash "${SCRIPTS}"/wait_for_rest.sh localhost "${XACML_PORT}" +} + function setup_drools_pdp() { export ROBOT_FILES="drools-pdp-test.robot" source "${WORKSPACE}"/compose/start-compose.sh drools-pdp @@ -197,7 +204,7 @@ function set_project_config() { ;; apex-pdp-postgres | policy-apex-pdp-postgres) - setup_apex + setup_apex_postgres ;; apex-pdp-medium | policy-apex-pdp-medium) @@ -212,6 +219,10 @@ function set_project_config() { setup_xacml_pdp ;; + xacml-pdp-postgres | policy-xacml-pdp-postgres) + setup_xacml_pdp_postgres + ;; + drools-pdp | policy-drools-pdp) setup_drools_pdp ;; @@ -253,6 +264,8 @@ export PROJECT="${1}" export ROBOT_LOG_DIR=${WORKSPACE}/csit/archives/${PROJECT} export SCRIPTS="${WORKSPACE}/csit/resources/scripts" export ROBOT_FILES="" +# always 'docker' if running docker compose +export TEST_ENV="docker" cd "${WORKSPACE}" |