[ROBOT] ADD BULKPM test cases that use helm based component services 42/124642/44
authorKrzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>
Fri, 1 Oct 2021 10:22:06 +0000 (12:22 +0200)
committerMorgan Richomme <morgan.richomme@orange.com>
Tue, 7 Dec 2021 13:59:24 +0000 (13:59 +0000)
Signed-off-by: Krzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>
Issue-ID: INT-1895
Change-Id: I32389f4f0cd0d2e9fb7b73b99554a4722c4687d0

docker/Dockerfile
robot/assets/helm/sftp/Chart.yaml [new file with mode: 0644]
robot/assets/helm/sftp/templates/_helpers.tpl [new file with mode: 0644]
robot/assets/helm/sftp/templates/deployment.yaml [new file with mode: 0644]
robot/assets/helm/sftp/templates/service.yaml [new file with mode: 0644]
robot/assets/helm/sftp/values.yaml [new file with mode: 0644]
robot/resources/chart_museum.robot [new file with mode: 0644]
robot/resources/usecases/5gbulkpm_helm_interface.robot [new file with mode: 0644]
robot/resources/usecases/5gbulkpm_interface.robot [deleted file]
robot/testsuites/usecases/5gbulkpm_helm.robot [moved from robot/testsuites/usecases/5gbulkpm.robot with 50% similarity]

index 8fcecfe..bd5b10b 100644 (file)
@@ -7,14 +7,12 @@ LABEL usage="docker run -e ROBOT_TEST=<testname> -ti onapete"
 ENV BUILDTIME=true
 
 ARG TESTSUITE_TAG=master
-ARG HEATBRIDGE_TAG=master
 ARG PYTHON_UTILS_TAG=master
 ARG DEMO_TAG=master
-ARG KUBERNETES_VERSION="v1.15.11"
-
+ARG KUBERNETES_VERSION="v1.19.11"
+ARG HELM_VERSION="v3.3.4"
 
 ARG TESTSUITE_REPO=git.onap.org/testsuite
-#ARG HEATBRIDGE_REPO=git.onap.org/testsuite/heatbridge.git
 ARG PYTHON_UTILS_REPO=git.onap.org/testsuite/python-testing-utils.git
 ARG DEMO_REPO=git.onap.org/demo
 
@@ -24,6 +22,7 @@ COPY requirements.txt requirements.txt
 # Note: Latest version may be found on:
 # https://aur.archlinux.org/packages/kubectl-bin/
 ADD https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64/kubectl /usr/local/bin/kubectl
+ADD https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 get_helm.sh
 
 # Install Python, Pip, Robot framework, chromium, lighttpd web server
 RUN apt-get update \
@@ -54,9 +53,9 @@ RUN apt-get update \
     git+https://$PYTHON_UTILS_REPO@$PYTHON_UTILS_TAG#egg=robotframework-onap\&subdirectory=robotframework-onap && \
     git clone --depth 1 https://$TESTSUITE_REPO -b $TESTSUITE_TAG /var/opt/ONAP && \
     git clone --depth 1 https://$DEMO_REPO -b $DEMO_TAG /var/opt/ONAP/demo && \
-    chmod +x /usr/local/bin/kubectl
-    # moved in case line extension with comment isnt supported
-    #git+https://$HEATBRIDGE_REPO@$HEATBRIDGE_TAG#egg=heatbridge\&subdirectory=heatbridge \
+    chmod +x /usr/local/bin/kubectl && \
+    chmod 700 get_helm.sh  && \
+    ./get_helm.sh --version $HELM_VERSION
 
 RUN python3.7 -m pip install --no-cache-dir setuptools wheel
 RUN python3.7 -m pip install --no-cache-dir virtualenv
diff --git a/robot/assets/helm/sftp/Chart.yaml b/robot/assets/helm/sftp/Chart.yaml
new file mode 100644 (file)
index 0000000..36ecdbe
--- /dev/null
@@ -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 (file)
index 0000000..f949b4a
--- /dev/null
@@ -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 (file)
index 0000000..53fc0b1
--- /dev/null
@@ -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 (file)
index 0000000..f1c4d79
--- /dev/null
@@ -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 (file)
index 0000000..2ed5d94
--- /dev/null
@@ -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 (file)
index 0000000..e201a91
--- /dev/null
@@ -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 (file)
index 0000000..6707767
--- /dev/null
@@ -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 (file)
index 00d7306..0000000
+++ /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
-
similarity index 50%
rename from robot/testsuites/usecases/5gbulkpm.robot
rename to robot/testsuites/usecases/5gbulkpm_helm.robot
index 21603dc..67039d8 100644 (file)
@@ -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
-
-