summaryrefslogtreecommitdiffstats
path: root/robot/testsuites/usecases/5gbulkpm.robot
blob: e8d5da2a784f7fc2fc2df5d2ab0f0f057912904d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
*** Settings ***
Documentation     5G Bulk PM Usecase functionality

Library           RequestsLibrary
Library           OperatingSystem
Library           Collections
Library           String
Library           DateTime
Library           SSHLibrary
Library           JSONLibrary
Library           Process
Library           ONAPLibrary.JSON
Library           ONAPLibrary.Utilities
Resource          ../../resources/usecases/5gbulkpm_interface.robot
Resource          ../../resources/mr_interface.robot
Resource          ../../resources/dr_interface.robot
Suite Setup       Send File Ready Event to VES Collector   test  org.3GPP.32.435#measCollec  V10
Suite Teardown    Usecase Teardown

*** Variables ***
${INVENTORY_ENDPOINT}               /dcae-service-types
${XNF_SFTP_BLUEPRINT_PATH}          ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-sftp.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

*** Test Cases ***

Setting Global Variables
    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
    ${env_variables} =  Get Environment Variables
    Set Global Variable  ${ENV_VARIABLES}  ${env_variables}
    Log  Environment Variables: ${ENV_VARIABLES}
    ${default_env_variables} =  Create Dictionary
    Set To Dictionary  ${default_env_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   ${DEFAULT_ENV_VARIABLES}  ${default_env_variables}

    ${bulk_pm_mode}=   Get Variable Value  ${ENV_VARIABLES["BULK_PM_MODE"]}  default
    Set Global Variable  ${BULK_PM_MODE}  ${bulk_pm_mode}

Deploying Data File Collector
    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
    ${headers}=                         Create Dictionary                  content-type=application/json
    ${session}=                         Create Session                     dfc                 ${INVENTORY_SERVER}
    ${resp}=                            Get Request                        dfc                 ${INVENTORY_ENDPOINT}?typeName=k8s-datafile                      headers=${headers}
    ${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}
    Set Global Variable                 ${serviceTypeId-Dfc}
    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Dfc}", "inputs": {"tag_version": "${image}"}}
    ${session}=                         Create Session                     deployment-dfc                 ${DEPLOYMENT_SERVER}
    ${resp}=                            Put Request                        deployment-dfc                 /${DEPLOYMENT_ENDPOINT}/datafile         data=${deployment_data}     headers=${headers}
    ${operationLink}                    Set Variable                       ${resp.json().get('links').get('status')}
    ${operationId}                      Fetch From Right                   ${operationLink}                /
    Wait Until Keyword Succeeds         5 minute                           20 sec            Deployment Status       ${DEPLOYMENT_SERVER}     ${DEPLOYMENT_ENDPOINT}     datafile     ${operationId}

Deploying 3GPP PM Mapper
    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
    ${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}
    ${session}=                         Create Session                     pmmapper                 ${INVENTORY_SERVER}
    ${resp}=                            Get Request                        pmmapper                 ${INVENTORY_ENDPOINT}?typeName=k8s-pm-mapper                     headers=${headers}
    ${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}
    Set Global Variable                 ${serviceTypeId-Pmmapper}
    ${deployment_data}=                 Set Variable                       {"inputs":{"client_password": "${GLOBAL_DCAE_PASSWORD}", "tag_version": "${image}"},"serviceTypeId": "${serviceTypeId-Pmmapper}"}
    ${session}=                         Create Session                     deployment-pmmapper                 ${DEPLOYMENT_SERVER}
    ${resp}=                            Put Request                        deployment-pmmapper                 /${DEPLOYMENT_ENDPOINT}/pmmapper         data=${deployment_data}     headers=${headers}
    ${operationLink}                    Set Variable                       ${resp.json().get('links').get('status')}
    ${operationId}                      Fetch From Right                   ${operationLink}                /
    Wait Until Keyword Succeeds         6 minute                           10 sec            Deployment Status       ${DEPLOYMENT_SERVER}     ${DEPLOYMENT_ENDPOINT}     pmmapper     ${operationId}

