Fix robot failures in kubernetes CSITs 70/133170/2
authorrameshiyer27 <ramesh.murugan.iyer@est.tech>
Wed, 1 Feb 2023 15:06:45 +0000 (15:06 +0000)
committerrameshiyer27 <ramesh.murugan.iyer@est.tech>
Tue, 7 Feb 2023 09:49:38 +0000 (09:49 +0000)
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

19 files changed:
csit/run-k8s-csit.sh
helm/policy/components/policy-apex-pdp/values.yaml
helm/policy/components/policy-api/resources/config/apiParameters.yaml
helm/policy/components/policy-api/templates/deployment.yaml
helm/policy/components/policy-api/templates/service.yaml
helm/policy/components/policy-api/values.yaml
helm/policy/components/policy-clamp-runtime-acm/templates/deployment.yaml
helm/policy/components/policy-pap/resources/config/groups.json [new file with mode: 0644]
helm/policy/components/policy-pap/resources/config/papParameters.yaml
helm/policy/components/policy-pap/templates/service.yaml
helm/policy/components/policy-pap/values.yaml
helm/robot/templates/test-job.yaml
helm/robot/values.yaml
helm/run-test.sh
helm/tests/apex-pdp-test.robot
helm/tests/common-library.robot
helm/tests/data/make_topic.sh [new file with mode: 0755]
helm/tests/data/wait_topic.sh [new file with mode: 0755]
helm/tests/pap-test.robot

index 755a89e..33cf2f8 100755 (executable)
@@ -36,7 +36,7 @@ POLICY_APEX_CONTAINER="policy-apex-pdp"
 
 export PROJECT=""
 export ROBOT_FILE=""
-export READINESS_CONTAINER=""
+export READINESS_CONTAINERS=()
 
 function spin_microk8s_cluster () {
     echo "Verify if Microk8s cluster is running.."
@@ -93,7 +93,7 @@ function build_robot_image () {
         rm -rf tests/models/
         echo "---------------------------------------------"
         echo "Installing Robot framework pod for running CSIT"
-        helm install csit-robot robot --set robot=$ROBOT_FILE --set readiness=$READINESS_CONTAINER;
+        microk8s helm install csit-robot robot --set robot=$ROBOT_FILE --set "readiness={${READINESS_CONTAINERS[*]}}";
         echo "Please check the logs of policy-csit-robot pod for the test execution results"
     fi
 }
@@ -105,6 +105,16 @@ function clone_models () {
     echo GERRIT_BRANCH="${GERRIT_BRANCH}"
     # download models examples
     git clone -b "${GERRIT_BRANCH}" --single-branch https://github.com/onap/policy-models.git tests/models
+
+    # create a couple of variations of the policy definitions
+    sed -e 's!Measurement_vGMUX!ADifferentValue!' \
+            tests/models/models-examples/src/main/resources/policies/vCPE.policy.monitoring.input.tosca.json \
+        >tests/models/models-examples/src/main/resources/policies/vCPE.policy.monitoring.input.tosca.v1_2.json
+
+    sed -e 's!"version": "1.0.0"!"version": "2.0.0"!' \
+           -e 's!"policy-version": 1!"policy-version": 2!' \
+           tests/models/models-examples/src/main/resources/policies/vCPE.policy.monitoring.input.tosca.json \
+        >tests/models/models-examples/src/main/resources/policies/vCPE.policy.monitoring.input.tosca.v2.json
 }
 
 
@@ -113,30 +123,30 @@ function get_robot_file () {
 
   clamp | policy-clamp)
     export ROBOT_FILE=$POLICY_CLAMP_ROBOT
-    export READINESS_CONTAINER=$POLICY_CLAMP_CONTAINER
+    export READINESS_CONTAINERS=($POLICY_CLAMP_CONTAINER)
     ;;
 
   api | policy-api)
     export ROBOT_FILE=$POLICY_API_ROBOT
