aboutsummaryrefslogtreecommitdiffstats
path: root/robot
diff options
context:
space:
mode:
authorKrzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>2021-10-01 12:22:06 +0200
committerMorgan Richomme <morgan.richomme@orange.com>2021-12-07 13:59:24 +0000
commit5e6967f1c6df40720e748977c7d9514c0463035c (patch)
tree138a1c67cef37d5bbb221aca9a44b0bd2acfd120 /robot
parenta93a8881de7253dca565678814920349b061bef7 (diff)
[ROBOT] ADD BULKPM test cases that use helm based component services
Signed-off-by: Krzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com> Issue-ID: INT-1895 Change-Id: I32389f4f0cd0d2e9fb7b73b99554a4722c4687d0
Diffstat (limited to 'robot')
-rw-r--r--robot/assets/helm/sftp/Chart.yaml23
-rw-r--r--robot/assets/helm/sftp/templates/_helpers.tpl58
-rw-r--r--robot/assets/helm/sftp/templates/deployment.yaml43
-rw-r--r--robot/assets/helm/sftp/templates/service.yaml17
-rw-r--r--robot/assets/helm/sftp/values.yaml50
-rw-r--r--robot/resources/chart_museum.robot83
-rw-r--r--robot/resources/usecases/5gbulkpm_helm_interface.robot237
-rw-r--r--robot/resources/usecases/5gbulkpm_interface.robot454
-rw-r--r--robot/testsuites/usecases/5gbulkpm_helm.robot (renamed from robot/testsuites/usecases/5gbulkpm.robot)39
9 files changed, 513 insertions, 491 deletions
diff --git a/robot/assets/helm/sftp/Chart.yaml b/robot/assets/helm/sftp/Chart.yaml
new file mode 100644
index 00000000..36ecdbe1
--- /dev/null
+++ b/robot/assets/helm/sftp/Chart.yaml
@@ -0,0 +1,23 @@
+apiVersion: v2
+name: sftp
+description: A Helm chart for Kubernetes
+
+# A chart can be either an 'application' or a 'library' chart.
+#
+# Application charts are a collection of templates that can be packaged into versioned archives
+# to be deployed.
+#
+# Library charts provide useful utilities or functions for the chart developer. They're included as
+# a dependency of application charts to inject those utilities and functions into the rendering
+# pipeline. Library charts do not define any templates and therefore cannot be deployed.
+type: application
+
+# This is the chart version. This version number should be incremented each time you make changes
+# to the chart and its templates, including the app version.
+# Versions are expected to follow Semantic Versioning (https://semver.org/)
+version: 0.0.1
+
+# This is the version number of the application being deployed. This version number should be
+# incremented each time you make changes to the application. Versions are not expected to
+# follow Semantic Versioning. They should reflect the version the application is using.
+appVersion: 0.0.1
diff --git a/robot/assets/helm/sftp/templates/_helpers.tpl b/robot/assets/helm/sftp/templates/_helpers.tpl
new file mode 100644
index 00000000..f949b4a3
--- /dev/null
+++ b/robot/assets/helm/sftp/templates/_helpers.tpl
@@ -0,0 +1,58 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "sftp.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "sftp.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "sftp.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "sftp.labels" -}}
+helm.sh/chart: {{ include "sftp.chart" . }}
+{{ include "sftp.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "sftp.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "sftp.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Common namespace
+*/}}
+{{- define "sftp.namespace" -}}
+ {{- default .Release.Namespace .Values.nsPrefix -}}
+{{- end -}} \ No newline at end of file
diff --git a/robot/assets/helm/sftp/templates/deployment.yaml b/robot/assets/helm/sftp/templates/deployment.yaml
new file mode 100644
index 00000000..53fc0b12
--- /dev/null
+++ b/robot/assets/helm/sftp/templates/deployment.yaml
@@ -0,0 +1,43 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "sftp.fullname" . }}
+ namespace: {{ include "sftp.namespace" . }}
+ labels:
+ {{ include "sftp.labels" . | nindent 4 }}
+spec:
+ replicas: {{ .Values.replicaCount }}
+ selector:
+ matchLabels:
+ {{ include "sftp.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ labels:
+ {{ include "sftp.selectorLabels" . | nindent 8 }}
+ spec:
+ containers:
+ - name: {{ .Values.fullnameOverride }}
+ image: {{ .Values.image.repository }}
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ ports:
+ - containerPort: {{ .Values.pod.port }}
+ protocol: TCP
+ env:
+ - name: SFTP_USERS
+ value: {{ .Values.env.users }}
+ livenessProbe:
+ tcpSocket:
+ port: {{ .Values.pod.port }}
+ initialDelaySeconds: 10
+ periodSeconds: 30
+ timeoutSeconds: 1
+ successThreshold: 1
+ failureThreshold: 3
+ readinessProbe:
+ tcpSocket:
+ port: {{ .Values.pod.port }}
+ initialDelaySeconds: 10
+ periodSeconds: 5
+ timeoutSeconds: 1
+ successThreshold: 1
+ failureThreshold: 10
diff --git a/robot/assets/helm/sftp/templates/service.yaml b/robot/assets/helm/sftp/templates/service.yaml
new file mode 100644
index 00000000..f1c4d790
--- /dev/null
+++ b/robot/assets/helm/sftp/templates/service.yaml
@@ -0,0 +1,17 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "sftp.fullname" . }}
+ namespace: {{ include "sftp.namespace" . }}
+ labels:
+ {{ include "sftp.labels" . | nindent 4 }}
+spec:
+ type: {{ .Values.service.type }}
+ ports:
+ - port: {{ .Values.pod.port }}
+ targetPort: {{ .Values.pod.port }}
+ protocol: TCP
+ name: {{ .Values.fullnameOverride }}
+ nodePort: {{ .Values.service.port }}
+ selector:
+ {{ include "sftp.selectorLabels" . | nindent 4 }}
diff --git a/robot/assets/helm/sftp/values.yaml b/robot/assets/helm/sftp/values.yaml
new file mode 100644
index 00000000..2ed5d94c
--- /dev/null
+++ b/robot/assets/helm/sftp/values.yaml
@@ -0,0 +1,50 @@
+global:
+
+replicaCount: 1
+
+nameOverride: "sftp"
+
+image:
+ repository: atmoz/sftp
+ pullPolicy: IfNotPresent
+ # Overrides the image tag whose default is the chart appVersion.
+
+imagePullSecrets: []
+
+pod:
+ port: 22
+
+ingress:
+ enabled: false
+
+podAnnotations: {}
+
+podSecurityContext: {}
+ # fsGroup: 2000
+
+securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+env:
+ users: "bulkpm:bulkpm:::upload"
+
+service:
+ type: NodePort
+ port: 32222
+
+autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 1
+ targetCPUUtilizationPercentage: 80
+ # targetMemoryUtilizationPercentage: 80
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
diff --git a/robot/resources/chart_museum.robot b/robot/resources/chart_museum.robot
new file mode 100644
index 00000000..e201a914
--- /dev/null
+++ b/robot/resources/chart_museum.robot
@@ -0,0 +1,83 @@
+*** Settings ***
+Documentation The main interface for interacting with CDS. It handles low level stuff like managing the http request library and CDS required fields
+Library RequestsLibrary
+Resource global_properties.robot
+Library SSHLibrary
+Library OperatingSystem
+Library String
+
+*** Variables ***
+${registry_ovveride} ${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}
+
+*** Keywords ***
+Add chart repository
+ [Documentation] Add chart repository to helm in robot/xtesting pod
+ [Arguments] ${chart_repo_name} ${chart_repo_fqdn} ${chart_repo_username} ${chart_repo_password}
+ ${helm_repo_add}= Set Variable helm repo add ${chart_repo_name} ${chart_repo_fqdn} --password ${chart_repo_password} --username ${chart_repo_username}
+ ${command_output} = Run And Return Rc And Output ${helm_repo_add}
+ Should Be Equal As Integers ${command_output[0]} 0
+ ${command_output} = Run And Return Rc And Output helm repo update
+ Should Be Equal As Integers ${command_output[0]} 0
+
+Remove chart repository
+ [Documentation] Remove chart repository from helm in robot/xtesting pod
+ [Arguments] ${chart_repo_name}
+ ${helm_repo_remove}= Set Variable helm repo remove ${chart_repo_name}
+ ${command_output} = Run And Return Rc And Output ${helm_repo_remove}
+ Should Be Equal As Integers ${command_output[0]} 0
+
+Package and add charts to repository
+ [Documentation] Package and add charts to k8s chart repository in robot/xtesting pod
+ [Arguments] ${chart_repo_name} ${chart_directory} ${destination_directory} ${chart_version}
+ ${helm_package}= Set Variable helm package --dependency-update --destination ${destination_directory} ${chart_directory} --version ${chart_version}
+ ${command_output} = Run And Return Rc And Output ${helm_package}
+ Should Be Equal As Integers ${command_output[0]} 0
+ ${helm_chart_name}= Fetch From Right ${chart_directory} /
+ ${helm_push}= Set Variable helm push ${destination_directory}/${helm_chart_name}-${chart_version}.tgz ${chart_repo_name}
+ ${command_output} = Run And Return Rc And Output ${helm_push}
+ Should Be Equal As Integers ${command_output[0]} 0
+
+
+Install helm charts
+ [Documentation] Install DCAE Servcie using helm charts
+ [Arguments] ${chart_repo_name} ${dcae_servcie_helm_charts} ${dcae_service_helm_name} ${wait_time}=2 min ${set_values_override}=${EMPTY}
+ ${helm_install}= Set Variable helm install ${dcae_service_helm_name} ${chart_repo_name}/${dcae_servcie_helm_charts} --set global.repository=${registry_ovveride} ${set_values_override}
+ ${helm_install_command_output} = Run And Return Rc And Output ${helm_install}
+ Should Be Equal As Integers ${helm_install_command_output[0]} 0
+ Wait Until Keyword Succeeds ${wait_time} 20 sec Checking Status Of Deployed Appliction Using Helm ${dcae_servcie_helm_charts} ${dcae_service_helm_name}
+
+Install helm charts from folder
+ [Documentation] Install DCAE Servcie using helm charts not in repo
+ [Arguments] ${chart_folder} ${dcae_service_helm_name} ${wait_time}=2 min ${set_values_override}=${EMPTY}
+ ${rest} ${dcae_servcie_helm_charts} = Split String From Right ${chart_folder} / 1
+ ${helm_install}= Set Variable helm install ${dcae_service_helm_name} ${chart_folder} --set global.repository=${registry_ovveride} ${set_values_override}
+ ${helm_install_command_output} = Run And Return Rc And Output ${helm_install}
+ Should Be Equal As Integers ${helm_install_command_output[0]} 0
+ Wait Until Keyword Succeeds ${wait_time} 20 sec Checking Status Of Deployed Appliction Using Helm ${dcae_servcie_helm_charts} ${dcae_service_helm_name}
+
+Checking Status Of Deployed Appliction Using Helm
+ [Arguments] ${dcae_servcie_helm_charts} ${dcae_service_helm_name}
+ ${pod_status}= Set Variable kubectl get pods -n onap | grep ${ONAP_HELM_RELEASE}-${dcae_servcie_helm_charts} | awk '{print $3}'
+ ${pod_status_command_output} = Run And Return Rc And Output ${pod_status}
+ Should Be Equal As Integers ${pod_status_command_output[0]} 0
+ Should Be Equal As Strings ${pod_status_command_output[1]} Running
+ ${pod_ready}= Set Variable kubectl get pods -n onap | grep ${ONAP_HELM_RELEASE}-${dcae_servcie_helm_charts} | awk '{print $2}'
+ ${pod_ready_command_output} = Run And Return Rc And Output ${pod_ready}
+ Should Be Equal As Integers ${pod_ready_command_output[0]} 0
+ ${pre} ${post} = Split String ${pod_ready_command_output[1]} / 1
+ Should Be Equal As Strings ${pre} ${post}
+
+Uninstall helm charts
+ [Documentation] Uninstall DCAE Servcie using helm charts
+ [Arguments] ${dcae_service_helm_name}
+ ${helm_uninstall}= Set Variable helm uninstall ${dcae_service_helm_name}
+ ${helm_uninstall_command_output}= Run And Return Rc And Output ${helm_uninstall}
+ Should Be Equal As Integers ${helm_uninstall_command_output[0]} 0
+
+
+
+
+
+
+
+
diff --git a/robot/resources/usecases/5gbulkpm_helm_interface.robot b/robot/resources/usecases/5gbulkpm_helm_interface.robot
new file mode 100644
index 00000000..6707767f
--- /dev/null
+++ b/robot/resources/usecases/5gbulkpm_helm_interface.robot
@@ -0,0 +1,237 @@
+*** Settings ***
+Documentation The main interface for interacting with 5G Bulkpm.
+Library RequestsLibrary
+Library OperatingSystem
+Library String
+Library JSONLibrary
+Resource ../mr_interface.robot
+Resource ../dr_interface.robot
+Resource ../consul_interface.robot
+Resource ../chart_museum.robot
+
+*** Variables ***
+${INVENTORY_SERVER} ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
+${DEPLOYMENT_SERVER} ${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL}://${GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME}:${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT}
+${DR_ENDPOINT} ${GLOBAL_DMAAP_DR_PROV_SERVER_PROTOCOL}://${GLOBAL_INJECTED_DMAAP_DR_PROV_IP_ADDR}:${GLOBAL_DMAAP_DR_PROV_SERVER_PORT}
+${DMAAP_BC_SERVER} ${GLOBAL_BC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_BC_IP_ADDR}:${GLOBAL_BC_HTTPS_SERVER_PORT}
+${VES_HEALTH_CHECK_PATH} ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
+${MR_PUBLISH_TEMPLATE} mr/mr_publish.jinja
+${INVENTORY_ENDPOINT} /dcae-service-types
+${XNF_SFTP_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-sftp.yaml
+${XNF_HTTPS_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-https.yaml
+${BLUEPRINT_TEMPLATE_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/blueprintTemplate.json
+${DEPLOYMENT_ENDPOINT} dcae-deployments
+${MR_TOPIC_CHECK_PATH} /topics
+${DR_SUB_CHECK_PATH} /internal/prov
+${MR_TOPIC_URL_PATH} /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/CG1/C1
+${MR_TOPIC_URL_PATH_FOR_POST} /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
+${DMAAP_BC_MR_CLIENT_PATH} /webapi/mr_clients
+${DMAAP_BC_MR_CLUSTER_PATH} /webapi/mr_clusters
+${PMMAPPER_HEALTH_CHECK_PATH} /healthcheck
+${JSON_DATA_FILE} ${EXECDIR}/robot/assets/usecases/5gbulkpm/Notification.json
+${VES_LISTENER_PATH} /eventListener/v7
+${PMMAPPER_SUB_ROLE_DATA} ${EXECDIR}/robot/assets/usecases/5gbulkpm/sub.json
+${PMMAPPER_MR_CLUSTER_DATA} ${EXECDIR}/robot/assets/usecases/5gbulkpm/mr_clusters.json
+${NEXUS3} ${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}
+${SET_KNOWN_HOSTS_FILE_PATH} kubectl set env deployment/$(kubectl get deployment -n onap | grep datafile | awk '{print $1}') KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_hosts -n onap
+${CHECK_ENV_SET} kubectl set env pod/$(kubectl get pod -n onap | grep datafile | awk '{print $1}') --list -n onap
+${COPY_RSA_KEY} kubectl cp /tmp/known_hosts $(kubectl get pod -n onap | grep datafile | awk '{print $1}'):/home/datafile/.ssh/known_hosts -n onap
+${CHECK_DFC_LOGS} kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --tail=4
+${EXPECTED_PRINT} StrictHostKeyChecking is enabled but environment variable KNOWN_HOSTS_FILE_PATH is not set or points to not existing file
+${MONGO_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-mongo.yaml
+${PNF_SIMULATOR_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-pnf-simulator.yaml
+${MONGO_VES_CLIENT_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-mongo-ves-client.yaml
+${VES_CLIENT_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-ves-client.yaml
+${VES_INPUTS} deployment/VesTlsCmpv2Inputs.jinja
+${pm_notification_event} dfc/notification.jinja
+${consul_change_event} dfc/consul.jinja
+${ves_client_single_event}= ves/pnf_simulator_single_event.jinja
+${SFTP_HELM_CHARTS} ${EXECDIR}/robot/assets/helm/sftp
+${HELM_RELEASE} kubectl --namespace onap get pods | sed 's/ .*//' | grep robot | sed 's/-.*//'
+
+*** Keywords ***
+
+xNF PM File Validate
+ [Documentation]
+ ... This keyword gathers all events from message router topic and validates if in recived data is present an expected string: "${expected_pm_str}" .
+ [Arguments] ${expected_pm_str}
+ ${timestamp}= Get Time epoch
+ ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
+ Should Contain ${resp.text} ${expected_pm_str}
+
+Topic Validate
+ [Arguments] ${value}
+ ${timestamp}= Get Current Date
+ ${dict}= Create Dictionary timestamp=${timestamp}
+ Templating.Create Environment mr ${GLOBAL_TEMPLATE_FOLDER}
+ ${data}= Templating.Apply Template mr ${MR_PUBLISH_TEMPLATE} ${dict}
+ ${resp}= Run MR Auth Post Request (User And Pass) ${MR_TOPIC_URL_PATH_FOR_POST} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD} ${data}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
+ Should Contain ${resp.text} ${value}
+
+Send File Ready Event to VES Collector and Deploy all DCAE Applications
+ [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
+ Disable Warnings
+ Setting Global Variables
+ Send File Ready Event to VES Collector ${pm_file} ${file_format_type} ${file_format_version}
+ Add chart repository chart-museum http://chart-museum:80 onapinitializer demo123456!
+ Log To Console Deploying Data File Collector
+ Deploying Data File Collector
+ Log To Console Deploying 3GPP PM Mapper
+ Deploying 3GPP PM Mapper
+ Log To Console Deploying SFTP Server As xNF
+ Deploying SFTP Server As xNF
+ Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
+ DR Bulk PM Feed Check
+ DR PM Mapper Subscriber Check
+
+Usecase Teardown
+ Disable Warnings
+ Uninstall helm charts ${ONAP_HELM_RELEASE}-dfc
+ Uninstall helm charts ${ONAP_HELM_RELEASE}-pmmapper
+ Uninstall helm charts ${ONAP_HELM_RELEASE}-sftp
+
+Setting Global Variables
+ ${test_variables} = Create Dictionary
+ Set To Dictionary ${test_variables} FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
+ ... FILE_FORMAT_VERSION=V10
+ ... PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
+ ... EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
+ Set Global Variable ${GLOBAL_TEST_VARIABLES} ${test_variables}
+ ${command_output} = Run And Return Rc And Output ${HELM_RELEASE}
+ Should Be Equal As Integers ${command_output[0]} 0
+ Set Global Variable ${ONAP_HELM_RELEASE} ${command_output[1]}
+
+Send File Ready Event to VES Collector
+ [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
+ Disable Warnings
+ ${headers}= Create Dictionary content-type=application/json
+ ${fileready}= OperatingSystem.Get File ${JSON_DATA_FILE}
+ ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
+ ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
+ ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${fileready} headers=${headers}
+ Should Be Equal As Strings ${resp.status_code} 202
+ ${VES_FILE_READY_NOTIFICATION} Set Variable {"event":{"commonEventHeader":{"version":"4.0.1","vesEventListenerVersion":"7.0.1","domain":"notification","eventName":"Noti_RnNode-Ericsson_FileReady","eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","lastEpochMicrosec":8745745764578,"priority":"Normal","reportingEntityName":"otenb5309","sequence":0,"sourceName":"oteNB5309","startEpochMicrosec":8745745764578,"timeZoneOffset":"UTC+05.30"},"notificationFields":{"changeIdentifier":"PM_MEAS_FILES","changeType":"FileReady","notificationFieldsVersion":"2.0","arrayOfNamedHashMap":[{"name":"${pm_file}","hashMap":{"location":"sftp://bulkpm:bulkpm@${ONAP_HELM_RELEASE}-sftp:22/upload/${pm_file}","compression":"gzip","fileFormatType":"${file_format_type}","fileFormatVersion":"${file_format_version}"}}]}}}
+ ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
+ Should Be Equal As Strings ${resp.status_code} 202
+
+Upload PM Files to xNF SFTP Server
+ [Arguments] ${pm_file_path}
+ Open Connection ${ONAP_HELM_RELEASE}-sftp
+ Login bulkpm bulkpm
+ ${epoch}= Get Current Date result_format=epoch
+ ${pm_file}= Set Variable A${epoch}.xml.gz
+ Put File ${pm_file_path} upload/${pm_file}
+ [Return] ${pm_file}
+
+Upload PM Files to xNF HTTPS Server
+ [Arguments] ${pm_file_path} ${https_server}
+ ${epoch}= Get Current Date result_format=epoch
+ Set Variable A${epoch}.xml.gz
+ Copy File ${pm_file_path} tmp/${pm_file}
+ ${fileData}= Get Binary File tmp/${pm_file}
+ ${file_part}= Create List ${pm_file} ${fileData} application/octet-stream
+ ${fileParts}= Create Dictionary
+ Set to Dictionary ${fileParts} uploaded_file=${file_part}
+ ${auth}= Create List demo demo123456!
+ ${session}= Create Session https http://${https_server}:80 auth=${auth}
+ ${resp}= Post Request https /upload.php files=${fileParts}
+ Should Be Equal As Strings ${resp.status_code} 200
+ [Return] ${pm_file}
+
+Check Given Print In DFC Log
+ [Arguments] ${check_dfc_logs}
+ ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
+ Should Contain ${dfc_logs} HostKey has been changed
+
+Run Given Command On DFC Container
+ [Arguments] ${user_command}
+ ${run_command} = Run And Return Rc And Output ${user_command}
+ ${command_output} = Set Variable ${run_command[1]}
+ ${regexp_matches} = Get Regexp Matches ${command_output} .*(\\s|\\[)+(.+-datafile-collector).* 2
+ ${dfc_container_name} = Set Variable ${regexp_matches[0]}
+ ${new_command} = Set Variable ${user_command} ${dfc_container_name}
+ ${command_output} = Run And Return Rc And Output ${new_command}
+ Should Be Equal As Integers ${command_output[0]} 0
+ ${log} = Set Variable ${command_output[1]}
+ [Return] ${log}
+
+Check Known Hosts In Env
+ [Arguments] ${CHECK_KNOWN_HOSTS}
+ ${check} = Run And Return Rc And Output ${CHECK_KNOWN_HOSTS}
+ Should Be Equal As Integers ${check[0]} 0
+ ${env} = Set Variable ${check[1]}
+ ${string_matches} = Get Lines Containing String ${env} KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host case_insensitive=True
+ ${output} = Should Not Be Empty ${string_matches}
+ [Return] ${output}
+
+Deploying Data File Collector
+ Install helm charts chart-museum dcae-datafile-collector ${ONAP_HELM_RELEASE}-dfc 3 min
+
+Deploying 3GPP PM Mapper
+ Install helm charts chart-museum dcae-pm-mapper ${ONAP_HELM_RELEASE}-pmmapper 3 min
+
+Deploying SFTP Server As xNF
+ ${override} = Set Variable --set fullnameOverride=${ONAP_HELM_RELEASE}-sftp
+ Install helm charts from folder ${SFTP_HELM_CHARTS} ${ONAP_HELM_RELEASE}-sftp set_values_override=${override}
+
+Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
+ ${headers}= Create Dictionary content-type=application/json
+ ${subdata}= OperatingSystem.Get File ${PMMAPPER_SUB_ROLE_DATA}
+ ${session}= Create Session dmaapbc ${DMAAP_BC_SERVER}
+ ${resp}= Post Request dmaapbc ${DMAAP_BC_MR_CLIENT_PATH} data=${subdata} headers=${headers}
+ Wait Until Keyword Succeeds 5 minute 5 sec Topic Validate success
+ ${resp}= Run MR Get Request ${MR_TOPIC_CHECK_PATH}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${topics}= Set Variable ${resp.json().get('topics')}
+ List Should Contain Value ${topics} org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
+ ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+DR Bulk PM Feed Check
+ ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
+ Should Contain ${resp.text} bulk_pm_feed
+
+DR PM Mapper Subscriber Check
+ ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
+ Should Contain ${resp.text} https://dcae-pm-mapper:8443/delivery
+
+Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
+ ${rc}= Run and Return RC ${SET_KNOWN_HOSTS_FILE_PATH}
+ Should Be Equal As Integers ${rc} 0
+ Wait Until Keyword Succeeds 5 min 10s Check Known Hosts In Env ${CHECK_ENV_SET}
+ ${GET_RSA_KEY}= Set Variable kubectl exec $(kubectl get pod -n onap | grep ${ONAP_HELM_RELEASE}-sftp | awk '{print $1}') -n onap -- ssh-keyscan -t rsa ${ONAP_HELM_RELEASE}-sftp > /tmp/known_hosts
+ ${rc}= Run and Return RC ${GET_RSA_KEY}
+ Should Be Equal As Integers ${rc} 0
+ ${rc}= Run and Return RC ${COPY_RSA_KEY}
+ Should Be Equal As Integers ${rc} 0
+
+Uploading PM Files to xNF SFTP Server
+ ${pm_file}= Upload PM Files to xNF SFTP Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}
+ Set Global Variable ${PM_FILE} ${pm_file}
+
+Sending File Ready Event to VES Collector
+ Send File Ready Event to VES Collector ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
+
+Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
+ Wait Until Keyword Succeeds 2 min 5 sec xNF PM File Validate ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}
+
+Changing SFTP Server RSA Key in DFC
+ ${get_known_hosts_file}= OperatingSystem.Get File /tmp/known_hosts
+ ${change_rsa_key}= Replace String ${get_known_hosts_file} A a
+ Create File /tmp/known_hosts ${change_rsa_key}
+ ${rc}= Run and Return RC ${COPY_RSA_KEY}
+ Should Be Equal As Integers ${rc} 0
+
+Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
+ ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
+ Should Not Contain ${dfc_logs} ${EXPECTED_PRINT}
+
+Checking DFC Logs After SFTP Server RSA Key Changed
+ Wait Until Keyword Succeeds 5 min 30 sec Check Given Print In DFC LOG ${CHECK_DFC_LOGS}
+
+Check DFC logs
+ [Arguments] ${DFC_LOG_CHECK}
+ ${rc} = Run and Return RC ${DFC_LOG_CHECK}
+ Should Be Equal As Integers ${rc} 0
diff --git a/robot/resources/usecases/5gbulkpm_interface.robot b/robot/resources/usecases/5gbulkpm_interface.robot
deleted file mode 100644
index 00d73065..00000000
--- a/robot/resources/usecases/5gbulkpm_interface.robot
+++ /dev/null
@@ -1,454 +0,0 @@
-*** Settings ***
-Documentation The main interface for interacting with 5G Bulkpm.
-Library RequestsLibrary
-Library OperatingSystem
-Library String
-Library JSONLibrary
-Resource ../dcae/deployment.robot
-Resource ../dcae/inventory.robot
-Resource ../mr_interface.robot
-Resource ../dr_interface.robot
-Resource ../consul_interface.robot
-
-*** Variables ***
-${INVENTORY_SERVER} ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
-${DEPLOYMENT_SERVER} ${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL}://${GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME}:${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT}
-${DR_ENDPOINT} ${GLOBAL_DMAAP_DR_PROV_SERVER_PROTOCOL}://${GLOBAL_INJECTED_DMAAP_DR_PROV_IP_ADDR}:${GLOBAL_DMAAP_DR_PROV_SERVER_PORT}
-${DMAAP_BC_SERVER} ${GLOBAL_BC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_BC_IP_ADDR}:${GLOBAL_BC_HTTPS_SERVER_PORT}
-${VES_HEALTH_CHECK_PATH} ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
-${MR_PUBLISH_TEMPLATE} mr/mr_publish.jinja
-${INVENTORY_ENDPOINT} /dcae-service-types
-${XNF_SFTP_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-sftp.yaml
-${XNF_HTTPS_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-https.yaml
-${BLUEPRINT_TEMPLATE_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/blueprintTemplate.json
-${DEPLOYMENT_ENDPOINT} dcae-deployments
-${MR_TOPIC_CHECK_PATH} /topics
-${DR_SUB_CHECK_PATH} /internal/prov
-${MR_TOPIC_URL_PATH} /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/CG1/C1
-${MR_TOPIC_URL_PATH_FOR_POST} /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
-${DMAAP_BC_MR_CLIENT_PATH} /webapi/mr_clients
-${DMAAP_BC_MR_CLUSTER_PATH} /webapi/mr_clusters
-${PMMAPPER_HEALTH_CHECK_PATH} /healthcheck
-${JSON_DATA_FILE} ${EXECDIR}/robot/assets/usecases/5gbulkpm/Notification.json
-${VES_LISTENER_PATH} /eventListener/v7
-${PMMAPPER_SUB_ROLE_DATA} ${EXECDIR}/robot/assets/usecases/5gbulkpm/sub.json
-${PMMAPPER_MR_CLUSTER_DATA} ${EXECDIR}/robot/assets/usecases/5gbulkpm/mr_clusters.json
-${NEXUS3} ${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}
-${SET_KNOWN_HOSTS_FILE_PATH} kubectl set env deployment/$(kubectl get deployment -n onap | grep datafile | awk '{print $1}') KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_hosts -n onap
-${CHECK_ENV_SET} kubectl set env pod/$(kubectl get pod -n onap | grep datafile | awk '{print $1}') --list -n onap
-${GET_RSA_KEY} kubectl exec $(kubectl get pod -n onap | grep sftpserver | awk '{print $1}') -n onap -- ssh-keyscan -t rsa sftpserver > /tmp/known_hosts
-${COPY_RSA_KEY} kubectl cp /tmp/known_hosts $(kubectl get pod -n onap | grep datafile | awk '{print $1}'):/home/datafile/.ssh/known_hosts -n onap
-${CHECK_DFC_LOGS} kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --tail=4
-${EXPECTED_PRINT} StrictHostKeyChecking is enabled but environment variable KNOWN_HOSTS_FILE_PATH is not set or points to not existing file
-${MONGO_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-mongo.yaml
-${PNF_SIMULATOR_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-pnf-simulator.yaml
-${MONGO_VES_CLIENT_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-mongo-ves-client.yaml
-${VES_CLIENT_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-ves-client.yaml
-${VES_INPUTS} deployment/VesTlsCmpv2Inputs.jinja
-${pm_notification_event} dfc/notification.jinja
-${consul_change_event} dfc/consul.jinja
-${ves_client_single_event}= ves/pnf_simulator_single_event.jinja
-
-
-
-
-*** Keywords ***
-
-
-Check Next Event From Topic
- [Documentation]
- ... This keyword checks if on MR topic there is no existing messageses.
- ... If there is no more messageses then it reports success and finish "Wait Until Keyword Succeeds 2 min 1 s Check Next Event From Topic" step from "xNF PM File Validate" keyword
- ... In other case it triggers "Get Next Event From Topic".
- ... NOTE: Keyword "Get Next Event From Topic" will always fails in order to not finsh "Wait Until Keyword Succeeds 2 min 1 s Check Next Event From Topic" step from "xNF PM File Validate" keyword
- ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Run keyword If ${resp.text} == @{EMPTY} Log Event is empty! There is no more events on topic!
- ... ELSE Get Next Event From Topic ${resp}
-
-Get Next Event From Topic
- [Documentation]
- ... This keyword adds new events from MR topic to list ${all_event_json_list} in a recursive way and sets ${all_event_json_list} as a suite variable in order to be able to add new items/evnts in a next iteration
- ... NOTE: Keyword "Get Next Event From Topic" will always fails in order to not finish "Wait Until Keyword Succeeds 2 min 1 s Check Next Event From Topic" step from "xNF PM File Validate" keyword
- [Arguments] ${resp}
- ${resp_list}= Set Variable ${resp.json()}
- Log ${resp_list}
- ${combained_list}= Combine Lists ${all_event_json_list} ${resp_list}
- ${all_event_json_list}= Set Variable ${combained_list}
- Set Suite Variable ${all_event_json_list}
- Fail
-
-xNF PM File Validate
- [Documentation]
- ... This keyword gathers all events from message router topic and validates if in recived data is present an expected string: "${expected_pm_str}" .
- ... Only in custom mode it saves a response as a json file "${PM_FILE}-${timestamp}.json" located in "${expected_event_json_path}"
- [Arguments] ${bulk_pm_mode} ${expected_pm_str} ${expected_event_json_path}
- Run Keyword If '${bulk_pm_mode}' == 'custom' Set Log Level ${PM_LOG_LEVEL}
- ${timestamp}= Get Time epoch
- ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Run keyword If ${resp.text} == @{EMPTY} Fail msg=Event is empty!
- ${all_event_json_list}= Set Variable ${resp.json()}
- Set Suite Variable ${all_event_json_list}
- Wait Until Keyword Succeeds 2 min 5 sec Check Next Event From Topic
- ${all_event_json_string}= Convert To String ${all_event_json_list}
- Should Contain ${all_event_json_string} ${expected_pm_str}
- Run Keyword If '${bulk_pm_mode}' == 'custom' Print Evnets From Topic to JSON file ${expected_event_json_path} ${all_event_json_string}
- Run Keyword If '${bulk_pm_mode}' == 'custom' Set Log Level TRACE
-
-Print Evnets From Topic to JSON file
- [Arguments] ${expected_event_json_path} ${all_event_json_string}
- ${str}= Replace String ${all_event_json_string} '{ {
- ${str2}= Replace String ${str} }' }
- ${all_event_json_string}= Replace String ${str2} u{ {
- ${json}= To Json ${all_event_json_string} pretty_print=True
- ${timestamp}= Get Time epoch
- Create File ${expected_event_json_path}/${PM_FILE}-${timestamp}.json ${json}
-
-Topic Validate
- [Arguments] ${value}
- ${timestamp}= Get Current Date
- ${dict}= Create Dictionary timestamp=${timestamp}
- Templating.Create Environment mr ${GLOBAL_TEMPLATE_FOLDER}
- ${data}= Templating.Apply Template mr ${MR_PUBLISH_TEMPLATE} ${dict}
- ${resp}= Run MR Auth Post Request (User And Pass) ${MR_TOPIC_URL_PATH_FOR_POST} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD} ${data}
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Should Contain ${resp.text} ${value}
-
-Send File Ready Event to VES Collector and Deploy all DCAE Applications
- [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
- Disable Warnings
- Send File Ready Event to VES Collector ${pm_file} ${file_format_type} ${file_format_version}
- Setting Global Variables
- Log To Console Deploying Data File Collector
- Deploying Data File Collector
- Log To Console Deploying 3GPP PM Mapper
- Deploying 3GPP PM Mapper
- Log To Console Deploying SFTP Server As xNF
- Deploying SFTP Server As xNF
- Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
- DR Bulk PM Feed Check
- DR PM Mapper Subscriber Check
- Log To Console Deploying VES collector with CMPv2 for bulkpm over https
- Deploying VES collector with CMPv2 for bulkpm over https
- Log To Console Deploying HTTPS server with correct CMPv2 certificates
- Deploying HTTPS server with correct certificates
- Log To Console Deploying HTTPS server with wrong CMPv2 certificates - wrong SAN-s
- Deploying HTTPS server with wrong certificates - wrong SAN-s
- Log To Console Deploying VES Client with CMPv2 certificates
- Deploying VES Client with correct certificates
- Log To Console Checking status of deployed applictions
- Wait Until Keyword Succeeds 5 min 20 sec Checking Status Of Deployed Applictions
-
-Usecase Teardown
- Disable Warnings
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check datafile
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check pmmapper
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check sftpserver
- Delete Blueprint From Inventory ${serviceTypeId-Sftp}
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check ves-collector-for-bulkpm-over-https
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check https-server-dep
- Delete Blueprint From Inventory ${serviceTypeId-Https}
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check https-server-wrong-sans-dep
- Delete Blueprint From Inventory ${serviceTypeId-Https-wrong-sans}
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check mongo-dep-5gbulkpm
- Wait Until Keyword Succeeds 2 min 20 sec Undeploy Service With Check ves-rest-client-dep
- Delete Blueprint From Inventory ${serviceTypeIdMongo}
- Delete Blueprint From Inventory ${serviceTypeIdVesClient}
-
-
-Undeploy Service With Check
- [Arguments] ${deployment_name}
- ${resp} Undeploy Service ${deployment_name}
- Should Not Be Equal As Strings ${resp.status_code} 400
-
-
-Setting Global Variables
- [Documentation]
- ... This test case checks suite if it is working in default or custom mode and sets proper variables depended on used mode.
- ... Default mode is based on a previous version of 5gbulkpm test case which it test PM file available in robot image.
- ... Custom mode is used only in xtesing. Can be executed only as k8s job described in https://gerrit.onap.org/r/gitweb?p=integration/xtesting.git;a=blob_plain;f=smoke-usecases-robot/README.md;hb=refs/heads/master
- ... Custom mode is used to validate custom PM files. All details how to provide custom PM files are described in documentation above.
- ... By default in custom mode all PM details are not logged to robot log files, so they are not send to community name: TEST_DB_URL http://testresults.opnfv.org/onap/api/v1/results
- ${env_variables} = Get Environment Variables
- ${bulk_pm_mode}= Get Variable Value ${env_variables["BULK_PM_MODE"]} default
- ${pm_log_level}= Get Variable Value ${env_variables["PM_LOG_LEVEL"]} NONE
- ${test_variables} = Create Dictionary
- Run Keyword If "${bulk_pm_mode}" == "custom" Set To Dictionary ${test_variables} FILE_FORMAT_TYPE=${env_variables["FILE_FORMAT_TYPE"]}
- ... FILE_FORMAT_VERSION=${env_variables["FILE_FORMAT_VERSION"]}
- ... PM_FILE_PATH=${env_variables["PM_FILE_PATH"]}
- ... EXPECTED_PM_STR=${env_variables["EXPECTED_PM_STR"]}
- ... EXPECTED_EVENT_JSON_PATH=${env_variables["EXPECTED_EVENT_JSON_PATH"]}
- ... ELSE Set To Dictionary ${test_variables} FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
- ... FILE_FORMAT_VERSION=V10
- ... PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
- ... EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
- ... EXPECTED_EVENT_JSON_PATH=none
- Set Global Variable ${GLOBAL_TEST_VARIABLES} ${test_variables}
- Set Global Variable ${BULK_PM_MODE} ${bulk_pm_mode}
- Set Global Variable ${PM_LOG_LEVEL} ${pm_log_level}
-
-
-Send File Ready Event to VES Collector
- [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
- Disable Warnings
- ${headers}= Create Dictionary content-type=application/json
- ${fileready}= OperatingSystem.Get File ${JSON_DATA_FILE}
- ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
- ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
- ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${fileready} headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 202
- ${VES_FILE_READY_NOTIFICATION} Set Variable {"event":{"commonEventHeader":{"version":"4.0.1","vesEventListenerVersion":"7.0.1","domain":"notification","eventName":"Noti_RnNode-Ericsson_FileReady","eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","lastEpochMicrosec":8745745764578,"priority":"Normal","reportingEntityName":"otenb5309","sequence":0,"sourceName":"oteNB5309","startEpochMicrosec":8745745764578,"timeZoneOffset":"UTC+05.30"},"notificationFields":{"changeIdentifier":"PM_MEAS_FILES","changeType":"FileReady","notificationFieldsVersion":"2.0","arrayOfNamedHashMap":[{"name":"${pm_file}","hashMap":{"location":"sftp://bulkpm:bulkpm@sftpserver:22/upload/${pm_file}","compression":"gzip","fileFormatType":"${file_format_type}","fileFormatVersion":"${file_format_version}"}}]}}}
- ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
- Should Be Equal As Strings ${resp.status_code} 202
-
-Send File Ready Event to VES Collector Over VES Client
- [Arguments] ${pm_file} ${file_format_type} ${file_format_version} ${https_server_host} ${http_reposnse_code}
- Disable Warnings
- ${pm_event} Create Dictionary https_server_host=${https_server_host} pm_file=${pm_file} fileFormatType=${file_format_type} fileFormatVersion=${file_format_version}
- Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
- ${event}= Templating.Apply Template pm ${pm_notification_event} ${pm_event}
- ${ves_client_endpoint}= Set Variable http://ves-client:5000
- ${ves_url}= Set Variable ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://dcae-ves-collector-for-bulkpm-over-https:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}/eventListener/v7
- ${single_event}= Create Dictionary event=${event} ves_url=${ves_url}
- Templating.Create Environment ves ${GLOBAL_TEMPLATE_FOLDER}
- ${data}= Templating.Apply Template ves ${ves_client_single_event} ${single_event}
- ${session}= Create Session ves_client ${ves_client_endpoint}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${post_resp}= Post Request ves_client /simulator/event data=${data} headers=${headers}
- Log PM notification ${data}
- Should Be Equal As Strings ${post_resp.status_code} ${http_reposnse_code}
-
-Upload PM Files to xNF SFTP Server
- [Arguments] ${pm_file_path} ${bulk_pm_mode}
- Open Connection sftpserver
- Login bulkpm bulkpm
- ${epoch}= Get Current Date result_format=epoch
- ${pm_file} = Run Keyword If "${bulk_pm_mode}" == "custom" Fetch From Right ${pm_file_path} marker=/
- ... ELSE Set Variable A${epoch}.xml.gz
- Put File ${pm_file_path} upload/${pm_file}
- [Return] ${pm_file}
-
-Upload PM Files to xNF HTTPS Server
- [Arguments] ${pm_file_path} ${bulk_pm_mode} ${https_server}
- ${epoch}= Get Current Date result_format=epoch
- ${pm_file} = Run Keyword If "${bulk_pm_mode}" == "custom" Fetch From Right ${pm_file_path} marker=/
- ... ELSE Set Variable A${epoch}.xml.gz
- Copy File ${pm_file_path} tmp/${pm_file}
- ${fileData}= Get Binary File tmp/${pm_file}
- ${file_part}= Create List ${pm_file} ${fileData} application/octet-stream
- ${fileParts}= Create Dictionary
- Set to Dictionary ${fileParts} uploaded_file=${file_part}
- ${auth}= Create List demo demo123456!
- ${session}= Create Session https http://${https_server}:80 auth=${auth}
- ${resp}= Post Request https /upload.php files=${fileParts}
- Should Be Equal As Strings ${resp.status_code} 200
- [Return] ${pm_file}
-
-Check Given Print In DFC Log
- [Arguments] ${check_dfc_logs}
- ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
- Should Contain ${dfc_logs} HostKey has been changed
-
-Run Given Command On DFC Container
- [Arguments] ${user_command}
- ${run_command} = Run And Return Rc And Output ${user_command}
- ${command_output} = Set Variable ${run_command[1]}
- ${regexp_matches} = Get Regexp Matches ${command_output} .*(\\s|\\[)+(.+-datafile-collector).* 2
- ${dfc_container_name} = Set Variable ${regexp_matches[0]}
- ${new_command} = Set Variable ${user_command} ${dfc_container_name}
- ${command_output} = Run And Return Rc And Output ${new_command}
- Should Be Equal As Integers ${command_output[0]} 0
- ${log} = Set Variable ${command_output[1]}
- [Return] ${log}
-
-Check Known Hosts In Env
- [Arguments] ${CHECK_KNOWN_HOSTS}
- ${check} = Run And Return Rc And Output ${CHECK_KNOWN_HOSTS}
- Should Be Equal As Integers ${check[0]} 0
- ${env} = Set Variable ${check[1]}
- ${string_matches} = Get Lines Containing String ${env} KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host case_insensitive=True
- ${output} = Should Not Be Empty ${string_matches}
- [Return] ${output}
-
-Deploying Data File Collector
- ${resp}= Get Blueprint From Inventory k8s-datafile
- ${json}= Set Variable ${resp.json()}
- ${serviceTypeId-Dfc} Set Variable ${json['items'][0]['typeId']}
- ${image} Get Regexp Matches ${json['items'][0]['blueprintTemplate']} nexus3(.)*?(?=\\")
- ${image} Replace String ${image}[0] nexus3.onap.org:10001 ${NEXUS3}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-Dfc}", "inputs": {"tag_version": "${image}", "external_cert_use_external_tls": true}}
- Deploy Service ${deployment_data} datafile 4 minutes
-
-Deploying 3GPP PM Mapper
- ${clusterdata}= OperatingSystem.Get File ${PMMAPPER_MR_CLUSTER_DATA}
- ${headers}= Create Dictionary content-type=application/json
- ${session}= Create Session dmaapbc ${DMAAP_BC_SERVER}
- ${resp}= Post Request dmaapbc ${DMAAP_BC_MR_CLUSTER_PATH} data=${clusterdata} headers=${headers}
- ${resp}= Get Blueprint From Inventory k8s-pm-mapper
- ${json}= Set Variable ${resp.json()}
- ${serviceTypeId-Pmmapper} Set Variable ${json['items'][0]['typeId']}
- ${image} Get Regexp Matches ${json['items'][0]['blueprintTemplate']} nexus3(.)*?(?=\')
- ${image} Replace String ${image}[0] nexus3.onap.org:10001 ${NEXUS3}
- ${deployment_data}= Set Variable {"inputs":{"client_password": "${GLOBAL_DCAE_PASSWORD}", "tag_version": "${image}"},"serviceTypeId": "${serviceTypeId-Pmmapper}"}
- ${pmMapperOperationId}= Deploy Service ${deployment_data} pmmapper check_deployment_status=false
- Set Global Variable ${pmMapperOperationId}
-
-Deploying SFTP Server As xNF
- ${serviceTypeId-Sftp} Load Blueprint To Inventory ${XNF_SFTP_BLUEPRINT_PATH} sftp
- Set Global Variable ${serviceTypeId-Sftp}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-Sftp}"}
- ${sftpServerOperationId}= Deploy Service ${deployment_data} sftpserver check_deployment_status=false
- Set Global Variable ${sftpServerOperationId}
-
-Deploying HTTPS server with correct certificates
- ${serviceTypeId-Https} Load Blueprint To Inventory ${XNF_HTTPS_BLUEPRINT_PATH} https
- Set Global Variable ${serviceTypeId-Https}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-Https}"}
- ${resp}= Get Blueprint From Inventory https
- ${json}= Set Variable ${resp.json()}
- ${image} Get Regexp Matches ${json['items'][0]['blueprintTemplate']} nexus3(.)*?(?=\')
- ${image} Replace String ${image}[0] nexus3.onap.org:10001 ${NEXUS3}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-Https}", "inputs": {"tag_version": "${image}", "service_component_type": "https-server", "service_component_name_override": "https-server", "external_cert_sans": "https-server"}}
- ${httpsServerOperationId}= Deploy Service ${deployment_data} https-server-dep check_deployment_status=false
- Set Global Variable ${httpsServerOperationId}
-
-Deploying HTTPS server with wrong certificates - wrong SAN-s
- ${serviceTypeId-Https-wrong-sans} Load Blueprint To Inventory ${XNF_HTTPS_BLUEPRINT_PATH} https-wrong-sans
- Set Global Variable ${serviceTypeId-Https-wrong-sans}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-Https-wrong-sans}"}
- ${resp}= Get Blueprint From Inventory https-wrong-sans
- ${json}= Set Variable ${resp.json()}
- ${image} Get Regexp Matches ${json['items'][0]['blueprintTemplate']} nexus3(.)*?(?=\')
- ${image} Replace String ${image}[0] nexus3.onap.org:10001 ${NEXUS3}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-Https-wrong-sans}", "inputs": {"tag_version": "${image}", "service_component_type": "https-server-wrong-sans", "service_component_name_override": "https-server-wrong-sans", "external_cert_sans": "wrong-cert"}}
- ${httpsServerWrongSansOperationId}= Deploy Service ${deployment_data} https-server-wrong-sans-dep check_deployment_status=false
- Set Global Variable ${httpsServerWrongSansOperationId}
-
-Deploying VES Client with correct certificates
- ${serviceTypeIdMongo} Load Blueprint To Inventory ${MONGO_VES_CLIENT_BLUEPRINT_PATH} mongo-5g-bulk-pm
- ${serviceTypeIdVesClient} Load Blueprint To Inventory ${VES_CLIENT_BLUEPRINT_PATH} ves-rest-client
- Set Suite Variable ${serviceTypeIdMongo}
- Set Suite Variable ${serviceTypeIdVesClient}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeIdMongo}", "inputs": {"service_component_type": "mongo-ves-client", "service_component_name_override": "mongo-ves-client"}}
- Deploy Service ${deployment_data} mongo-dep-5gbulkpm 2 minutes
- ${resp}= Get Blueprint From Inventory ves-rest-client
- ${json}= Set Variable ${resp.json()}
- ${image} Get Regexp Matches ${json['items'][0]['blueprintTemplate']} nexus3(.)*?(?=\')
- ${image} Replace String ${image}[0] nexus3.onap.org:10001 ${NEXUS3}
- ${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeIdVesClient}", "inputs": {"tag_version": "${image}", "service_component_type": "ves-client", "service_component_name_override": "ves-client"}}
- ${vesRestClientOperationId}= Deploy Service ${deployment_data} ves-rest-client-dep check_deployment_status=false
- Set Global Variable ${vesRestClientOperationId}
-
-Deploying VES collector with CMPv2 for bulkpm over https
- ${resp}= Get Blueprint From Inventory k8s-ves
- ${json}= Set Variable ${resp.json()}
- ${serviceTypeIdVes} Set Variable ${json['items'][0]['typeId']}
- ${image} Get Regexp Matches ${json['items'][0]['blueprintTemplate']} nexus3(.)*?(?=\")
- ${image} Replace String ${image}[0] nexus3.onap.org:10001 ${NEXUS3}
- ${arguments}= Create Dictionary serviceTypeId=${serviceTypeIdVes}
- Set To Dictionary ${arguments} image ${image}
- Set To Dictionary ${arguments} external_port_tls 32419
- Set To Dictionary ${arguments} service_component_name_override dcae-ves-collector-for-bulkpm-over-https
- Set To Dictionary ${arguments} external_cert_sans dcae-ves-collector-for-bulkpm-over-https,ves-collector-cmpv2-cert,ves-cmpv2-cert
- Templating.Create Environment deployment ${GLOBAL_TEMPLATE_FOLDER}
- ${deployment_data}= Templating.Apply Template deployment ${VES_INPUTS} ${arguments}
- ${vesCollectorForBulkpmOverHttpsOperationId}= Deploy Service ${deployment_data} ves-collector-for-bulkpm-over-https check_deployment_status=false
- Set Global Variable ${vesCollectorForBulkpmOverHttpsOperationId}
-
-
-Checking Status Of Deployed Applictions
- ${statusDict}= Create Dictionary
- ${status} ${value} = Run Keyword And Ignore Error Deployment Status pmmapper ${pmMapperOperationId}
- Set To Dictionary ${statusDict} pmmapper ${status}
- ${status} ${value} = Run Keyword And Ignore Error Deployment Status ves-rest-client-dep ${vesRestClientOperationId}
- Set To Dictionary ${statusDict} ves-rest-client-dep ${status}
- ${status} ${value} = Run Keyword And Ignore Error Deployment Status ves-collector-for-bulkpm-over-https ${vesCollectorForBulkpmOverHttpsOperationId}
- Set To Dictionary ${statusDict} ves-collector-for-bulkpm-over-https ${status}
- ${status} ${value} = Run Keyword And Ignore Error Deployment Status https-server-dep ${httpsServerOperationId}
- Set To Dictionary ${statusDict} https-server-dep ${status}
- ${status} ${value} = Run Keyword And Ignore Error Deployment Status https-server-wrong-sans-dep ${httpsServerWrongSansOperationId}
- Set To Dictionary ${statusDict} https-server-wrong-sans-dep ${status}
- Dictionary Should Not Contain Value ${statusDict} FAIL
-
-Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
- ${headers}= Create Dictionary content-type=application/json
- ${subdata}= OperatingSystem.Get File ${PMMAPPER_SUB_ROLE_DATA}
- ${session}= Create Session dmaapbc ${DMAAP_BC_SERVER}
- ${resp}= Post Request dmaapbc ${DMAAP_BC_MR_CLIENT_PATH} data=${subdata} headers=${headers}
- Wait Until Keyword Succeeds 5 minute 5 sec Topic Validate success
- ${resp}= Run MR Get Request ${MR_TOPIC_CHECK_PATH}
- Should Be Equal As Strings ${resp.status_code} 200
- ${topics}= Set Variable ${resp.json().get('topics')}
- List Should Contain Value ${topics} org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
- ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Should Be Equal As Strings ${resp.status_code} 200
-
-DR Bulk PM Feed Check
- ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
- Should Contain ${resp.text} bulk_pm_feed
-
-DR PM Mapper Subscriber Check
- ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
- Should Contain ${resp.text} https://dcae-pm-mapper:8443/delivery
-
-Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
- ${rc}= Run and Return RC ${SET_KNOWN_HOSTS_FILE_PATH}
- Should Be Equal As Integers ${rc} 0
- Wait Until Keyword Succeeds 5 min 10s Check Known Hosts In Env ${CHECK_ENV_SET}
- ${rc}= Run and Return RC ${GET_RSA_KEY}
- Should Be Equal As Integers ${rc} 0
- ${rc}= Run and Return RC ${COPY_RSA_KEY}
- Should Be Equal As Integers ${rc} 0
-
-Uploading PM Files to xNF SFTP Server
- ${pm_file}= Upload PM Files to xNF SFTP Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]} ${BULK_PM_MODE}
- Set Global Variable ${PM_FILE} ${pm_file}
-
-Uploading PM Files to xNF HTTPS Server
- [Arguments] ${https-server_host}
- ${pm_file}= Upload PM Files to xNF HTTPS Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]} ${BULK_PM_MODE} ${https-server_host}
- Set Global Variable ${PM_FILE} ${pm_file}
-
-Sending File Ready Event to VES Collector
- Send File Ready Event to VES Collector ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
-
-Sending File Ready Event to VES Collector Over VES Client
- [Arguments] ${https-server_host}
- Send File Ready Event to VES Collector Over VES Client ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]} ${https-server_host} 202
-
-Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
- Wait Until Keyword Succeeds 2 min 5 sec xNF PM File Validate ${BULK_PM_MODE} ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]} ${GLOBAL_TEST_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
-
-Changing SFTP Server RSA Key in DFC
- ${get_known_hosts_file}= OperatingSystem.Get File /tmp/known_hosts
- ${change_rsa_key}= Replace String ${get_known_hosts_file} A a
- Create File /tmp/known_hosts ${change_rsa_key}
- ${rc}= Run and Return RC ${COPY_RSA_KEY}
- Should Be Equal As Integers ${rc} 0
-
-Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
- ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
- Should Not Contain ${dfc_logs} ${EXPECTED_PRINT}
-
-Checking DFC Logs After SFTP Server RSA Key Changed
- Wait Until Keyword Succeeds 5 min 30 sec Check Given Print In DFC LOG ${CHECK_DFC_LOGS}
-
-Check DFC logs
- [Arguments] ${DFC_LOG_CHECK}
- ${rc} = Run and Return RC ${DFC_LOG_CHECK}
- Should Be Equal As Integers ${rc} 0
-
-Change DFC httpsHostnameVerify configuration in Consul
- [Documentation] Changes DFC httpsHostnameVerify config.
- [Arguments] ${httpsHostnameVerify}
- ${httpsHostnameVerify_conf} Create Dictionary httpsHostnameVerify=${httpsHostnameVerify}
- Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
- ${event}= Templating.Apply Template pm ${consul_change_event} ${httpsHostnameVerify_conf}
- ${rc} ${container_name} = Run and Return RC and Output kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME | awk -F'-' '{print $2}'
- Should Be Equal As Integers ${rc} 0
- ${resp}= Run Consul Put Request /v1/kv/${container_name}-datafile-collector?dc=dc1 ${event}
- Should Be Equal As Strings ${resp.status_code} 200
- ${rc} = Run and Return RC kubectl delete pods -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME)
- Should Be Equal As Integers ${rc} 0
- Wait Until Keyword Succeeds 60 sec 5 sec Check DFC logs kubectl logs -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME) ${container_name}-datafile-collector
-
diff --git a/robot/testsuites/usecases/5gbulkpm.robot b/robot/testsuites/usecases/5gbulkpm_helm.robot
index 21603dc0..67039d87 100644
--- a/robot/testsuites/usecases/5gbulkpm.robot
+++ b/robot/testsuites/usecases/5gbulkpm_helm.robot
@@ -11,7 +11,8 @@ Library JSONLibrary
Library Process
Library ONAPLibrary.JSON
Library ONAPLibrary.Utilities
-Resource ../../resources/usecases/5gbulkpm_interface.robot
+Resource ../../resources/usecases/5gbulkpm_helm_interface.robot
+Resource ../../resources/chart_museum.robot
Suite Setup Send File Ready Event to VES Collector and Deploy all DCAE Applications test org.3GPP.32.435#measCollec V10
Suite Teardown Usecase Teardown
@@ -50,39 +51,3 @@ SFTP Server based bulk PM test, not successful SFTP Server know host verificatio
Sending File Ready Event to VES Collector
Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
-HTTPS Server based bulk PM test (correct server certificate - correct SANs), successful HTTPS server certificate verification on DFC side
- [Tags] 5gbulkpm 5gbulkpm_https
- [Documentation]
- ... This test case triggers successful bulk pm upload from HTTPS server using CMPv2 Certificate-based authentication
- ... Both HTTPS server and DFC have correct certs with correct SAN-s.
- ... DFC has turned on hostname verification option, verifies HTTPS server host name and downloads pm file from HTTPS server.
- Change DFC httpsHostnameVerify configuration in Consul true
- Uploading PM Files to xNF HTTPS Server https-server
- Sending File Ready Event to VES Collector Over VES Client https-server
- Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
-
-
-HTTPS Server based bulk PM test (wrong server certificate - wrong SANs), unsuccessful validation on DFC side due to turned on host checking
- [Tags] 5gbulkpm 5gbulkpm_https
- [Documentation]
- ... This test case triggers unsuccessful bulk pm upload from HTTPS server using CMPv2 Certificate-based authentication
- ... HTTPS server has incorrect cert with wrong correct SAN-s. DFC has turned on hostname verification option.
- ... DFC verifies HTTPS server host name against SAN-s and closes connection.
- Change DFC httpsHostnameVerify configuration in Consul true
- Uploading PM Files to xNF HTTPS Server https-server-wrong-sans
- Sending File Ready Event to VES Collector Over VES Client https-server-wrong-sans
- Wait Until Keyword Succeeds 60 sec 5 sec Check DFC logs ${DFC_ERROR_GREP_COMMAND_SANS}
-
-
-HTTPS Server based bulk PM test (wrong server certificate - wrong SANs), successful validation on DFC side due to turned off host checking
- [Tags] 5gbulkpm 5gbulkpm_https
- [Documentation]
- ... This test case triggers successful bulk pm upload from HTTPS server using CMPv2 Certificate-based authentication
- ... HTTPS server has incorrect cert with wrong correct SAN-s. DFC has turned off hostname verification option.
- ... DFC does not verify HTTPS server host name against SAN-s and downloads pm file from HTTPS server.
- Change DFC httpsHostnameVerify configuration in Consul false
- Uploading PM Files to xNF HTTPS Server https-server-wrong-sans
- Sending File Ready Event to VES Collector Over VES Client https-server-wrong-sans
- Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
-
-