2 Documentation The main interface for interacting with 5G Bulkpm.
3 Library RequestsLibrary
4 Library OperatingSystem
7 Resource ../dmaap/dr_interface.robot
8 Resource ../consul_interface.robot
9 Resource ../chart_museum.robot
10 Resource ../strimzi_kafka.robot
13 ${DR_ENDPOINT} ${GLOBAL_DMAAP_DR_PROV_SERVER_PROTOCOL}://${GLOBAL_INJECTED_DMAAP_DR_PROV_IP_ADDR}:${GLOBAL_DMAAP_DR_PROV_SERVER_PORT}
14 ${VES_HEALTH_CHECK_PATH} ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
15 ${DR_SUB_CHECK_PATH} /internal/prov
16 ${JSON_DATA_FILE} ${EXECDIR}/robot/assets/usecases/5gbulkpm/Notification.json
17 ${VES_LISTENER_PATH} /eventListener/v7
18 ${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
19 ${DR_NODE_FECTH_PROV} kubectl exec $(kubectl get pods -n onap | grep dmaap-dr-node | awk '{print $1}' | grep -v NAME) -n onap -- curl http://localhost:8080/internal/fetchProv
20 ${CHECK_ENV_SET} kubectl set env pod/$(kubectl get pod -n onap | grep datafile | awk '{print $1}') -c dcae-datafile-collector --list -n onap
21 ${COPY_RSA_KEY} kubectl cp /tmp/known_hosts $(kubectl get pod -n onap | grep datafile | awk '{print $1}'):/home/datafile/.ssh/known_hosts -c dcae-datafile-collector -n onap
22 ${CHECK_DFC_LOGS} kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -c dcae-datafile-collector -n onap --tail=10
23 ${CHECK_ALL_DFC_LOGS} kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --all-containers
24 ${CHECK_ALL_PMMAPPER_LOGS} kubectl logs $(kubectl get pod -n onap | grep pm-mapper | awk '{print $1}') -n onap --all-containers
25 ${EXPECTED_PRINT} StrictHostKeyChecking is enabled but environment variable KNOWN_HOSTS_FILE_PATH is not set or points to not existing file
26 ${pm_notification_event} dfc/notification.jinja
27 ${consul_change_event} dfc/consul.jinja
28 ${SFTP_HELM_CHARTS} ${EXECDIR}/robot/assets/helm/sftp
29 ${HTTPS_SERVER_HELM_CHARTS} ${EXECDIR}/robot/assets/helm/pm-https-server
30 ${HELM_RELEASE} kubectl --namespace onap get pods | sed 's/ .*//' | grep robot | sed 's/-.*//'
35 ... This keyword gets the last event from the PM topic and validates if the expected string is present: "${expected_pm_str}" .
36 [Arguments] ${expected_pm_str}
37 ${bytes} = Encode String To Bytes ${expected_pm_str} UTF-8
38 ${msg}= Run Keyword Get Last Message From Topic ${GLOBAL_KAFKA_BOOTSTRAP_SERVICE} unauthenticated.PERFORMANCE_MEASUREMENTS ${GLOBAL_KAFKA_USER}
39 Should Contain ${msg} ${bytes}
42 Send File Ready Event to VES Collector and Deploy all DCAE Applications
43 [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
45 Setting Global Variables
48 Send File Ready Event to VES Collector ${pm_file} ${file_format_type} ${file_format_version}
49 Add OOM test chart repository onap-testing https://nexus3.onap.org/repository/onap-helm-testing/
50 Add chart repository chart-museum http://chart-museum:80 onapinitializer demo123456!
51 Log To Console Deploying SFTP Server As xNF
52 Deploying SFTP Server As xNF
53 # Log To Console Deploying HTTPS Server with correct CMPv2 certificates as xNF
54 # Deploying HTTPS server with correct certificates
55 DR PM Mapper Subscriber Check
59 Get all logs from PM Mapper
60 Get all logs from Data File Collector
61 Uninstall helm charts ${ONAP_HELM_RELEASE}-sftp
62 # Uninstall helm charts ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
64 Setting Global Variables
65 ${test_variables} = Create Dictionary
66 Set To Dictionary ${test_variables} FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
67 ... FILE_FORMAT_VERSION=V10
68 ... PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
69 ... EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
70 Set Global Variable ${GLOBAL_TEST_VARIABLES} ${test_variables}
71 ${command_output} = Run And Return Rc And Output ${HELM_RELEASE}
72 Should Be Equal As Integers ${command_output[0]} 0
73 Set Global Variable ${ONAP_HELM_RELEASE} ${command_output[1]}
75 Send File Ready Event to VES Collector
76 [Arguments] ${pm_file} ${file_format_type} ${file_format_version}
78 ${headers}= Create Dictionary content-type=application/json
79 ${fileready}= OperatingSystem.Get File ${JSON_DATA_FILE}
80 ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
81 ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
82 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${fileready} headers=${headers}
83 Should Be Equal As Strings ${resp.status_code} 202
84 ${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}"}}]}}}
85 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
86 Should Be Equal As Strings ${resp.status_code} 202
88 Upload PM Files to xNF SFTP Server
89 [Arguments] ${pm_file_path}
90 Open Connection ${ONAP_HELM_RELEASE}-sftp
92 ${epoch}= Get Current Date result_format=epoch
93 ${pm_file}= Set Variable A${epoch}.xml.gz
94 Put File ${pm_file_path} upload/${pm_file}
97 Check Given Print In DFC Log
98 [Arguments] ${check_dfc_logs}
99 ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
100 Should Contain ${dfc_logs} HostKey has been changed
102 Run Given Command On DFC Container
103 [Arguments] ${user_command}
104 ${run_command} = Run And Return Rc And Output ${user_command}
105 Should Be Equal As Integers ${run_command[0]} 0
106 ${command_output} = Set Variable ${run_command[1]}
107 ${regexp_matches} = Get Regexp Matches ${command_output} .*(\\s|\\[)+(.+-datafile-collector).* 2
108 ${matches_length} = Get length ${regexp_matches}
109 ${log} = Run Keyword If "${matches_length}"!='0' Get DFC log by container name ${command_output} ${regexp_matches}
110 ... ELSE Set Variable ${command_output}
113 Get DFC log by container name
114 [Arguments] ${command_output} ${regexp_matches}
115 ${dfc_container_name} = Set Variable ${regexp_matches[0]}
116 ${new_command} = Set Variable ${user_command} ${dfc_container_name}
117 ${command_output} = Run And Return Rc And Output ${new_command}
118 Should Be Equal As Integers ${run_command[0]} 0
119 ${log} = Set Variable ${run_command[1]}
122 Check Known Hosts In Env
123 [Arguments] ${CHECK_KNOWN_HOSTS}
124 ${check} = Run And Return Rc And Output ${CHECK_KNOWN_HOSTS}
125 Should Be Equal As Integers ${check[0]} 0
126 ${env} = Set Variable ${check[1]}
127 ${string_matches} = Get Lines Containing String ${env} KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host case_insensitive=True
128 ${output} = Should Not Be Empty ${string_matches}
131 Deploying Data File Collector
132 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
134 Deploying 3GPP PM Mapper
135 ${override} = Set Variable --set global.centralizedLoggingEnabled=false --debug
136 Install helm charts chart-museum dcae-pm-mapper ${ONAP_HELM_RELEASE}-dcae-pm-mapper 6m set_values_override=${override}
138 Deploying SFTP Server As xNF
139 ${override} = Set Variable --set fullnameOverride=${ONAP_HELM_RELEASE}-sftp --debug
140 Install helm charts from folder ${SFTP_HELM_CHARTS} ${ONAP_HELM_RELEASE}-sftp 6m set_values_override=${override}
142 Deploying HTTPS server with correct certificates
143 ${name} = Set Variable ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
144 ${override} = Set Variable --set fullnameOverride=${name} --set nameOverride=${name} --set certificates.name=${name} --set certificates.commonName=${name} --set certificates.dnsNames={${name}} --debug
145 Install helm charts from folder ${HTTPS_SERVER_HELM_CHARTS} ${name} set_values_override=${override}
147 Deploying HTTPS server with wrong certificates - wrong SAN-s
148 ${name} = Set Variable ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
149 ${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
150 Install helm charts from folder ${HTTPS_SERVER_HELM_CHARTS} ${name} set_values_override=${override}
153 ${rc}= Run and Return RC ${DR_NODE_FECTH_PROV}
154 Should Be Equal As Integers ${rc} 0
157 DR PM Mapper Subscriber Check
158 ${resp}= Run DR Get Request ${DR_SUB_CHECK_PATH}
159 Should Contain ${resp.text} http://dcae-pm-mapper:8081/delivery
161 Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
162 ${rc}= Run and Return RC ${SET_KNOWN_HOSTS_FILE_PATH}
163 Should Be Equal As Integers ${rc} 0
164 Wait Until Keyword Succeeds 7 min 10s Check Known Hosts In Env ${CHECK_ENV_SET}
165 ${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
166 ${rc}= Run and Return RC ${GET_RSA_KEY}
167 Should Be Equal As Integers ${rc} 0
168 ${rc}= Run and Return RC ${COPY_RSA_KEY}
169 Should Be Equal As Integers ${rc} 0
171 Uploading PM Files to xNF SFTP Server
172 ${pm_file}= Upload PM Files to xNF SFTP Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}
173 Set Global Variable ${PM_FILE} ${pm_file}
175 Sending File Ready Event to VES Collector
176 Send File Ready Event to VES Collector ${PM_FILE} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]} ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
178 Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
179 Wait Until Keyword Succeeds 2 min 5 sec xNF PM File Validate ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}
181 Changing SFTP Server RSA Key in DFC
182 ${get_known_hosts_file}= OperatingSystem.Get File /tmp/known_hosts
183 ${change_rsa_key}= Replace String ${get_known_hosts_file} A a
184 Create File /tmp/known_hosts ${change_rsa_key}
185 ${rc}= Run and Return RC ${COPY_RSA_KEY}
186 Should Be Equal As Integers ${rc} 0
188 Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
189 ${dfc_logs}= Run Given Command On DFC Container ${CHECK_DFC_LOGS}
190 Should Not Contain ${dfc_logs} ${EXPECTED_PRINT}
192 Get all logs from PM Mapper
193 ${pmmapper_logs}= Check logs ${CHECK_ALL_PMMAPPER_LOGS}
196 Get all logs from Data File Collector
197 ${pmmapper_logs}= Check logs ${CHECK_ALL_DFC_LOGS}
200 Checking DFC Logs After SFTP Server RSA Key Changed
201 Wait Until Keyword Succeeds 5 min 30 sec Check Given Print In DFC LOG ${CHECK_DFC_LOGS}
204 [Arguments] ${LOG_CHECK}
205 ${rc} = Run And Return Rc And Output ${LOG_CHECK}
206 Should Be Equal As Integers ${rc[0]} 0
209 Change DFC httpsHostnameVerify configuration in Consul
210 [Documentation] Changes DFC httpsHostnameVerify config.
211 [Arguments] ${httpsHostnameVerify}
212 ${httpsHostnameVerify_conf} Create Dictionary httpsHostnameVerify=${httpsHostnameVerify}
213 Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
214 ${event}= Templating.Apply Template pm ${consul_change_event} ${httpsHostnameVerify_conf}
215 ${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}'
216 Should Be Equal As Integers ${rc} 0
217 ${resp}= Run Consul Put Request /v1/kv/${container_name}-datafile-collector?raw=1 ${event}
218 Should Be Equal As Strings ${resp.status_code} 200
219 ${rc} = Run and Return RC kubectl delete pods -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME)
220 Should Be Equal As Integers ${rc} 0
221 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
223 Sending File Ready Event to VES Collector for HTTPS Server
224 [Arguments] ${https-server_host}
225 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}
227 Send File Ready Event to VES Collector for HTTPS Server
228 [Arguments] ${pm_file} ${file_format_type} ${file_format_version} ${https_server_host}
230 ${pm_event} Create Dictionary https_server_host=${https_server_host} pm_file=${pm_file} fileFormatType=${file_format_type} fileFormatVersion=${file_format_version}
231 Templating.Create Environment pm ${GLOBAL_TEMPLATE_FOLDER}
232 ${VES_FILE_READY_NOTIFICATION}= Templating.Apply Template pm ${pm_notification_event} ${pm_event}
233 ${headers}= Create Dictionary content-type=application/json
234 ${auth}= Create List ${GLOBAL_DCAE_VES_USERNAME} ${GLOBAL_DCAE_VES_PASSWORD}
235 ${session}= Create Session ves ${VES_HEALTH_CHECK_PATH} auth=${auth}
236 ${resp}= Post Request ves ${VES_LISTENER_PATH} data=${VES_FILE_READY_NOTIFICATION} headers=${headers}
237 Should Be Equal As Strings ${resp.status_code} 202
240 Uploading PM Files to xNF HTTPS Server
241 [Arguments] ${https-server_host}
242 ${pm_file}= Upload PM Files to xNF HTTPS Server ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]} ${https-server_host}
243 Set Global Variable ${PM_FILE} ${pm_file}
245 Upload PM Files to xNF HTTPS Server
246 [Arguments] ${pm_file_path} ${https_server}
247 ${epoch}= Get Current Date result_format=epoch
248 ${pm_file} = Set Variable A${epoch}.xml.gz
249 Copy File ${pm_file_path} tmp/${pm_file}
250 ${fileData}= Get Binary File tmp/${pm_file}
251 ${file_part}= Create List ${pm_file} ${fileData} application/octet-stream
252 ${fileParts}= Create Dictionary
253 Set to Dictionary ${fileParts} uploaded_file=${file_part}
254 ${auth}= Create List demo demo123456!
255 ${session}= Create Session https http://${https_server}:80 auth=${auth}
256 ${resp}= Post Request https /upload.php files=${fileParts}
257 Should Be Equal As Strings ${resp.status_code} 200