2 Documentation The main interface for interacting with 5G Bulkpm.
3 Library RequestsLibrary
4 Library OperatingSystem
7 Resource ../mr_interface.robot
8 Resource ../dr_interface.robot
9 Resource ../bc_interface.robot
10 Resource ../consul_interface.robot
11 Resource ../chart_museum.robot
14 ${INVENTORY_SERVER} ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
15 ${DEPLOYMENT_SERVER} ${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL}://${GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME}:${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT}
16 ${DR_ENDPOINT} ${GLOBAL_DMAAP_DR_PROV_SERVER_PROTOCOL}://${GLOBAL_INJECTED_DMAAP_DR_PROV_IP_ADDR}:${GLOBAL_DMAAP_DR_PROV_SERVER_PORT}
17 ${DMAAP_BC_SERVER} ${GLOBAL_BC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_BC_IP_ADDR}:${GLOBAL_BC_HTTPS_SERVER_PORT}
18 ${VES_HEALTH_CHECK_PATH} ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
19 ${MR_PUBLISH_TEMPLATE} mr/mr_publish.jinja
20 ${INVENTORY_ENDPOINT} /dcae-service-types
21 ${XNF_SFTP_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-sftp.yaml
22 ${XNF_HTTPS_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-https.yaml
23 ${BLUEPRINT_TEMPLATE_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/blueprintTemplate.json
24 ${DEPLOYMENT_ENDPOINT} dcae-deployments
25 ${MR_TOPIC_CHECK_PATH} /topics
26 ${DR_SUB_CHECK_PATH} /internal/prov
27 ${MR_TOPIC_URL_PATH} /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/CG1/C1
28 ${MR_TOPIC_URL_PATH_FOR_POST} /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
29 ${DMAAP_BC_MR_CLIENT_PATH} /webapi/mr_clients
30 ${DMAAP_BC_MR_CLUSTER_PATH} /webapi/mr_clusters
31 ${PMMAPPER_HEALTH_CHECK_PATH} /healthcheck
32 ${JSON_DATA_FILE} ${EXECDIR}/robot/assets/usecases/5gbulkpm/Notification.json
33 ${VES_LISTENER_PATH} /eventListener/v7
34 ${PMMAPPER_SUB_ROLE_DATA} ${EXECDIR}/robot/assets/usecases/5gbulkpm/sub.json
35 ${PMMAPPER_MR_CLUSTER_DATA} ${EXECDIR}/robot/assets/usecases/5gbulkpm/mr_clusters.json
36 ${NEXUS3} ${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}
37 ${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
38 ${CHECK_ENV_SET} kubectl set env pod/$(kubectl get pod -n onap | grep datafile | awk '{print $1}') --list -n onap
39 ${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
40 ${CHECK_DFC_LOGS} kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --tail=4
41 ${CHECK_ALL_DFC_LOGS} kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --all-containers
42 ${CHECK_ALL_PMMAPPER_LOGS} kubectl logs $(kubectl get pod -n onap | grep pm-mapper | awk '{print $1}') -n onap --all-containers
43 ${EXPECTED_PRINT} StrictHostKeyChecking is enabled but environment variable KNOWN_HOSTS_FILE_PATH is not set or points to not existing file
44 ${MONGO_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-mongo.yaml
45 ${PNF_SIMULATOR_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-pnf-simulator.yaml
46 ${MONGO_VES_CLIENT_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-mongo-ves-client.yaml
47 ${VES_CLIENT_BLUEPRINT_PATH} ${EXECDIR}/robot/assets/cmpv2/k8s-ves-client.yaml
48 ${VES_INPUTS} deployment/VesTlsCmpv2Inputs.jinja
49 ${pm_notification_event} dfc/notification.jinja
50 ${consul_change_event} dfc/consul.jinja
51 ${ves_client_single_event}= ves/pnf_simulator_single_event.jinja
52 ${SFTP_HELM_CHARTS} ${EXECDIR}/robot/assets/helm/sftp
53 ${HTTPS_SERVER_HELM_CHARTS} ${EXECDIR}/robot/assets/helm/pm-https-server
54 ${HELM_RELEASE} kubectl --namespace onap get pods | sed 's/ .*//' | grep robot | sed 's/-.*//'
60 ... This keyword gathers all events from message router topic and validates if in recived data is present an expected string: "${expected_pm_str}" .
61 [Arguments] ${expected_pm_str}
62 ${timestamp}= Get Time epoch
63 ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
64 Should Contain ${resp.text} ${expected_pm_str}
68 ${timestamp}= Get Current Date
69 ${dict}= Create Dictionary timestamp=${timestamp}
70 Templating.Create Environment mr ${GLOBAL_TEMPLATE_FOLDER}
71 ${data}= Templating.Apply Template mr ${MR_PUBLISH_TEMPLATE} ${dict}
72 ${resp}= Run MR Auth Post Request (User And Pass) ${MR_TOPIC_URL_PATH_FOR_POST} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD} ${data}
73 Should Be Equal As Strings ${resp.status_code} 200
74 ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
75 Should Contain ${resp.text} ${value}
77 Send File Ready Event to VES Collector and Deploy all DCAE Applications
78 [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
80 Delete PERFORMANCE_MEASUREMENTS topic
81 Setting Global Variables
82 Send File Ready Event to VES Collector ${pm_file} ${file_format_type} ${file_format_version}
83 Add chart repository chart-museum http://chart-museum:80 onapinitializer demo123456!
84 Log To Console Deploying Data File Collector
85 Deploying Data File Collector
86 Log To Console Deploying 3GPP PM Mapper
87 Deploying 3GPP PM Mapper
88 Log To Console Deploying SFTP Server As xNF
89 Deploying SFTP Server As xNF
90 Log To Console Deploying HTTPS Server with correct CMPv2 certificates as xNF
91 Deploying HTTPS server with correct certificates
92 Log To Console Deploying HTTPS Server with wrong subject alternatives in CMPv2 certificates as xNF
93 Deploying HTTPS server with wrong certificates - wrong SAN-s
94 Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
96 DR PM Mapper Subscriber Check
100 Get all logs from PM Mapper
101 Get all logs from Data File Collector
102 Uninstall helm charts ${ONAP_HELM_RELEASE}-dcae-datafile-collector
103 Uninstall helm charts ${ONAP_HELM_RELEASE}-dcae-pm-mapper
104 Uninstall helm charts ${ONAP_HELM_RELEASE}-sftp
105 Uninstall helm charts ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
106 Uninstall helm charts ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
108 Delete PERFORMANCE_MEASUREMENTS topic
109 ${resp}= Delete MR topic /webapi/topics/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
111 Setting Global Variables
112 ${test_variables} = Create Dictionary
113 Set To Dictionary ${test_variables} FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
114 ... FILE_FORMAT_VERSION=V10
115 ... PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
116 ... EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
117 Set Global Variable ${GLOBAL_TEST_VARIABLES} ${test_variables}
118 ${command_output} = Run And Return Rc And Output ${HELM_RELEASE}
119 Should Be Equal As Integers ${command_output[0]} 0
120 Set Global Variable ${ONAP_HELM_RELEASE} ${command_output[1]}
122 Send File Ready Event to VES Collector
123 [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
125 ${headers}= Create Dictionary content-type=application/json
126 ${fileready}= OperatingSystem.Get File ${JSON_DATA_FILE}
127 ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
128 ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
129 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${fileready} headers=${headers}
130 Should Be Equal As Strings ${resp.status_code} 202
131 ${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}"}}]}}}
132 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
133 Should Be Equal As Strings ${resp.status_code} 202
135 Upload PM Files to xNF SFTP Server
136 [Arguments] ${pm_file_path}
137 Open Connection ${ONAP_HELM_RELEASE}-sftp
139 ${epoch}= Get Current Date result_format=epoch
140 ${pm_file}= Set Variable A${epoch}.xml.gz
141 Put File ${pm_file_path} upload/${pm_file}
144 Check Given Print In DFC Log
145 [Arguments] ${check_dfc_logs}
146 ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
147 Should Contain ${dfc_logs} HostKey has been changed
149 Run Given Command On DFC Container
150 [Arguments] ${user_command}
151 ${run_command} = Run And Return Rc And Output ${user_command}
152 ${command_output} = Set Variable ${run_command[1]}
153 ${regexp_matches} = Get Regexp Matches ${command_output} .*(\\s|\\[)+(.+-datafile-collector).* 2
154 ${dfc_container_name} = Set Variable ${regexp_matches[0]}
155 ${new_command} = Set Variable ${user_command} ${dfc_container_name}
156 ${command_output} = Run And Return Rc And Output ${new_command}
157 Should Be Equal As Integers ${command_output[0]} 0
158 ${log} = Set Variable ${command_output[1]}
161 Check Known Hosts In Env
162 [Arguments] ${CHECK_KNOWN_HOSTS}
163 ${check} = Run And Return Rc And Output ${CHECK_KNOWN_HOSTS}
164 Should Be Equal As Integers ${check[0]} 0
165 ${env} = Set Variable ${check[1]}
166 ${string_matches} = Get Lines Containing String ${env} KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host case_insensitive=True
167 ${output} = Should Not Be Empty ${string_matches}
170 Deploying Data File Collector
171 Install helm charts chart-museum dcae-datafile-collector ${ONAP_HELM_RELEASE}-dcae-datafile-collector 3 min --set useCmpv2Certificates=true --set global.cmpv2Enabled=true --set masterPasswordOverride=test --debug
173 Deploying 3GPP PM Mapper
174 Install helm charts chart-museum dcae-pm-mapper ${ONAP_HELM_RELEASE}-dcae-pm-mapper 3 min --debug
176 Deploying SFTP Server As xNF
177 ${override} = Set Variable --set fullnameOverride=${ONAP_HELM_RELEASE}-sftp --debug
178 Install helm charts from folder ${SFTP_HELM_CHARTS} ${ONAP_HELM_RELEASE}-sftp set_values_override=${override}
180 Deploying HTTPS server with correct certificates
181 ${name} = Set Variable ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
182 ${override} = Set Variable --set fullnameOverride=${name} --set nameOverride=${name} --set certificates.name=${name} --set certificates.commonName=${name} --set certificates.dnsNames={${name}} --debug
183 Install helm charts from folder ${HTTPS_SERVER_HELM_CHARTS} ${name} set_values_override=${override}
185 Deploying HTTPS server with wrong certificates - wrong SAN-s
186 ${name} = Set Variable ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
187 ${override} = Set Variable --set fullnameOverride=${name} --set nameOverride=${name} --set certificates.name=${name} --set certificates.commonName=wrong-sans-1 --set certificates.dnsNames={wrong-sans-2} --debug
188 Install helm charts from folder ${HTTPS_SERVER_HELM_CHARTS} ${name} set_values_override=${override}
190 Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
191 ${headers}= Create Dictionary content-type=application/json
192 ${subdata}= OperatingSystem.Get File ${PMMAPPER_SUB_ROLE_DATA}
193 ${session}= Create Session dmaapbc ${DMAAP_BC_SERVER}
194 ${resp}= Post Request dmaapbc ${DMAAP_BC_MR_CLIENT_PATH} data=${subdata} headers=${headers}
195 Wait Until Keyword Succeeds 5 minute 5 sec Topic Validate success
196 ${resp}= Run MR Get Request ${MR_TOPIC_CHECK_PATH}
197 Should Be Equal As Strings ${resp.status_code} 200
198 ${topics}= Set Variable ${resp.json().get('topics')}
199 List Should Contain Value ${topics} org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
200 ${resp}= Run MR Auth Get Request ${MR_TOPIC_URL_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
201 Should Be Equal As Strings ${resp.status_code} 200
203 DR Bulk PM Feed Check
204 ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
205 Should Contain ${resp.text} bulk_pm_feed
207 DR PM Mapper Subscriber Check
208 ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
209 Should Contain ${resp.text} https://dcae-pm-mapper:8443/delivery
211 Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
212 ${rc}= Run and Return RC ${SET_KNOWN_HOSTS_FILE_PATH}
213 Should Be Equal As Integers ${rc} 0
214 Wait Until Keyword Succeeds 5 min 10s Check Known Hosts In Env ${CHECK_ENV_SET}
215 ${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
216 ${rc}= Run and Return RC ${GET_RSA_KEY}
217 Should Be Equal As Integers ${rc} 0
218 ${rc}= Run and Return RC ${COPY_RSA_KEY}
219 Should Be Equal As Integers ${rc} 0
221 Uploading PM Files to xNF SFTP Server
222 ${pm_file}= Upload PM Files to xNF SFTP Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}
223 Set Global Variable ${PM_FILE} ${pm_file}
225 Sending File Ready Event to VES Collector
226 Send File Ready Event to VES Collector ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
228 Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
229 Wait Until Keyword Succeeds 2 min 5 sec xNF PM File Validate ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}
231 Changing SFTP Server RSA Key in DFC
232 ${get_known_hosts_file}= OperatingSystem.Get File /tmp/known_hosts
233 ${change_rsa_key}= Replace String ${get_known_hosts_file} A a
234 Create File /tmp/known_hosts ${change_rsa_key}
235 ${rc}= Run and Return RC ${COPY_RSA_KEY}
236 Should Be Equal As Integers ${rc} 0
238 Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
239 ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
240 Should Not Contain ${dfc_logs} ${EXPECTED_PRINT}
242 Get all logs from PM Mapper
243 ${pmmapper_logs}= Check logs ${CHECK_ALL_PMMAPPER_LOGS}
246 Get all logs from Data File Collector
247 ${pmmapper_logs}= Check logs ${CHECK_ALL_DFC_LOGS}
250 Checking DFC Logs After SFTP Server RSA Key Changed
251 Wait Until Keyword Succeeds 5 min 30 sec Check Given Print In DFC LOG ${CHECK_DFC_LOGS}
254 [Arguments] ${LOG_CHECK}
255 ${rc} = Run And Return Rc And Output ${LOG_CHECK}
256 Should Be Equal As Integers ${rc[0]} 0
259 Change DFC httpsHostnameVerify configuration in Consul
260 [Documentation] Changes DFC httpsHostnameVerify config.
261 [Arguments] ${httpsHostnameVerify}
262 ${httpsHostnameVerify_conf} Create Dictionary httpsHostnameVerify=${httpsHostnameVerify}
263 Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
264 ${event}= Templating.Apply Template pm ${consul_change_event} ${httpsHostnameVerify_conf}
265 ${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}'
266 Should Be Equal As Integers ${rc} 0
267 ${resp}= Run Consul Put Request /v1/kv/${container_name}-datafile-collector?raw=1 ${event}
268 Should Be Equal As Strings ${resp.status_code} 200
269 ${rc} = Run and Return RC kubectl delete pods -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME)
270 Should Be Equal As Integers ${rc} 0
271 Wait Until Keyword Succeeds 120 sec 5 sec Check logs kubectl logs -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME) ${container_name}-datafile-collector
273 Sending File Ready Event to VES Collector for HTTPS Server
274 [Arguments] ${https-server_host}
275 Send File Ready Event to VES Collector for HTTPS Server ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]} ${https-server_host}
277 Send File Ready Event to VES Collector for HTTPS Server
278 [Arguments] ${pm_file} ${file_format_type} ${file_format_version} ${https_server_host}
280 ${pm_event} Create Dictionary https_server_host=${https_server_host} pm_file=${pm_file} fileFormatType=${file_format_type} fileFormatVersion=${file_format_version}
281 Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
282 ${VES_FILE_READY_NOTIFICATION}= Templating.Apply Template pm ${pm_notification_event} ${pm_event}
283 ${headers}= Create Dictionary content-type=application/json
284 ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
285 ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
286 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
287 Should Be Equal As Strings ${resp.status_code} 202
290 Uploading PM Files to xNF HTTPS Server
291 [Arguments] ${https-server_host}
292 ${pm_file}= Upload PM Files to xNF HTTPS Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]} ${https-server_host}
293 Set Global Variable ${PM_FILE} ${pm_file}
295 Upload PM Files to xNF HTTPS Server
296 [Arguments] ${pm_file_path} ${https_server}
297 ${epoch}= Get Current Date result_format=epoch
298 ${pm_file} = Set Variable A${epoch}.xml.gz
299 Copy File ${pm_file_path} tmp/${pm_file}
300 ${fileData}= Get Binary File tmp/${pm_file}
301 ${file_part}= Create List ${pm_file} ${fileData} application/octet-stream
302 ${fileParts}= Create Dictionary
303 Set to Dictionary ${fileParts} uploaded_file=${file_part}
304 ${auth}= Create List demo demo123456!
305 ${session}= Create Session https http://${https_server}:80 auth=${auth}
306 ${resp}= Post Request https /upload.php files=${fileParts}
307 Should Be Equal As Strings ${resp.status_code} 200