diff options
author | Liam Fallon <liam.fallon@est.tech> | 2023-02-08 09:05:32 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2023-02-08 09:05:32 +0000 |
commit | 8a98552c7f5a0b58e3a524db24e8bfb47a4494b1 (patch) | |
tree | 7897d01d568665b8ad3625de54f0862aa09fce19 | |
parent | c6eb02ae0f1b9b69a248621e68dbc7a481ce95b7 (diff) | |
parent | 62ccbbb1c7da36bb61174b952c9b5a3f8219e7e7 (diff) |
Merge "Fix robot failures in kubernetes CSITs"
19 files changed, 214 insertions, 96 deletions
diff --git a/csit/run-k8s-csit.sh b/csit/run-k8s-csit.sh index 755a89ed..33cf2f8a 100755 --- a/csit/run-k8s-csit.sh +++ b/csit/run-k8s-csit.sh @@ -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" 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 |