-    export READINESS_CONTAINER=$POLICY_API_CONTAINER
+    export READINESS_CONTAINERS=($POLICY_API_CONTAINER)
     ;;
 
   pap | policy-pap)
     export ROBOT_FILE=$POLICY_PAP_ROBOT
-    export READINESS_CONTAINER=$POLICY_PAP_CONTAINER
+    export READINESS_CONTAINERS=($POLICY_PAP_CONTAINER,$POLICY_API_CONTAINER)
     ;;
 
   apex-pdp | policy-apex-pdp)
     export ROBOT_FILE=$POLICY_APEX_PDP_ROBOT
-    export READINESS_CONTAINER=$POLICY_APEX_CONTAINER
+    export READINESS_CONTAINERS=($POLICY_APEX_CONTAINER,$POLICY_API_CONTAINER,$POLICY_PAP_CONTAINER)
     ;;
 
   xacml-pdp | policy-xacml-pdp)
-    export ROBOT_FILE=$POLICY_XACML_PDP_ROBOT
+    export ROBOT_FILE=($POLICY_XACML_PDP_ROBOT)
     ;;
 
   drools-pdp | policy-drools-pdp)
-    export ROBOT_FILE=$POLICY_DROOLS_PDP_ROBOT
+    export ROBOT_FILE=($POLICY_DROOLS_PDP_ROBOT)
     ;;
 
   *)
@@ -151,7 +161,7 @@ if [ $1 == "install" ];  then
     spin_microk8s_cluster
     if [ "${?}" -eq 0 ];  then
         echo "Installing policy helm charts in the default namespace"
-        cd ../helm/;helm dependency build policy;microk8s helm install csit-policy policy;
+        cd ../helm/;microk8s helm dependency build policy;microk8s helm install csit-policy policy;
         echo "Policy chart installation completed"
              echo "-------------------------------------------"
     fi
@@ -160,7 +170,8 @@ if [ $1 == "install" ];  then
         export PROJECT=$2
         get_robot_file
         echo "CSIT will be invoked from $ROBOT_FILE"
-        echo "Readiness container: $READINESS_CONTAINER"
+        echo "Readiness containers: ${READINESS_CONTAINERS[*]}"
+        echo "-------------------------------------------"
         build_robot_image
     else
         echo "No project supplied for running CSIT"
index 54e8778..62c1e47 100755 (executable)
@@ -38,7 +38,7 @@ debugEnabled: false
 # application configuration
 
 restServer:
-  user: healthcheck
+  user: policyadmin
   password: zb!XztG34
 
 
index 4465a57..48e1df6 100644 (file)
@@ -17,7 +17,7 @@
 #  ============LICENSE_END=========================================================
 
 server:
-  port: {{ .Values.service.internalPort }}
+  port: {{ .Values.service.port }}
   ssl:
     enabled: false
   servlet:
index f93854c..ae8b85f 100755 (executable)
@@ -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 }}
index 7a2e647..07a3bdc 100644 (file)
@@ -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
index 06665df..c1e654c 100644 (file)
@@ -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
index ba192cb..14f5bb3 100644 (file)
@@ -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 (file)
index 0000000..bd5c286
--- /dev/null
@@ -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": []
+        }
+      ]
+    }
+  ]
+}
index ab6d5cc..411061b 100644 (file)
@@ -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:
index 1bee30f..9233639 100755 (executable)
@@ -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
index ae0defb..85f08c0 100755 (executable)
@@ -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
index 4fa27b3..5d8a610 100644 (file)
@@ -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:
index 538e0a8..95df6fa 100644 (file)
@@ -66,5 +66,5 @@ tolerations: []
 affinity: {}
 
 robot: ""
-readiness: ""
+readiness: []
 
index 7cd2c92..d516340 100755 (executable)
@@ -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}"
index c194687..641b94e 100644 (file)
@@ -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}
index 42d3ed1..95831b0 100644 (file)
@@ -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 (executable)
index 0000000..0538330
--- /dev/null
@@ -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 (executable)
index 0000000..792273e
--- /dev/null
@@ -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}"
index 6c84538..c8c0301 100644 (file)
@@ -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