CSITs for db-migrator 53/128153/3
authorwaynedunican <wayne.dunican@est.tech>
Wed, 16 Mar 2022 08:10:54 +0000 (08:10 +0000)
committerWayne Dunican <wayne.dunican@est.tech>
Wed, 30 Mar 2022 09:36:37 +0000 (09:36 +0000)
- Added test to confirm databases are created
- Added test for api healthcehck

Issue-ID: POLICY-2715
Signed-off-by: Wayne Dunican <wayne.dunican@est.tech>
Change-Id: I8ef9f67bf50d2fcbf7c7db2c78370f6b277e5993

csit/compose-postgres.yml [new file with mode: 0644]
csit/config/db-pg/db-pg.conf [new file with mode: 0644]
csit/config/db-pg/db-pg.sh [new file with mode: 0644]
csit/db-migrator/plans/setup.sh [new file with mode: 0644]
csit/db-migrator/plans/teardown.sh [new file with mode: 0644]
csit/db-migrator/plans/testplan.txt [new file with mode: 0644]
csit/db-migrator/tests/db-migrator-test.robot [new file with mode: 0644]
csit/db_migrator_policy_init.sh
csit/db_migrator_policy_init_pg.sh [new file with mode: 0755]
csit/get-versions.sh

diff --git a/csit/compose-postgres.yml b/csit/compose-postgres.yml
new file mode 100644 (file)
index 0000000..6c5e00a
--- /dev/null
@@ -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 (file)
index 0000000..d4d58ce
--- /dev/null
@@ -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 (file)
index 0000000..14816f0
--- /dev/null
@@ -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 (file)
index 0000000..31d9311
--- /dev/null
@@ -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 (file)
index 0000000..30a0f48
--- /dev/null
@@ -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 (file)
index 0000000..4d28117
--- /dev/null
@@ -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 (file)
index 0000000..44cb155
--- /dev/null
@@ -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
index d7a7b3f..047d947 100755 (executable)
@@ -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 (executable)
index 0000000..9b5f38e
--- /dev/null
@@ -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
index d3f6bcd..6e50d08 100644 (file)
@@ -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