Deploying SFTP Server As xNF
    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
    ${blueprint}=                       OperatingSystem.Get File           ${XNF_SFTP_BLUEPRINT_PATH}
    ${templatejson}=                    Load JSON From File                ${BLUEPRINT_TEMPLATE_PATH}
    ${templatejson}=                    Update Value To Json               ${templatejson}                            blueprintTemplate             ${blueprint}
    ${templatejson}=                    Update Value To Json               ${templatejson}                            typeName                      sftpserver
    ${json_data}                        Convert JSON To String             ${templatejson}
    ${headers}=                         Create Dictionary                  content-type=application/json
    ${session}=                         Create Session                     sftp                 ${INVENTORY_SERVER}
    ${resp}=                            Post Request                       sftp                 ${INVENTORY_ENDPOINT}          data=${json_data}             headers=${headers}
    ${serviceTypeId-Sftp}=              Set Variable                       ${resp.json().get('typeId')}
    Set Global Variable                 ${serviceTypeId-Sftp}
    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Sftp}" }
    ${session}=                         Create Session                     deployment-sftpserver                 ${DEPLOYMENT_SERVER}
    ${resp}=                            Put Request                        deployment-sftpserver                 /${DEPLOYMENT_ENDPOINT}/sftpserver         data=${deployment_data}     headers=${headers}
    ${operationLink}=                   Set Variable                       ${resp.json().get('links').get('status')}
    ${operationId}                      Fetch From Right                   ${operationLink}                /
    Wait Until Keyword Succeeds         2 minute                           5 sec            Deployment Status       ${DEPLOYMENT_SERVER}     ${DEPLOYMENT_ENDPOINT}     sftpserver     ${operationId}


Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
    ${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

Uploading PM Files to xNF SFTP Server After Services Deployed
    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key

    ${pm_file_path}=  Set Variable If  "${BULK_PM_MODE}" == "custom"  ${ENV_VARIABLES["PM_FILE_PATH"]}  ${DEFAULT_ENV_VARIABLES["PM_FILE_PATH"]}
    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${pm_file_path}  ${BULK_PM_MODE}
    Set Global Variable  ${PM_FILE}  ${pm_file}

DR Bulk PM Feed Check
    [Tags]                              5gbulkpm                            5gbulkpm_checking_sftp_rsa_key
    ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
    Should Contain                      ${resp.text}                        bulk_pm_feed

DR PM Mapper Subscriber Check
    [Tags]                              5gbulkpm                            5gbulkpm_checking_sftp_rsa_key
    ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
    Should Contain                      ${resp.text}                        https://dcae-pm-mapper:8443/delivery

Sending File Ready Event to VES Collector After Services Deployed
    [Tags]                              5gbulkpm                 5gbulkpm_checking_sftp_rsa_key
    ${file_format_type}  ${file_format_version}=   Run Keyword If  "${BULK_PM_MODE}" == "custom"  Set Variable  ${ENV_VARIABLES["FILE_FORMAT_TYPE"]}  ${ENV_VARIABLES["FILE_FORMAT_VERSION"]}
    ...                                                      ELSE                                 Set Variable  ${DEFAULT_ENV_VARIABLES["FILE_FORMAT_TYPE"]}  ${DEFAULT_ENV_VARIABLES["FILE_FORMAT_VERSION"]}
    Send File Ready Event to VES Collector  ${PM_FILE}  ${file_format_type}  ${file_format_version}

Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic After Services Deployed
    [Tags]                              5gbulkpm                            5gbulkpm_checking_sftp_rsa_key

    ${expected_pm_str}  ${expected_event_json_path}=   Run Keyword If  "${BULK_PM_MODE}" == "custom"  Set Variable  ${ENV_VARIABLES["EXPECTED_PM_STR"]}  ${ENV_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
    ...                                                   ELSE                                 Set Variable  ${DEFAULT_ENV_VARIABLES["EXPECTED_PM_STR"]}  none


    Run Keyword If  "${BULK_PM_MODE}" == "custom"  Wait Until Keyword Succeeds  3x  3 min  Run Keyword And Expect Error  *  Get Event From Topic  ${expected_event_json_path}
    ...       ELSE                                 Wait Until Keyword Succeeds  3 min  5 s  xNF PM File Validate  ${expected_pm_str}

    Run Keyword If  "${BULK_PM_MODE}" == "custom"  Validate Json Event From Topic   ${expected_event_json_path}  ${expected_pm_str}


Setting KNOWN_HOSTS_FILE_PATH Environment Variable
    [Tags]                             5gbulkpm_checking_sftp_rsa_key
    ${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 After KNOWN_HOSTS_FILE_PATH Env Variable Added
    [Tags]                              5gbulkpm_checking_sftp_rsa_key

    Set Test Variable  ${KNOWN_HOST_VARIABLE}  True
    ${pm_file_path}=  Set Variable If  "${BULK_PM_MODE}" == "custom"  ${ENV_VARIABLES["PM_FILE_PATH"]}  ${DEFAULT_ENV_VARIABLES["PM_FILE_PATH"]}
    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${pm_file_path}  ${BULK_PM_MODE}  ${KNOWN_HOST_VARIABLE}
    Set Global Variable  ${PM_FILE}  ${pm_file}
    Set Test Variable  ${KNOWN_HOST_VARIABLE}  False

Sending File Ready Event to VES Collector After KNOWN_HOSTS_FILE_PATH Env Variable Added
    [Tags]                              5gbulkpm_checking_sftp_rsa_key

    ${file_format_type}  ${file_format_version}=   Run Keyword If  "${BULK_PM_MODE}" == "custom"  Set Variable  ${ENV_VARIABLES["FILE_FORMAT_TYPE"]}  ${ENV_VARIABLES["FILE_FORMAT_VERSION"]}
    ...                                                      ELSE                                 Set Variable  ${DEFAULT_ENV_VARIABLES["FILE_FORMAT_TYPE"]}  ${DEFAULT_ENV_VARIABLES["FILE_FORMAT_VERSION"]}
    Send File Ready Event to VES Collector  ${PM_FILE}  ${file_format_type}  ${file_format_version}

Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic After KNOWN_HOSTS_FILE_PATH Env Variable Added
    [Tags]                              5gbulkpm_checking_sftp_rsa_key

    Set Test Variable  ${KNOWN_HOST_VARIABLE}  True
    ${expected_pm_str}  ${expected_event_json_path}=   Run Keyword If  "${BULK_PM_MODE}" == "custom"  Set Variable  ${ENV_VARIABLES["EXPECTED_PM_STR"]}  ${ENV_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
    ...                                                   ELSE                                 Set Variable  ${DEFAULT_ENV_VARIABLES["EXPECTED_PM_STR"]}  none


    Run Keyword If  "${BULK_PM_MODE}" == "custom"  Wait Until Keyword Succeeds  3x  3 min  Run Keyword And Expect Error  *  Get Event From Topic  ${expected_event_json_path}  ${KNOWN_HOST_VARIABLE}
    ...       ELSE                                 Wait Until Keyword Succeeds  3 min  5 s  xNF PM File Validate  ${expected_pm_str}  ${expected_event_json_path}

    Run Keyword If  "${BULK_PM_MODE}" == "custom"  Validate Json Event From Topic   ${expected_event_json_path}  ${expected_pm_str}  ${KNOWN_HOST_VARIABLE}
    Set Test Variable  ${KNOWN_HOST_VARIABLE}  False

Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
    [Tags]                           5gbulkpm_checking_sftp_rsa_key
    ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
    Should Not Contain               ${dfc_logs}                             ${EXPECTED_PRINT}

Changing SFTP Server RSA Key
    [Tags]                            5gbulkpm_checking_sftp_rsa_key
    ${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

Uploading PM Files to xNF SFTP Server After SFTP Server RSA Key Changed
    [Tags]                              5gbulkpm_checking_sftp_rsa_key

    Set Test Variable  ${KNOWN_HOST_VARIABLE}  True
    ${pm_file_path}=  Set Variable If  "${BULK_PM_MODE}" == "custom"  ${ENV_VARIABLES["PM_FILE_PATH"]}  ${DEFAULT_ENV_VARIABLES["PM_FILE_PATH"]}
    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${pm_file_path}  ${BULK_PM_MODE}  ${KNOWN_HOST_VARIABLE}
    Set Global Variable  ${PM_FILE}  ${pm_file}
    Set Test Variable  ${KNOWN_HOST_VARIABLE}  False

Sending File Ready Event to VES Collector After SFTP Server RSA Key Changed
    [Tags]                              5gbulkpm_checking_sftp_rsa_key

    ${file_format_type}  ${file_format_version}=   Run Keyword If  "${BULK_PM_MODE}" == "custom"  Set Variable  ${ENV_VARIABLES["FILE_FORMAT_TYPE"]}  ${ENV_VARIABLES["FILE_FORMAT_VERSION"]}
    ...                                                      ELSE                                 Set Variable  ${DEFAULT_ENV_VARIABLES["FILE_FORMAT_TYPE"]}  ${DEFAULT_ENV_VARIABLES["FILE_FORMAT_VERSION"]}
    Send File Ready Event to VES Collector  ${PM_FILE}  ${file_format_type}  ${file_format_version}

Checking DFC Logs After SFTP Server RSA Key Changed
    [Tags]                              5gbulkpm_checking_sftp_rsa_key
    Wait Until Keyword Succeeds         5 sec  30 sec            Check Given Print In DFC LOG  ${CHECK_DFC_LOGS}