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/unauthenticated.PERFORMANCE_MEASUREMENTS/CG1/C1
28 ${MR_TOPIC_URL_PATH_FOR_POST} /events/unauthenticated.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=10
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
95 DR PM Mapper Subscriber Check
99 Get all logs from PM Mapper
100 Get all logs from Data File Collector
101 Uninstall helm charts ${ONAP_HELM_RELEASE}-dcae-datafile-collector
102 Uninstall helm charts ${ONAP_HELM_RELEASE}-dcae-pm-mapper
103 Uninstall helm charts ${ONAP_HELM_RELEASE}-sftp
104 Uninstall helm charts ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
105 Uninstall helm charts ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
107 Setting Global Variables
108 ${test_variables} = Create Dictionary
109 Set To Dictionary ${test_variables} FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
110 ... FILE_FORMAT_VERSION=V10
111 ... PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
112 ... EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
113 Set Global Variable ${GLOBAL_TEST_VARIABLES} ${test_variables}
114 ${command_output} = Run And Return Rc And Output ${HELM_RELEASE}
115 Should Be Equal As Integers ${command_output[0]} 0
116 Set Global Variable ${ONAP_HELM_RELEASE} ${command_output[1]}
118 Send File Ready Event to VES Collector
119 [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
121 ${headers}= Create Dictionary content-type=application/json
122 ${fileready}= OperatingSystem.Get File ${JSON_DATA_FILE}
123 ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
124 ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
125 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${fileready} headers=${headers}
126 Should Be Equal As Strings ${resp.status_code} 202
127 ${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}"}}]}}}
128 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
129 Should Be Equal As Strings ${resp.status_code} 202
131 Upload PM Files to xNF SFTP Server
132 [Arguments] ${pm_file_path}
133 Open Connection ${ONAP_HELM_RELEASE}-sftp
135 ${epoch}= Get Current Date result_format=epoch
136 ${pm_file}= Set Variable A${epoch}.xml.gz
137 Put File ${pm_file_path} upload/${pm_file}
140 Check Given Print In DFC Log
141 [Arguments] ${check_dfc_logs}
142 ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
143 Should Contain ${dfc_logs} HostKey has been changed
145 Run Given Command On DFC Container
146 [Arguments] ${user_command}
147 ${run_command} = Run And Return Rc And Output ${user_command}
148 Should Be Equal As Integers ${run_command[0]} 0
149 ${command_output} = Set Variable ${run_command[1]}
150 ${regexp_matches} = Get Regexp Matches ${command_output} .*(\\s|\\[)+(.+-datafile-collector).* 2
151 ${matches_length} = Get length ${regexp_matches}
152 ${log} = Run Keyword If "${matches_length}"!='0' Get DFC log by container name ${command_output} ${regexp_matches}
153 ... ELSE Set Variable ${command_output}
156 Get DFC log by container name
157 [Arguments] ${command_output} ${regexp_matches}
158 ${dfc_container_name} = Set Variable ${regexp_matches[0]}
159 ${new_command} = Set Variable ${user_command} ${dfc_container_name}
160 ${command_output} = Run And Return Rc And Output ${new_command}
161 Should Be Equal As Integers ${run_command[0]} 0
162 ${log} = Set Variable ${run_command[1]}
165 Check Known Hosts In Env
166 [Arguments] ${CHECK_KNOWN_HOSTS}
167 ${check} = Run And Return Rc And Output ${CHECK_KNOWN_HOSTS}
168 Should Be Equal As Integers ${check[0]} 0
169 ${env} = Set Variable ${check[1]}
170 ${string_matches} = Get Lines Containing String ${env} KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host case_insensitive=True
171 ${output} = Should Not Be Empty ${string_matches}
174 Deploying Data File Collector
175 Install helm charts chart-museum dcae-datafile-collector ${ONAP_HELM_RELEASE}-dcae-datafile-collector 6m --set useCmpv2Certificates=true --set global.cmpv2Enabled=true --set masterPasswordOverride=test --set global.centralizedLoggingEnabled=false --debug
177 Deploying 3GPP PM Mapper
178 ${override} = Set Variable --set global.centralizedLoggingEnabled=false --debug
179 Install helm charts chart-museum dcae-pm-mapper ${ONAP_HELM_RELEASE}-dcae-pm-mapper 6m set_values_override=${override}
181 Deploying SFTP Server As xNF
182 ${override} = Set Variable --set fullnameOverride=${ONAP_HELM_RELEASE}-sftp --debug
183 Install helm charts from folder ${SFTP_HELM_CHARTS} ${ONAP_HELM_RELEASE}-sftp 6m set_values_override=${override}
185 Deploying HTTPS server with correct certificates
186 ${name} = Set Variable ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
187 ${override} = Set Variable --set fullnameOverride=${name} --set nameOverride=${name} --set certificates.name=${name} --set certificates.commonName=${name} --set certificates.dnsNames={${name}} --debug
188 Install helm charts from folder ${HTTPS_SERVER_HELM_CHARTS} ${name} set_values_override=${override}
190 Deploying HTTPS server with wrong certificates - wrong SAN-s
191 ${name} = Set Variable ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
192 ${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
193 Install helm charts from folder ${HTTPS_SERVER_HELM_CHARTS} ${name} set_values_override=${override}
195 DR Bulk PM Feed Check
196 ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
197 Should Contain ${resp.text} bulk_pm_feed
199 DR PM Mapper Subscriber Check
200 ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
201 Should Contain ${resp.text} http://dcae-pm-mapper:8081/delivery
203 Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
204 ${rc}= Run and Return RC ${SET_KNOWN_HOSTS_FILE_PATH}
205 Should Be Equal As Integers ${rc} 0
206 Wait Until Keyword Succeeds 7 min 10s Check Known Hosts In Env ${CHECK_ENV_SET}
207 ${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
208 ${rc}= Run and Return RC ${GET_RSA_KEY}
209 Should Be Equal As Integers ${rc} 0
210 ${rc}= Run and Return RC ${COPY_RSA_KEY}
211 Should Be Equal As Integers ${rc} 0
213 Uploading PM Files to xNF SFTP Server
214 ${pm_file}= Upload PM Files to xNF SFTP Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}
215 Set Global Variable ${PM_FILE} ${pm_file}
217 Sending File Ready Event to VES Collector
218 Send File Ready Event to VES Collector ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
220 Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
221 Wait Until Keyword Succeeds 2 min 5 sec xNF PM File Validate ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}
223 Changing SFTP Server RSA Key in DFC
224 ${get_known_hosts_file}= OperatingSystem.Get File /tmp/known_hosts
225 ${change_rsa_key}= Replace String ${get_known_hosts_file} A a
226 Create File /tmp/known_hosts ${change_rsa_key}
227 ${rc}= Run and Return RC ${COPY_RSA_KEY}
228 Should Be Equal As Integers ${rc} 0
230 Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
231 ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
232 Should Not Contain ${dfc_logs} ${EXPECTED_PRINT}
234 Get all logs from PM Mapper
235 ${pmmapper_logs}= Check logs ${CHECK_ALL_PMMAPPER_LOGS}
238 Get all logs from Data File Collector
239 ${pmmapper_logs}= Check logs ${CHECK_ALL_DFC_LOGS}
242 Checking DFC Logs After SFTP Server RSA Key Changed
243 Wait Until Keyword Succeeds 5 min 30 sec Check Given Print In DFC LOG ${CHECK_DFC_LOGS}
246 [Arguments] ${LOG_CHECK}
247 ${rc} = Run And Return Rc And Output ${LOG_CHECK}
248 Should Be Equal As Integers ${rc[0]} 0
251 Change DFC httpsHostnameVerify configuration in Consul
252 [Documentation] Changes DFC httpsHostnameVerify config.
253 [Arguments] ${httpsHostnameVerify}
254 ${httpsHostnameVerify_conf} Create Dictionary httpsHostnameVerify=${httpsHostnameVerify}
255 Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
256 ${event}= Templating.Apply Template pm ${consul_change_event} ${httpsHostnameVerify_conf}
257 ${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}'
258 Should Be Equal As Integers ${rc} 0
259 ${resp}= Run Consul Put Request /v1/kv/${container_name}-datafile-collector?raw=1 ${event}
260 Should Be Equal As Strings ${resp.status_code} 200
261 ${rc} = Run and Return RC kubectl delete pods -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME)
262 Should Be Equal As Integers ${rc} 0
263 Wait Until Keyword Succeeds 360 sec 15 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
265 Sending File Ready Event to VES Collector for HTTPS Server
266 [Arguments] ${https-server_host}
267 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}
269 Send File Ready Event to VES Collector for HTTPS Server
270 [Arguments] ${pm_file} ${file_format_type} ${file_format_version} ${https_server_host}
272 ${pm_event} Create Dictionary https_server_host=${https_server_host} pm_file=${pm_file} fileFormatType=${file_format_type} fileFormatVersion=${file_format_version}
273 Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
274 ${VES_FILE_READY_NOTIFICATION}= Templating.Apply Template pm ${pm_notification_event} ${pm_event}
275 ${headers}= Create Dictionary content-type=application/json
276 ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
277 ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
278 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
279 Should Be Equal As Strings ${resp.status_code} 202
282 Uploading PM Files to xNF HTTPS Server
283 [Arguments] ${https-server_host}
284 ${pm_file}= Upload PM Files to xNF HTTPS Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]} ${https-server_host}
285 Set Global Variable ${PM_FILE} ${pm_file}
287 Upload PM Files to xNF HTTPS Server
288 [Arguments] ${pm_file_path} ${https_server}
289 ${epoch}= Get Current Date result_format=epoch
290 ${pm_file} = Set Variable A${epoch}.xml.gz
291 Copy File ${pm_file_path} tmp/${pm_file}
292 ${fileData}= Get Binary File tmp/${pm_file}
293 ${file_part}= Create List ${pm_file} ${fileData} application/octet-stream
294 ${fileParts}= Create Dictionary
295 Set to Dictionary ${fileParts} uploaded_file=${file_part}
296 ${auth}= Create List demo demo123456!
297 ${session}= Create Session https http://${https_server}:80 auth=${auth}
298 ${resp}= Post Request https /upload.php files=${fileParts}
299 Should Be Equal As Strings ${resp.status_code} 200