aboutsummaryrefslogtreecommitdiffstats
path: root/helm
diff options
context:
space:
mode:
authorrameshiyer27 <ramesh.murugan.iyer@est.tech>2023-02-01 15:06:45 +0000
committerrameshiyer27 <ramesh.murugan.iyer@est.tech>2023-02-07 09:49:38 +0000
commit62ccbbb1c7da36bb61174b952c9b5a3f8219e7e7 (patch)
treed79f2834b53cc61d8feff2aca811519d25421b16 /helm
parent0700486a08b2bc08589f7e6b0be8338d6bbb4efa (diff)
Fix robot failures in kubernetes CSITs
Api, Pap, Clamp configurations are fixed Update Readiness containers as a list entity to wait for more than one component. Issue-ID: POLICY-4546 Signed-off-by: zrrmmua <ramesh.murugan.iyer@est.tech> Change-Id: I8598ddc01905b072edd9eb3030a83d3d806a14eb
Diffstat (limited to 'helm')
-rwxr-xr-xhelm/policy/components/policy-apex-pdp/values.yaml2
-rw-r--r--helm/policy/components/policy-api/resources/config/apiParameters.yaml2
-rwxr-xr-xhelm/policy/components/policy-api/templates/deployment.yaml19
-rw-r--r--helm/policy/components/policy-api/templates/service.yaml16
-rw-r--r--helm/policy/components/policy-api/values.yaml11
-rw-r--r--helm/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml2
-rw-r--r--helm/policy/components/policy-pap/resources/config/groups.json28
-rw-r--r--helm/policy/components/policy-pap/resources/config/papParameters.yaml45
-rwxr-xr-xhelm/policy/components/policy-pap/templates/service.yaml10
-rwxr-xr-xhelm/policy/components/policy-pap/values.yaml2
-rw-r--r--helm/robot/templates/test-job.yaml9
-rw-r--r--helm/robot/values.yaml2
-rwxr-xr-xhelm/run-test.sh5
-rw-r--r--helm/tests/apex-pdp-test.robot26
-rw-r--r--helm/tests/common-library.robot4
-rwxr-xr-xhelm/tests/data/make_topic.sh33
-rwxr-xr-xhelm/tests/data/wait_topic.sh61
-rw-r--r--helm/tests/pap-test.robot2
18 files changed, 193 insertions, 86 deletions
diff --git a/helm/policy/components/policy-apex-pdp/values.yaml b/helm/policy/components/policy-apex-pdp/values.yaml
index 54e87788..62c1e477 100755
--- a/helm/policy/components/policy-apex-pdp/values.yaml
+++ b/helm/policy/components/policy-apex-pdp/values.yaml
@@ -38,7 +38,7 @@ debugEnabled: false
# application configuration
restServer:
- user: healthcheck
+ user: policyadmin
password: zb!XztG34
diff --git a/helm/policy/components/policy-api/resources/config/apiParameters.yaml b/helm/policy/components/policy-api/resources/config/apiParameters.yaml
index 4465a57e..48e1df64 100644
--- a/helm/policy/components/policy-api/resources/config/apiParameters.yaml
+++ b/helm/policy/components/policy-api/resources/config/apiParameters.yaml
@@ -17,7 +17,7 @@
# ============LICENSE_END=========================================================
server:
- port: {{ .Values.service.internalPort }}
+ port: {{ .Values.service.port }}
ssl:
enabled: false
servlet:
diff --git a/helm/policy/components/policy-api/templates/deployment.yaml b/helm/policy/components/policy-api/templates/deployment.yaml
index f93854ce..ae8b85fb 100755
--- a/helm/policy/components/policy-api/templates/deployment.yaml
+++ b/helm/policy/components/policy-api/templates/deployment.yaml
@@ -23,19 +23,19 @@ kind: Deployment
metadata:
name: {{ .Chart.Name }}
namespace: default
- labels:
- app: {{ .Chart.Name }}
- chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
- heritage: Helm
spec:
selector:
matchLabels:
- app: {{ .Chart.Name }}
+ app.kubernetes.io/name: {{ .Chart.Name }}
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
- app: {{ .Chart.Name }}
+ app.kubernetes.io/name: {{ .Chart.Name }}
+ helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+ app.kubernetes.io/instance: RELEASE
+ app.kubernetes.io/managed-by: Helm
+ name: {{ .Chart.Name }}
spec:
initContainers:
- command:
@@ -93,20 +93,21 @@ spec:
command: ["/opt/app/policy/api/bin/policy-api.sh"]
args: ["/opt/app/policy/api/etc/mounted/apiParameters.yaml"]
ports:
- - containerPort: {{ .Values.service.internalPort }}
+ - containerPort: {{ .Values.service.port }}
+ name: http
# disable liveness probe when breakpoints set in debugger
# so K8s doesn't restart unresponsive container
{{- if eq .Values.liveness.enabled true }}
livenessProbe:
tcpSocket:
- port: {{ .Values.service.internalPort }}
+ port: {{ .Values.service.port }}
initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
periodSeconds: {{ .Values.liveness.periodSeconds }}
{{ end -}}
readinessProbe:
httpGet:
path: {{ .Values.readiness.api }}
- port: {{ .Values.service.internalPort }}
+ port: {{ .Values.service.port }}
httpHeaders:
- name: Authorization
value: Basic {{ printf "%s:%s" .Values.restServer.user .Values.restServer.password | b64enc }}
diff --git a/helm/policy/components/policy-api/templates/service.yaml b/helm/policy/components/policy-api/templates/service.yaml
index 7a2e6473..07a3bdc1 100644
--- a/helm/policy/components/policy-api/templates/service.yaml
+++ b/helm/policy/components/policy-api/templates/service.yaml
@@ -24,16 +24,16 @@ metadata:
name: {{ .Chart.Name }}
namespace: default
labels:
- app: {{ .Chart.Name }}
- chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
- release: release
- heritage: Helm
+ app.kubernetes.io/name: {{ .Chart.Name }}
+ helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+ app.kubernetes.io/managed-by: Helm
spec:
type: {{ .Values.service.type }}
ports:
- - port: {{ .Values.service.externalPort }}
- targetPort: {{ .Values.service.internalPort }}
+ - port: {{ .Values.service.port }}
+ targetPort: {{ .Values.service.port }}
+ nodePort: {{ .Values.service.nodePort }}
+ protocol: TCP
name: {{ .Values.service.portName }}
selector:
- app: {{ .Chart.Name }}
- release: release \ No newline at end of file
+ app.kubernetes.io/name: {{ .Chart.Name }} \ No newline at end of file
diff --git a/helm/policy/components/policy-api/values.yaml b/helm/policy/components/policy-api/values.yaml
index 06665dfb..c1e654c0 100644
--- a/helm/policy/components/policy-api/values.yaml
+++ b/helm/policy/components/policy-api/values.yaml
@@ -20,7 +20,6 @@
# Global configuration defaults.
#################################################################
global:
- nodePortPrefix: 304
persistence: {}
aafEnabled: false
@@ -61,6 +60,7 @@ liveness:
# necessary to disable liveness probe when setting breakpoints
# in debugger so K8s doesn't restart unresponsive container
enabled: true
+ port: http
readiness:
initialDelaySeconds: 10
@@ -69,14 +69,13 @@ readiness:
successThreshold: 1
failureThreshold: 3
timeout: 60
+ port: http
service:
- type: ClusterIP
- name: policy-api
+ type: NodePort
portName: http
- externalPort: 6969
- internalPort: 6969
- nodePort: 40
+ port: 6969
+ nodePort: 30441
ingress:
enabled: false
diff --git a/helm/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml b/helm/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml
index ba192cb5..14f5bb3d 100644
--- a/helm/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml
+++ b/helm/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml
@@ -105,7 +105,7 @@ spec:
command: ["/opt/app/policy/clamp/bin/acm-runtime.sh"]
args: ["/opt/app/policy/clamp/etc/mounted/acRuntimeParameters.yaml"]
ports:
- - containerPort: 6969
+ - containerPort: {{ .Values.service.ports.port }}
name: http-api
# disable liveness probe when breakpoints set in debugger
# so K8s doesn't restart unresponsive container
diff --git a/helm/policy/components/policy-pap/resources/config/groups.json b/helm/policy/components/policy-pap/resources/config/groups.json
new file mode 100644
index 00000000..bd5c2868
--- /dev/null
+++ b/helm/policy/components/policy-pap/resources/config/groups.json
@@ -0,0 +1,28 @@
+{
+ "groups": [
+ {
+ "name": "defaultGroup",
+ "version": "1.0.0",
+ "description": "The default group that registers all supported policy types and pdps.",
+ "pdpGroupState": "ACTIVE",
+ "pdpSubgroups": [
+ {
+ "pdpType": "apex",
+ "supportedPolicyTypes": [
+ {
+ "name": "onap.policies.controlloop.operational.common.Apex",
+ "version": "1.0.0"
+ },
+ {
+ "name": "onap.policies.native.Apex",
+ "version": "1.0.0"
+ }
+ ],
+ "currentInstanceCount": 0,
+ "desiredInstanceCount": 1,
+ "policies": []
+ }
+ ]
+ }
+ ]
+}
diff --git a/helm/policy/components/policy-pap/resources/config/papParameters.yaml b/helm/policy/components/policy-pap/resources/config/papParameters.yaml
index ab6d5cc4..411061bf 100644
--- a/helm/policy/components/policy-pap/resources/config/papParameters.yaml
+++ b/helm/policy/components/policy-pap/resources/config/papParameters.yaml
@@ -63,6 +63,10 @@ server:
pap:
name: PapGroup
aaf: false
+ topic:
+ pdp-pap.name: POLICY-PDP-PAP
+ notification.name: POLICY-NOTIFICATION
+ heartbeat.name: POLICY-HEARTBEAT
pdpParameters:
heartBeatMs: 120000
updateParameters:
@@ -71,43 +75,34 @@ pap:
stateChangeParameters:
maxRetryCount: 1
maxWaitMs: 30000
- savePdpStatisticsInDb: false
+ savePdpStatisticsInDb: true
topicParameterGroup:
topicSources:
- - topic: POLICY-PDP-PAP
+ - topic: ${pap.topic.pdp-pap.name}
servers:
- message-router
+ topicCommInfrastructure: dmaap
useHttps: false
fetchTimeout: 15000
- topicCommInfrastructure: dmaap
- - topic: POLICY-HEARTBEAT
- effectiveTopic: POLICY-PDP-PAP
+ - topic: ${pap.topic.heartbeat.name}
+ effectiveTopic: ${pap.topic.pdp-pap.name}
consumerGroup: policy-pap
servers:
- message-router
+ topicCommInfrastructure: dmaap
useHttps: false
fetchTimeout: 15000
- topicCommInfrastructure: dmaap
topicSinks:
- - topic: POLICY-PDP-PAP
+ - topic: ${pap.topic.pdp-pap.name}
servers:
- message-router
- useHttps: false
topicCommInfrastructure: dmaap
- - topic: POLICY-NOTIFICATION
+ useHttps: false
+ - topic: ${pap.topic.notification.name}
servers:
- message-router
- useHttps: false
topicCommInfrastructure: dmaap
-# If Strimzi Kafka to be used for communication, replace following configuration for topicSources and topicSinks
-# servers:
-# - {{ .Values.config.kafkaBootstrap }}:9092
-# topicCommInfrastructure: kafka
-# additionalProps:
-# security.protocol: SASL_PLAINTEXT
-# sasl.mechanism: SCRAM-SHA-512
-# sasl.jaas.config: ${JAASLOGIN}
-
+ useHttps: false
healthCheckRestClientParameters:
- clientName: api
hostname: policy-api
@@ -116,18 +111,6 @@ pap:
password: "${API_PASSWORD}"
useHttps: false
basePath: policy/api/v1/healthcheck
- - clientName: distribution
- hostname: policy-distribution
- port: 6969
- userName: "${DISTRIBUTION_USER}"
- password: "${DISTRIBUTION_PASSWORD}"
- useHttps: false
- basePath: healthcheck
- - clientName: dmaap
- hostname: message-router
- port: 3904
- useHttps: false
- basePath: topics
management:
endpoints:
diff --git a/helm/policy/components/policy-pap/templates/service.yaml b/helm/policy/components/policy-pap/templates/service.yaml
index 1bee30f1..92336394 100755
--- a/helm/policy/components/policy-pap/templates/service.yaml
+++ b/helm/policy/components/policy-pap/templates/service.yaml
@@ -24,10 +24,9 @@ metadata:
name: {{ .Chart.Name }}
namespace: default
labels:
- name: {{ .Chart.Name }}
- chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
- release: RELEASE
- heritage: Helm
+ app.kubernetes.io/name: {{ .Chart.Name }}
+ helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+ app.kubernetes.io/managed-by: Helm
spec:
ports:
@@ -38,6 +37,5 @@ spec:
ipFamilyPolicy: PreferDualStack
type: {{ .Values.service.type }}
selector:
- app: {{ .Chart.Name }}
- release: RELEASE
+ app.kubernetes.io/name: {{ .Chart.Name }}
sessionAffinity: None
diff --git a/helm/policy/components/policy-pap/values.yaml b/helm/policy/components/policy-pap/values.yaml
index ae0defb9..85f08c0b 100755
--- a/helm/policy/components/policy-pap/values.yaml
+++ b/helm/policy/components/policy-pap/values.yaml
@@ -28,7 +28,7 @@ global:
# Application configuration defaults.
#################################################################
# application image
-image: nexus3.onap.org:10001/onap/policy-pap:2.7.1
+image: nexus3.onap.org:10001/onap/policy-pap:2.8-SNAPSHOT-latest
pullPolicy: Always
# flag to enable debugging - application support required
diff --git a/helm/robot/templates/test-job.yaml b/helm/robot/templates/test-job.yaml
index 4fa27b35..5d8a610f 100644
--- a/helm/robot/templates/test-job.yaml
+++ b/helm/robot/templates/test-job.yaml
@@ -29,9 +29,12 @@ spec:
image: {{ .Values.imageCredentials.readinessImage.name }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- - /app/ready.py
- - --container-name
- - {{ .Values.readiness }}
+ - /app/ready.py
+ args:
+ {{- range $container := .Values.readiness }}
+ - --container-name
+ - {{ $container}}
+ {{- end }}
env:
- name: NAMESPACE
valueFrom:
diff --git a/helm/robot/values.yaml b/helm/robot/values.yaml
index 538e0a81..95df6fa0 100644
--- a/helm/robot/values.yaml
+++ b/helm/robot/values.yaml
@@ -66,5 +66,5 @@ tolerations: []
affinity: {}
robot: ""
-readiness: ""
+readiness: []
diff --git a/helm/run-test.sh b/helm/run-test.sh
index 7cd2c924..d516340b 100755
--- a/helm/run-test.sh
+++ b/helm/run-test.sh
@@ -27,12 +27,13 @@ export NODETEMPLATES=/opt/robotworkspace/models/models-examples/src/main/resourc
export POLICY_RUNTIME_ACM_IP=policy-clamp-runtime-acm
export POLICY_API_IP=policy-api
export POLICY_PAP_IP=policy-pap
-export POLICY_APEX_PDP_IP=policy-apex-pdp
+export APEX_IP=policy-apex-pdp
+export DMAAP_IP=message-router
export ROBOT_VARIABLES=
ROBOT_VARIABLES="-v DATA:$DATA -v NODETEMPLATES:$NODETEMPLATES -v POLICY_RUNTIME_ACM_IP:$POLICY_RUNTIME_ACM_IP -v POLICY_API_IP:$POLICY_API_IP
--v POLICY_PAP_IP:$POLICY_PAP_IP -v POLICY_APEX_PDP_IP:$POLICY_APEX_PDP_IP"
+-v POLICY_PAP_IP:$POLICY_PAP_IP -v APEX_IP:$APEX_IP -v DMAAP_IP:$DMAAP_IP"
echo "Run Robot test"
echo ROBOT_VARIABLES="${ROBOT_VARIABLES}"
diff --git a/helm/tests/apex-pdp-test.robot b/helm/tests/apex-pdp-test.robot
index c1946875..641b94e7 100644
--- a/helm/tests/apex-pdp-test.robot
+++ b/helm/tests/apex-pdp-test.robot
@@ -18,7 +18,7 @@ Healthcheck
ExecuteApexSampleDomainPolicy
Set Test Variable ${policyName} onap.policies.native.apex.Sampledomain
- ${postjson}= Get file ${CURDIR}/data/${policyName}.json
+ ${postjson}= Get file ./data/${policyName}.json
CreatePolicy /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies 200 ${postjson} ${policyName} 1.0.0
Wait Until Keyword Succeeds 3 min 5 sec VerifyPdpStatistics 0 0 0 0
DeployPolicy
@@ -29,33 +29,33 @@ ExecuteApexSampleDomainPolicy
ExecuteApexTestPnfPolicy
Set Test Variable ${policyName} onap.policies.apex.pnf.Test
- ${postjson}= Get file ${CURDIR}/data/${policyName}.json
+ ${postjson}= Get file ./data/${policyName}.json
CreatePolicy /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies 200 ${postjson} ${policyName} 1.0.0
DeployPolicy
Wait Until Keyword Succeeds 2 min 5 sec QueryPolicyStatus ${policyName} defaultGroup apex ${pdpName} onap.policies.native.Apex
- ${result}= Run Process ${SCRIPTS}/make_topic.sh APEX-CL-MGT
+ ${result}= Run Process ./data/make_topic.sh APEX-CL-MGT
Should Be Equal As Integers ${result.rc} 0
Wait Until Keyword Succeeds 2 min 5 sec TriggerAndVerifyTestPnfPolicy
ExecuteApexTestVnfPolicy
Set Test Variable ${policyName} onap.policies.apex.vnf.Test
- ${postjson}= Get file ${CURDIR}/data/${policyName}.json
+ ${postjson}= Get file ./data/${policyName}.json
CreatePolicy /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies 200 ${postjson} ${policyName} 1.0.0
DeployPolicy
Wait Until Keyword Succeeds 2 min 5 sec QueryPolicyStatus ${policyName} defaultGroup apex ${pdpName} onap.policies.native.Apex
- ${result}= Run Process ${SCRIPTS}/make_topic.sh APEX-CL-MGT
+ ${result}= Run Process ./data/make_topic.sh APEX-CL-MGT
Should Be Equal As Integers ${result.rc} 0
Wait Until Keyword Succeeds 2 min 5 sec TriggerAndVerifyTestVnfPolicy
ExecuteApexTestPnfPolicyWithMetadataSet
Set Test Variable ${policyName} onap.policies.apex.pnf.metadataSet.Test
- ${postjson}= Get file ${CURDIR}/data/${policyName}.json
+ ${postjson}= Get file ./data/${policyName}.json
CreatePolicy /policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies 200 ${postjson} ${policyName} 1.0.0
- ${postjson}= Get file ${CURDIR}/data/onap.pnf.metadataSet.Test.json
+ ${postjson}= Get file ./data/onap.pnf.metadataSet.Test.json
CreateNodeTemplate /policy/api/v1/nodetemplates 200 ${postjson} 1
DeployPolicy
Wait Until Keyword Succeeds 2 min 5 sec QueryPolicyStatus ${policyName} defaultGroup apex ${pdpName} onap.policies.native.Apex
- ${result}= Run Process ${SCRIPTS}/make_topic.sh APEX-CL-MGT2
+ ${result}= Run Process ./data/make_topic.sh APEX-CL-MGT2
Should Be Equal As Integers ${result.rc} 0
Wait Until Keyword Succeeds 2 min 5 sec TriggerAndVerifyTestPnfPolicy
@@ -83,7 +83,7 @@ Metrics
DeployPolicy
[Documentation] Deploy the policy in apex-pdp engine
- ${postjson}= Get file ${CURDIR}/data/policy_deploy.json
+ ${postjson}= Get file ./data/policy_deploy.json
${postjson}= evaluate json.loads('''${postjson}''') json
set to dictionary ${postjson['groups'][0]['deploymentSubgroups'][0]['policies'][0]} name=${policyName}
${postjson}= evaluate json.dumps(${postjson}) json
@@ -93,7 +93,7 @@ DeployPolicy
RunEventOnApexEngine
[Documentation] Send event to verify policy execution
Create Session apexSession http://${APEX_IP}:23324 max_retries=1
- ${data}= Get Binary File ${CURDIR}${/}data${/}event.json
+ ${data}= Get Binary File ./data/event.json
&{headers}= Create Dictionary Content-Type=application/json Accept=application/json
${resp}= PUT On Session apexSession /apex/FirstConsumer/EventIn data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 200
@@ -101,7 +101,7 @@ RunEventOnApexEngine
TriggerAndVerifyTestPnfPolicy
[Documentation] Send TestPnf policy trigger event to DMaaP and read notifications to verify policy execution
Create Session apexSession http://${DMAAP_IP}:3904 max_retries=1
- ${data}= Get Binary File ${CURDIR}/data/VesEventForPnfPolicy.json
+ ${data}= Get Binary File ./data/VesEventForPnfPolicy.json
&{headers}= Create Dictionary Content-Type=application/json Accept=application/json
${resp}= POST On Session apexSession /events/unauthenticated.DCAE_CL_OUTPUT data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 200
@@ -112,7 +112,7 @@ TriggerAndVerifyTestPnfPolicy
TriggerAndVerifyTestVnfPolicy
[Documentation] Send TestVnf policy trigger event to DMaaP and read notifications to verify policy execution
Create Session apexSession http://${DMAAP_IP}:3904 max_retries=1
- ${data}= Get Binary File ${CURDIR}/data/VesEventForVnfPolicy.json
+ ${data}= Get Binary File ./data/VesEventForVnfPolicy.json
&{headers}= Create Dictionary Content-Type=application/json Accept=application/json
${resp}= POST On Session apexSession /events/unauthenticated.DCAE_POLICY_EXAMPLE_OUTPUT data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 200
@@ -124,7 +124,7 @@ TriggerAndVerifyTestVnfPolicy
CheckLogMessage
[Documentation] Read log messages received and check for expected content.
[Arguments] ${status} ${expectedMsg}
- ${result}= Run Process ${SCRIPTS}/wait_topic.sh APEX-CL-MGT ${status}
+ ${result}= Run Process ./data/wait_topic.sh APEX-CL-MGT ${status}
Log Received log event on APEX-CL-MGT topic ${result.stdout}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ${expectedMsg}
diff --git a/helm/tests/common-library.robot b/helm/tests/common-library.robot
index 42d3ed12..95831b0d 100644
--- a/helm/tests/common-library.robot
+++ b/helm/tests/common-library.robot
@@ -113,9 +113,9 @@ QueryPolicyStatus
Should Be Equal As Strings ${responseEntry['state']} SUCCESS
GetMetrics
- [Arguments] ${hostname} ${auth}
+ [Arguments] ${hostname} ${auth} ${context_path}
Log Creating session http://${hostname}:6969
${session}= Create Session policy http://${hostname}:6969 auth=${auth}
- ${resp}= GET On Session policy /metrics expected_status=200
+ ${resp}= GET On Session policy ${context_path}metrics expected_status=200
Log Received response from policy ${resp.text}
[return] ${resp}
diff --git a/helm/tests/data/make_topic.sh b/helm/tests/data/make_topic.sh
new file mode 100755
index 00000000..05383308
--- /dev/null
+++ b/helm/tests/data/make_topic.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# ===========LICENSE_START====================================================
+# Copyright (C) 2023 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.
+# ============LICENSE_END=====================================================
+#
+
+#
+# Creates a topic, which happens as a side-effect of polling it.
+#
+
+if [ $# -ne 1 ]
+then
+ echo "arg(s): topic-name" >&2
+ exit 1
+fi
+
+topic="${1}"
+
+curl -s -k "http://${SIM_IP}:3904/events/${topic}/script/1?limit=1&timeout=0"
+echo
diff --git a/helm/tests/data/wait_topic.sh b/helm/tests/data/wait_topic.sh
new file mode 100755
index 00000000..792273ef
--- /dev/null
+++ b/helm/tests/data/wait_topic.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+#
+# ===========LICENSE_START====================================================
+# Copyright (C) 2023 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.
+# ============LICENSE_END=====================================================
+#
+
+#
+# Polls a topic for a message. Additional text items can be specified,
+# in which case, it discards messages that do not contain all of the
+# specified text items.
+#
+# Exits with a non-zero status if no matching message is received on the
+# topic before the timeout.
+#
+
+if [ $# -lt 1 ]
+then
+ echo "arg(s): topic-name [text-to-match1 [text-to-match2 ...]]" >&2
+ exit 1
+fi
+
+topic="${1}"
+shift
+
+matched=no
+
+while [ ${matched} = "no" ]
+do
+ msg=`curl -s -k "http://${SIM_IP}:3904/events/${topic}/script/1?limit=1"`
+ if [ $? -ne 0 -o "${msg}" = "[]" ]
+ then
+ echo not found >&2
+ exit 2
+ fi
+
+ matched=yes
+ for text in "$@"
+ do
+ echo "${msg}" | grep -q "${text}"
+ if [ $? -ne 0 ]
+ then
+ matched=no
+ break
+ fi
+ done
+done
+
+echo "${msg}"
diff --git a/helm/tests/pap-test.robot b/helm/tests/pap-test.robot
index 6c845384..c8c03014 100644
--- a/helm/tests/pap-test.robot
+++ b/helm/tests/pap-test.robot
@@ -41,7 +41,7 @@ Consolidated Healthcheck
Metrics
[Documentation] Verify policy pap is exporting prometheus metrics
${auth}= PolicyAdminAuth
- ${resp}= GetMetrics ${POLICY_PAP_IP} ${auth}
+ ${resp}= GetMetrics ${POLICY_PAP_IP} ${auth} /policy/pap/v1/
Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/pap/v1/healthcheck",} 1.0
Should Contain ${resp.text} http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/policy/pap/v1/components/healthcheck",} 1.0
Should Contain ${resp.text} spring_data_repository_invocations_seconds_count{exception="None",method="save",repository="PdpGroupRepository",state="SUCCESS",} 1.0