From: waynedunican Date: Tue, 25 Apr 2023 08:17:16 +0000 (+0100) Subject: Add postgres CSIT tests for Apex-PDP X-Git-Tag: 3.0.1~27^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=2356dece990205aeb87820373e9dae60743a322c;p=policy%2Fdocker.git Add postgres CSIT tests for Apex-PDP Issue-ID: POLICY-4645 Change-Id: Ia3aa4bd9f6b6852a35a60c380a1a573390838034 Signed-off-by: waynedunican --- diff --git a/compose/config/api/apiParametersPostgres.yaml b/compose/config/api/apiParametersPostgres.yaml new file mode 100644 index 00000000..fea36e87 --- /dev/null +++ b/compose/config/api/apiParametersPostgres.yaml @@ -0,0 +1,86 @@ +server: + port: 6969 + ssl: + enabled: false + servlet: + context-path: /policy/api/v1 + +spring: + security.user: + name: policyadmin + password: zb!XztG34 + mvc.converters.preferred-json-mapper: gson + + datasource: + url: jdbc:postgresql://postgres:5432/policyadmin + driverClassName: org.postgresql.Driver + username: policy_user + password: policy_user + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect + hibernate: + ddl-auto: none + naming: + physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy + +policy-api: + name: ApiGroup + aaf: false + +database: + name: PolicyProviderParameterGroup + implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl + driver: org.postgresql.Driver + url: jdbc:postgresql://postgres:5432/policyadmin + user: policy_user + password: policy_user + persistenceUnit: PolicyDb + +policy-preload: + policyTypes: + - policytypes/onap.policies.monitoring.tcagen2.yaml + - policytypes/onap.policies.monitoring.tcagen2.v2.yaml + - policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml + - policytypes/onap.policies.monitoring.dcae-restconfcollector.yaml + - policytypes/onap.policies.monitoring.dcae-pm-subscription-handler.yaml + - policytypes/onap.policies.monitoring.dcae-pm-mapper.yaml + - policytypes/onap.policies.Optimization.yaml + - policytypes/onap.policies.optimization.Resource.yaml + - policytypes/onap.policies.optimization.Service.yaml + - policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml + - policytypes/onap.policies.optimization.resource.DistancePolicy.yaml + - policytypes/onap.policies.optimization.resource.HpaPolicy.yaml + - policytypes/onap.policies.optimization.resource.OptimizationPolicy.yaml + - policytypes/onap.policies.optimization.resource.PciPolicy.yaml + - policytypes/onap.policies.optimization.service.QueryPolicy.yaml + - policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml + - policytypes/onap.policies.optimization.resource.Vim_fit.yaml + - policytypes/onap.policies.optimization.resource.VnfPolicy.yaml + - policytypes/onap.policies.controlloop.guard.Common.yaml + - policytypes/onap.policies.controlloop.guard.common.Blacklist.yaml + - policytypes/onap.policies.controlloop.guard.common.FrequencyLimiter.yaml + - policytypes/onap.policies.controlloop.guard.common.MinMax.yaml + - policytypes/onap.policies.controlloop.guard.common.Filter.yaml + - policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml + - policytypes/onap.policies.Naming.yaml + - policytypes/onap.policies.Match.yaml + - policytypes/onap.policies.native.Drools.yaml + - policytypes/onap.policies.native.Xacml.yaml + - policytypes/onap.policies.native.Apex.yaml + - policytypes/onap.policies.controlloop.operational.Common.yaml + - policytypes/onap.policies.controlloop.operational.common.Apex.yaml + - policytypes/onap.policies.controlloop.operational.common.Drools.yaml + policies: + - policies/sdnc.policy.naming.input.tosca.yaml + +management: + endpoints: + web: + base-path: / + exposure: + include: health,metrics,prometheus + path-mapping.metrics: plain-metrics + path-mapping.prometheus: metrics diff --git a/compose/config/pap/papParametersPostgres.yaml b/compose/config/pap/papParametersPostgres.yaml new file mode 100644 index 00000000..c46cc528 --- /dev/null +++ b/compose/config/pap/papParametersPostgres.yaml @@ -0,0 +1,90 @@ +spring: + security: + user: + name: policyadmin + password: zb!XztG34 + http: + converters: + preferred-json-mapper: gson + datasource: + url: jdbc:postgresql://postgres:5432/policyadmin + driverClassName: org.postgresql.Driver + username: policy_user + password: policy_user + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect + hibernate: + ddl-auto: none + naming: + physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy + +server: + port: 6969 + servlet: + context-path: /policy/pap/v1 + ssl: + enabled: false + +pap: + name: PapGroup + aaf: false + topic: + pdp-pap.name: POLICY-PDP-PAP + notification.name: POLICY-NOTIFICATION + heartbeat.name: POLICY-HEARTBEAT + pdpParameters: + heartBeatMs: 120000 + updateParameters: + maxRetryCount: 1 + maxWaitMs: 30000 + stateChangeParameters: + maxRetryCount: 1 + maxWaitMs: 30000 + savePdpStatisticsInDb: true + topicParameterGroup: + topicSources: + - topic: ${pap.topic.pdp-pap.name} + servers: + - message-router + topicCommInfrastructure: dmaap + useHttps: false + fetchTimeout: 15000 + - topic: ${pap.topic.heartbeat.name} + effectiveTopic: ${pap.topic.pdp-pap.name} + consumerGroup: policy-pap + servers: + - message-router + topicCommInfrastructure: dmaap + useHttps: false + fetchTimeout: 15000 + topicSinks: + - topic: ${pap.topic.pdp-pap.name} + servers: + - message-router + topicCommInfrastructure: dmaap + useHttps: false + - topic: ${pap.topic.notification.name} + servers: + - message-router + topicCommInfrastructure: dmaap + useHttps: false + healthCheckRestClientParameters: + - clientName: api + hostname: policy-api + port: 6969 + userName: policyadmin + password: zb!XztG34 + useHttps: false + basePath: policy/api/v1/healthcheck + +management: + endpoints: + web: + base-path: / + exposure: + include: health, metrics, prometheus + path-mapping.metrics: plain-metrics + path-mapping.prometheus: metrics diff --git a/compose/docker-compose.postgres.yml b/compose/docker-compose.postgres.yml new file mode 100644 index 00000000..18248030 --- /dev/null +++ b/compose/docker-compose.postgres.yml @@ -0,0 +1,148 @@ +# +# ===========LICENSE_START==================================================== +# Copyright (C) 2023 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 + ports: + - 5432:5432 + policy-db-migrator: + image: ${CONTAINER_LOCATION}onap/policy-db-migrator:${POLICY_DOCKER_VERSION} + container_name: policy-db-migrator + hostname: policy-db-migrator + depends_on: + - postgres + expose: + - 6824 + env_file: config/db-pg/db-pg.conf + environment: + SQL_DB: policyadmin + SQL_HOST: postgres + PGPASSWORD: policy_user + volumes: + - ./config/db-migrator/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' + ] + simulator: + image: ${CONTAINER_LOCATION}onap/policy-models-simulator:${POLICY_MODELS_VERSION} + container_name: simulator + hostname: simulator + networks: + default: + aliases: + - message-router + - aai-sim + - grpc-sim + - sdnc-sim + - so-sim + - vfc-sim + volumes: + - ./config/sim-all:/opt/app/policy/simulators/etc/mounted:ro + - ./config/sim-all/logback.xml:/opt/app/policy/simulators/etc/mounted/logback.xml:ro + expose: + - 6666 + - 6668 + - 6669 + - 6670 + - 3904 + - 6680 + ports: + - ${DMAAP_PORT}:3904 + api: + image: ${CONTAINER_LOCATION}onap/policy-api:${POLICY_API_VERSION} + container_name: policy-api + depends_on: + - policy-db-migrator + hostname: policy-api + ports: + - ${API_PORT}:6969 + volumes: + - ./config/api/apiParametersPostgres.yaml:/opt/app/policy/api/etc/apiParameters.yaml:ro + - ./config/api/logback.xml:/opt/app/policy/api/etc/logback.xml: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', '6824' + ] + pap: + image: ${CONTAINER_LOCATION}onap/policy-pap:${POLICY_PAP_VERSION} + container_name: policy-pap + depends_on: + - postgres + - simulator + - api + hostname: policy-pap + ports: + - ${PAP_PORT}:6969 + volumes: + - ./config/pap/papParametersPostgres.yaml:/opt/app/policy/pap/etc/papParameters.yaml:ro + - ./config/${PROJECT}/groups.json:/opt/app/policy/pap/etc/mounted/groups.json:ro + - ./config/pap/logback.xml:/opt/app/policy/pap/etc/logback.xml:ro + - ./wait_for_port.sh:/opt/app/policy/pap/bin/wait_for_port.sh:ro + entrypoint: ./wait_for_port.sh + command: [ + '-c', './policy-pap.sh', + 'postgres', '5432', + 'message-router', '3904', + 'api', '6969' + ] + apex-pdp: + image: ${CONTAINER_LOCATION}onap/policy-apex-pdp:${POLICY_APEX_PDP_VERSION} + container_name: policy-apex-pdp + depends_on: + - postgres + - simulator + - pap + hostname: policy-apex-pdp + ports: + - ${APEX_PORT}:6969 + - ${APEX_EVENTS_PORT}:23324 + volumes: + - ./config/apex-pdp/OnapPfConfig.json:/opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json:ro + - ./config/apex-pdp/logback.xml:/opt/app/policy/apex-pdp/etc/logback.xml: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/apex-pdp/bin/apexOnapPf.sh -c /opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json', + 'postgres', '5432', + 'message-router', '3904', + 'pap', '6969' + ] + prometheus: + image: ${CONTAINER_LOCATION}prom/prometheus:latest + container_name: prometheus + hostname: prometheus + ports: + - ${PROMETHEUS_PORT}:9090 + volumes: + - ./metrics/prometheus.yml:/etc/prometheus/prometheus.yml diff --git a/compose/start-postgres-tests.sh b/compose/start-postgres-tests.sh new file mode 100644 index 00000000..112bdce6 --- /dev/null +++ b/compose/start-postgres-tests.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# ============LICENSE_START==================================================== +# Copyright (C) 2023 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====================================================== + +if [ -z "${WORKSPACE}" ]; then + WORKSPACE=$(git rev-parse --show-toplevel) + export WORKSPACE +fi +COMPOSE_FOLDER="${WORKSPACE}"/compose + +cd ${COMPOSE_FOLDER} + +echo "Configuring docker compose..." +source export-ports.sh > /dev/null 2>&1 +source get-versions.sh > /dev/null 2>&1 + +export REPLICAS=${1} +docker-compose -f docker-compose.postgres.yml up -d apex-pdp + +cd ${WORKSPACE} \ No newline at end of file diff --git a/csit/resources/scripts/setup-apex-pdp-postgres.sh b/csit/resources/scripts/setup-apex-pdp-postgres.sh new file mode 100755 index 00000000..21eb6e63 --- /dev/null +++ b/csit/resources/scripts/setup-apex-pdp-postgres.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# ============LICENSE_START======================================================= +# Copyright (C) 2023 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 PROJECT="apex-pdp" +source "${SCRIPTS}"/node-templates.sh + +source "${WORKSPACE}"/compose/start-postgres-tests.sh + +sleep 10 +unset http_proxy https_proxy + +# wait for the app to start up +bash "${SCRIPTS}"/wait_for_rest.sh localhost ${PAP_PORT} +bash "${SCRIPTS}"/wait_for_rest.sh localhost ${APEX_PORT} + +sleep 20 + +healthy=false + +while [ $healthy = false ] +do + msg=`curl -s -k --user 'policyadmin:zb!XztG34' http://localhost:${APEX_PORT}/policy/apex-pdp/v1/healthcheck` + echo "${msg}" | grep -q true + if [ "${?}" -eq 0 ] + then + healthy=true + break + fi + sleep 10s +done + +export DMAAP_IP="localhost:${DMAAP_PORT}" +export SUITES="apex-pdp-test.robot" + +ROBOT_VARIABLES="-v POLICY_PAP_IP:localhost:${PAP_PORT} -v POLICY_API_IP:localhost:${API_PORT} +-v PROMETHEUS_IP:localhost:${PROMETHEUS_PORT} -v DATA:${DATA} -v NODETEMPLATES:${NODETEMPLATES} +-v APEX_IP:localhost:${APEX_PORT} -v DMAAP_IP:${DMAAP_IP} +-v APEX_EVENTS_IP:localhost:${APEX_PORT}"