aboutsummaryrefslogtreecommitdiffstats
path: root/csit
diff options
context:
space:
mode:
Diffstat (limited to 'csit')
-rwxr-xr-xcsit/run-acm-regression.sh124
-rwxr-xr-xcsit/run-k8s-csit.sh85
-rwxr-xr-xcsit/run-project-csit.sh17
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}"