Add postgres CSIT tests for Apex-PDP 15/134315/2
authorwaynedunican <wayne.dunican@est.tech>
Tue, 25 Apr 2023 08:17:16 +0000 (09:17 +0100)
committerwaynedunican <wayne.dunican@est.tech>
Thu, 27 Apr 2023 09:23:07 +0000 (10:23 +0100)
Issue-ID: POLICY-4645
Change-Id: Ia3aa4bd9f6b6852a35a60c380a1a573390838034
Signed-off-by: waynedunican <wayne.dunican@est.tech>
compose/config/api/apiParametersPostgres.yaml [new file with mode: 0644]
compose/config/pap/papParametersPostgres.yaml [new file with mode: 0644]
compose/docker-compose.postgres.yml [new file with mode: 0644]
compose/start-postgres-tests.sh [new file with mode: 0644]
csit/resources/scripts/setup-apex-pdp-postgres.sh [new file with mode: 0755]

diff --git a/compose/config/api/apiParametersPostgres.yaml b/compose/config/api/apiParametersPostgres.yaml
new file mode 100644 (file)
index 0000000..fea36e8
--- /dev/null
@@ -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 (file)
index 0000000..c46cc52
--- /dev/null
@@ -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 (file)
index 0000000..1824803
--- /dev/null
@@ -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 (file)
index 0000000..112bdce
--- /dev/null
@@ -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 (executable)
index 0000000..21eb6e6
--- /dev/null
@@ -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}"