From 74501197005fb7051b95f6614ef60605373fd521 Mon Sep 17 00:00:00 2001 From: waynedunican Date: Wed, 16 Mar 2022 08:10:54 +0000 Subject: CSITs for db-migrator - Added test to confirm databases are created - Added test for api healthcehck Issue-ID: POLICY-2715 Signed-off-by: Wayne Dunican Change-Id: I8ef9f67bf50d2fcbf7c7db2c78370f6b277e5993 --- csit/compose-postgres.yml | 69 +++++++++++++++++++++++++++ csit/config/db-pg/db-pg.conf | 17 +++++++ csit/config/db-pg/db-pg.sh | 22 +++++++++ csit/db-migrator/plans/setup.sh | 26 ++++++++++ csit/db-migrator/plans/teardown.sh | 22 +++++++++ csit/db-migrator/plans/testplan.txt | 3 ++ csit/db-migrator/tests/db-migrator-test.robot | 34 +++++++++++++ csit/db_migrator_policy_init.sh | 1 + csit/db_migrator_policy_init_pg.sh | 36 ++++++++++++++ csit/get-versions.sh | 3 ++ 10 files changed, 233 insertions(+) create mode 100644 csit/compose-postgres.yml create mode 100644 csit/config/db-pg/db-pg.conf create mode 100644 csit/config/db-pg/db-pg.sh create mode 100644 csit/db-migrator/plans/setup.sh create mode 100644 csit/db-migrator/plans/teardown.sh create mode 100644 csit/db-migrator/plans/testplan.txt create mode 100644 csit/db-migrator/tests/db-migrator-test.robot create mode 100755 csit/db_migrator_policy_init_pg.sh (limited to 'csit') diff --git a/csit/compose-postgres.yml b/csit/compose-postgres.yml new file mode 100644 index 00000000..6c5e00a7 --- /dev/null +++ b/csit/compose-postgres.yml @@ -0,0 +1,69 @@ +# +# ===========LICENSE_START==================================================== +# Copyright (C) 2022 Nordix Foundation. +# ============================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END===================================================== +# +version: '2' +services: + postgres: + image: nexus3.onap.org:10001/library/postgres:${POLICY_POSTGRES_VER} + container_name: postgres + hostname: postgres + command: ['--idle_in_transaction_session_timeout=28800'] + env_file: config/db-pg/db-pg.conf + volumes: + - ./config/db-pg:/docker-entrypoint-initdb.d:ro + expose: + - 5432 + policy-db-migrator-postgres: + image: nexus3.onap.org:10001/onap/policy-db-migrator:${POLICY_DOCKER_VERSION} + container_name: policy-db-migrator-postgres + hostname: policy-db-migrator-postgres + depends_on: + - postgres + expose: + - 6824 + env_file: config/db-pg/db-pg.conf + environment: + SQL_DB: policyadmin + SQL_HOST: postgres + PGPASSWORD: policy_user + volumes: + - ./db_migrator_policy_init_pg.sh:/opt/app/policy/bin/db_migrator_policy_init_pg.sh:ro + - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro + entrypoint: /opt/app/policy/bin/wait_for_port.sh + command: [ + '-c', + '/opt/app/policy/bin/db_migrator_policy_init_pg.sh', + 'postgres', '5432' + ] + api: + image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION} + container_name: policy-api + depends_on: + - policy-db-migrator-postgres + hostname: policy-api + expose: + - 6980 + volumes: + - ./config/ks.jks:/opt/app/policy/api/etc/ssl/policy-keystore:ro + - ./config/policy-truststore:/opt/app/policy/api/etc/ssl/policy-truststore:ro + - ./wait_for_port.sh:/opt/app/policy/api/bin/wait_for_port.sh:ro + entrypoint: ./wait_for_port.sh + command: [ + '-c', './policy-api.sh', + 'postgres', '5432', + 'policy-db-migrator-postgres', '6824' + ] \ No newline at end of file diff --git a/csit/config/db-pg/db-pg.conf b/csit/config/db-pg/db-pg.conf new file mode 100644 index 00000000..d4d58cec --- /dev/null +++ b/csit/config/db-pg/db-pg.conf @@ -0,0 +1,17 @@ +# Copyright 2022 Nordix Foundation. All rights reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +MYSQL_ROOT_PASSWORD=secret +MYSQL_USER=policy_user +MYSQL_PASSWORD=policy_user +PGPASSWORD=policy_user \ No newline at end of file diff --git a/csit/config/db-pg/db-pg.sh b/csit/config/db-pg/db-pg.sh new file mode 100644 index 00000000..14816f08 --- /dev/null +++ b/csit/config/db-pg/db-pg.sh @@ -0,0 +1,22 @@ +#!/bin/bash -xv +# Copyright 2022 Nordix Foundation. All rights reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +psql -U postgres -d postgres --command "CREATE USER ${MYSQL_USER} WITH PASSWORD '${MYSQL_PASSWORD}';" + +for db in migration pooling policyadmin policyclamp operationshistory clampacm +do + psql -U postgres -d postgres --command "CREATE DATABASE ${db};" + psql -U postgres -d postgres --command "GRANT ALL PRIVILEGES ON DATABASE ${db} TO ${MYSQL_USER} ;" +done \ No newline at end of file diff --git a/csit/db-migrator/plans/setup.sh b/csit/db-migrator/plans/setup.sh new file mode 100644 index 00000000..31d93111 --- /dev/null +++ b/csit/db-migrator/plans/setup.sh @@ -0,0 +1,26 @@ +echo "Uninstall docker-py and reinstall docker." +python3 -m pip uninstall -y docker-py +python3 -m pip uninstall -y docker +python3 -m pip install -U docker +python3 -m pip install -U robotframework-databaselibrary +python3 -m pip install psycopg2-binary + +sudo apt-get -y install libxml2-utils + +source "${SCRIPTS}"/get-versions.sh + +cd "${SCRIPTS}" +docker-compose -f "${SCRIPTS}"/compose-postgres.yml up -d + +sleep 15 +unset http_proxy https_proxy + +POSTGRES_IP=$(get-instance-ip.sh postgres) +POLICY_API_IP=$(get-instance-ip.sh policy-api) + +echo POSTGRES IP IS "${POSTGRES_IP}" +echo POLICY_API_IP IS "${POLICY_API_IP}" + +ROBOT_VARIABLES="" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POSTGRES_IP:${POSTGRES_IP}" +ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_API_IP:${POLICY_API_IP}" \ No newline at end of file diff --git a/csit/db-migrator/plans/teardown.sh b/csit/db-migrator/plans/teardown.sh new file mode 100644 index 00000000..30a0f48d --- /dev/null +++ b/csit/db-migrator/plans/teardown.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# ============LICENSE_START======================================================= +# Copyright (C) 2022 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +docker logs postgres + +docker-compose -f ${SCRIPTS}/compose-postgres.yml down -v \ No newline at end of file diff --git a/csit/db-migrator/plans/testplan.txt b/csit/db-migrator/plans/testplan.txt new file mode 100644 index 00000000..4d281179 --- /dev/null +++ b/csit/db-migrator/plans/testplan.txt @@ -0,0 +1,3 @@ +# Test suites are relative paths under [policy/docker.git]/csit/[project]/tests. +# Place the suites in run order. +db-migrator-test.robot diff --git a/csit/db-migrator/tests/db-migrator-test.robot b/csit/db-migrator/tests/db-migrator-test.robot new file mode 100644 index 00000000..44cb1553 --- /dev/null +++ b/csit/db-migrator/tests/db-migrator-test.robot @@ -0,0 +1,34 @@ +*** Settings *** +Suite Setup Connect To Database psycopg2 ${DB_NAME} ${DB_USERNAME} ${DB_PASSWORD} ${POSTGRES_IP} ${DB_PORT} +Suite Teardown Disconnect From Database +Library DatabaseLibrary +Library String +Library RequestsLibrary +Library OperatingSystem +Library json +Resource ${CURDIR}/../../common-library.robot + +*** Variables *** +${DB_NAME} = policyadmin +${DB_USERNAME} = policy_user +${DB_PASSWORD} = policy_user +${DB_PORT} = 5432 +${PGPASSWORD} = policy_user + +*** Keywords *** +GetReq + [Arguments] ${url} + ${auth}= PolicyAdminAuth + ${resp}= PerformGetRequest ${POLICY_API_IP} ${url} 200 null ${auth} + [return] ${resp} + +*** Test Cases *** +Test Connection + ${output} = Execute SQL String SELECT datname FROM pg_database WHERE datname='policyadmin'; + Log ${output} + Should Be Equal As Strings ${output} None + +Healthcheck + [Documentation] Verify policy api health check + ${resp}= GetReq /policy/api/v1/healthcheck + Should Be Equal As Strings ${resp.json()['code']} 200 \ No newline at end of file diff --git a/csit/db_migrator_policy_init.sh b/csit/db_migrator_policy_init.sh index d7a7b3f7..047d947e 100755 --- a/csit/db_migrator_policy_init.sh +++ b/csit/db_migrator_policy_init.sh @@ -20,6 +20,7 @@ export POLICY_HOME=/opt/app/policy export SQL_USER=${MYSQL_USER} export SQL_PASSWORD=${MYSQL_PASSWORD} +export SCRIPT_DIRECTORY=sql /opt/app/policy/bin/prepare_upgrade.sh ${SQL_DB} diff --git a/csit/db_migrator_policy_init_pg.sh b/csit/db_migrator_policy_init_pg.sh new file mode 100755 index 00000000..9b5f38e1 --- /dev/null +++ b/csit/db_migrator_policy_init_pg.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# ============LICENSE_START==================================================== +# Copyright (C) 2022 Nordix Foundation. +# ============================================================================= +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END====================================================== + +export POLICY_HOME=/opt/app/policy +export SQL_USER=${MYSQL_USER} +export SQL_PASSWORD=${MYSQL_PASSWORD} +export SCRIPT_DIRECTORY=postgres + +/opt/app/policy/bin/prepare_upgrade.sh ${SQL_DB} + +/opt/app/policy/bin/db-migrator-pg -s ${SQL_DB} -o report + +/opt/app/policy/bin/db-migrator-pg -s ${SQL_DB} -o upgrade +rc=$? + +/opt/app/policy/bin/db-migrator-pg -s ${SQL_DB} -o report + +nc -l -p 6824 + +exit $rc diff --git a/csit/get-versions.sh b/csit/get-versions.sh index d3f6bcda..6e50d088 100644 --- a/csit/get-versions.sh +++ b/csit/get-versions.sh @@ -23,6 +23,9 @@ source "${SCRIPTS}"/get-branch.sh export POLICY_MARIADB_VER=10.5.8 echo POLICY_MARIADB_VER=${POLICY_MARIADB_VER} +export POLICY_POSTGRES_VER=11.1 +echo POLICY_POSTGRES_VER=${POLICY_POSTGRES_VER} + function getVersion { REPO=$1 -- cgit 1.2.3-korg