[ROBOT] Remove 5Gbulkpm references to topic deletion
[testsuite.git] / robot / resources / usecases / 5gbulkpm_helm_interface.robot
1 *** Settings ***
2 Documentation     The main interface for interacting with 5G Bulkpm.
3 Library               RequestsLibrary
4 Library           OperatingSystem
5 Library           String
6 Library           JSONLibrary
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
12
13 *** Variables ***
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/-.*//'
55
56 *** Keywords ***
57
58 xNF PM File Validate
59     [Documentation]
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}
65
66 Topic Validate
67     [Arguments]                         ${value}
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}
76
77 Send File Ready Event to VES Collector and Deploy all DCAE Applications
78     [Arguments]                                 ${pm_file}              ${file_format_type}             ${file_format_version}
79     Disable Warnings
80     Setting Global Variables
81     Send File Ready Event to VES Collector      ${pm_file}              ${file_format_type}             ${file_format_version}
82     Add chart repository                        chart-museum                  http://chart-museum:80      onapinitializer      demo123456!
83     Log To Console                              Deploying Data File Collector
84     Deploying Data File Collector
85     Log To Console                              Deploying 3GPP PM Mapper
86     Deploying 3GPP PM Mapper
87     Log To Console                              Deploying SFTP Server As xNF
88     Deploying SFTP Server As xNF
89     Log To Console                              Deploying HTTPS Server with correct CMPv2 certificates as xNF
90     Deploying HTTPS server with correct certificates
91     Log To Console                              Deploying HTTPS Server with wrong subject alternatives in CMPv2 certificates as xNF
92     Deploying HTTPS server with wrong certificates - wrong SAN-s
93     DR Bulk PM Feed Check
94     DR PM Mapper Subscriber Check
95
96 Usecase Teardown
97     Disable Warnings
98     Get all logs from PM Mapper
99     Get all logs from Data File Collector
100     Uninstall helm charts               ${ONAP_HELM_RELEASE}-dcae-datafile-collector
101     Uninstall helm charts               ${ONAP_HELM_RELEASE}-dcae-pm-mapper
102     Uninstall helm charts               ${ONAP_HELM_RELEASE}-sftp
103     Uninstall helm charts               ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
104     Uninstall helm charts               ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
105
106 Setting Global Variables
107     ${test_variables} =  Create Dictionary
108     Set To Dictionary  ${test_variables}   FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
109     ...                                    FILE_FORMAT_VERSION=V10
110     ...                                    PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
111     ...                                    EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
112     Set Global Variable   ${GLOBAL_TEST_VARIABLES}  ${test_variables}
113     ${command_output} =                 Run And Return Rc And Output        ${HELM_RELEASE}
114     Should Be Equal As Integers         ${command_output[0]}                0
115     Set Global Variable   ${ONAP_HELM_RELEASE}   ${command_output[1]}
116
117 Send File Ready Event to VES Collector
118     [Arguments]                         ${pm_file}                          ${file_format_type}             ${file_format_version}
119     Disable Warnings
120     ${headers}=                         Create Dictionary                   content-type=application/json
121     ${fileready}=                       OperatingSystem.Get File            ${JSON_DATA_FILE}
122     ${auth}=                            Create List                         ${GLOBAL_DCAE_VES_USERNAME}     ${GLOBAL_DCAE_VES_PASSWORD}
123     ${session}=                         Create Session                      ves                             ${VES_HEALTH_CHECK_PATH}      auth=${auth}
124     ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${fileready}   headers=${headers}
125     Should Be Equal As Strings          ${resp.status_code}                 202
126     ${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}"}}]}}}
127     ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${VES_FILE_READY_NOTIFICATION}   headers=${headers}
128     Should Be Equal As Strings          ${resp.status_code}                 202
129
130 Upload PM Files to xNF SFTP Server
131     [Arguments]                         ${pm_file_path}
132     Open Connection                     ${ONAP_HELM_RELEASE}-sftp
133     Login                               bulkpm                             bulkpm
134     ${epoch}=                           Get Current Date                   result_format=epoch
135     ${pm_file}=                         Set Variable                        A${epoch}.xml.gz
136     Put File                            ${pm_file_path}                    upload/${pm_file}
137     [Return]  ${pm_file}
138
139 Check Given Print In DFC Log
140     [Arguments]                         ${check_dfc_logs}
141     ${dfc_logs}=                        Run Given Command On DFC Container                                      ${CHECK_DFC_LOGS}
142     Should Contain                      ${dfc_logs}                                                             HostKey has been changed
143
144 Run Given Command On DFC Container
145     [Arguments]                         ${user_command}
146     ${run_command} =                    Run And Return Rc And Output        ${user_command}
147     Should Be Equal As Integers         ${run_command[0]}                   0
148     ${command_output} =                 Set Variable                        ${run_command[1]}
149     ${regexp_matches} =                 Get Regexp Matches                  ${command_output}                   .*(\\s|\\[)+(.+-datafile-collector).*  2
150     ${matches_length} =                 Get length                          ${regexp_matches}
151     ${log} =                            Run Keyword If   "${matches_length}"!='0'  Get DFC log by container name   ${command_output}  ${regexp_matches}
152                                         ...  ELSE   Set Variable   ${command_output}
153     [Return]                            ${log}
154
155 Get DFC log by container name
156     [Arguments]                         ${command_output}                   ${regexp_matches}
157     ${dfc_container_name} =             Set Variable                        ${regexp_matches[0]}
158     ${new_command} =                    Set Variable                        ${user_command} ${dfc_container_name}
159     ${command_output} =                 Run And Return Rc And Output        ${new_command}
160     Should Be Equal As Integers         ${run_command[0]}                   0
161     ${log} =                            Set Variable                        ${run_command[1]}
162     [Return]                            ${log}
163
164 Check Known Hosts In Env
165     [Arguments]                         ${CHECK_KNOWN_HOSTS}
166     ${check} =                          Run And Return Rc And Output        ${CHECK_KNOWN_HOSTS}
167     Should Be Equal As Integers         ${check[0]}                         0
168     ${env} =                            Set Variable                        ${check[1]}
169     ${string_matches} =                 Get Lines Containing String         ${env}                              KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host  case_insensitive=True
170     ${output} =                         Should Not Be Empty                 ${string_matches}
171     [Return]                            ${output}
172
173 Deploying Data File Collector
174     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
175
176 Deploying 3GPP PM Mapper
177     ${override} =                       Set Variable                       --set global.centralizedLoggingEnabled=false --debug
178     Install helm charts                 chart-museum                       dcae-pm-mapper         ${ONAP_HELM_RELEASE}-dcae-pm-mapper             6m   set_values_override=${override}
179
180 Deploying SFTP Server As xNF
181     ${override} =                       Set Variable                       --set fullnameOverride=${ONAP_HELM_RELEASE}-sftp --debug
182     Install helm charts from folder     ${SFTP_HELM_CHARTS}                ${ONAP_HELM_RELEASE}-sftp                 6m  set_values_override=${override}
183
184 Deploying HTTPS server with correct certificates
185     ${name} =                           Set Variable                       ${ONAP_HELM_RELEASE}-pm-https-server-correct-sans
186     ${override} =                       Set Variable                       --set fullnameOverride=${name} --set nameOverride=${name} --set certificates.name=${name} --set certificates.commonName=${name} --set certificates.dnsNames={${name}} --debug
187     Install helm charts from folder     ${HTTPS_SERVER_HELM_CHARTS}        ${name}                 set_values_override=${override}
188
189 Deploying HTTPS server with wrong certificates - wrong SAN-s
190     ${name} =                           Set Variable                       ${ONAP_HELM_RELEASE}-pm-https-server-wrong-sans
191     ${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
192     Install helm charts from folder     ${HTTPS_SERVER_HELM_CHARTS}        ${name}                 set_values_override=${override}
193
194 DR Bulk PM Feed Check
195     ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
196     Should Contain                      ${resp.text}                        bulk_pm_feed
197
198 DR PM Mapper Subscriber Check
199     ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
200     Should Contain                      ${resp.text}                        http://dcae-pm-mapper:8081/delivery
201
202 Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
203     ${rc}=                             Run and Return RC                   ${SET_KNOWN_HOSTS_FILE_PATH}
204     Should Be Equal As Integers        ${rc}                               0
205     Wait Until Keyword Succeeds        7 min                               10s               Check Known Hosts In Env             ${CHECK_ENV_SET}
206     ${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
207     ${rc}=                             Run and Return RC                   ${GET_RSA_KEY}
208     Should Be Equal As Integers        ${rc}                               0
209     ${rc}=                             Run and Return RC                   ${COPY_RSA_KEY}
210     Should Be Equal As Integers        ${rc}                               0
211
212 Uploading PM Files to xNF SFTP Server
213     ${pm_file}=                         Upload PM Files to xNF SFTP Server      ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}
214     Set Global Variable                 ${PM_FILE}                              ${pm_file}
215
216 Sending File Ready Event to VES Collector
217     Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
218
219 Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
220     Wait Until Keyword Succeeds         2 min                            5 sec            xNF PM File Validate   ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}
221
222 Changing SFTP Server RSA Key in DFC
223     ${get_known_hosts_file}=          OperatingSystem.Get File  /tmp/known_hosts
224     ${change_rsa_key}=                Replace String            ${get_known_hosts_file}        A  a
225     Create File                       /tmp/known_hosts          ${change_rsa_key}
226     ${rc}=                            Run and Return RC         ${COPY_RSA_KEY}
227     Should Be Equal As Integers       ${rc}                     0
228
229 Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
230     ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
231     Should Not Contain               ${dfc_logs}                             ${EXPECTED_PRINT}
232
233 Get all logs from PM Mapper
234     ${pmmapper_logs}=                Check logs      ${CHECK_ALL_PMMAPPER_LOGS}
235     Log                              ${pmmapper_logs}
236
237 Get all logs from Data File Collector
238     ${pmmapper_logs}=                Check logs      ${CHECK_ALL_DFC_LOGS}
239     Log                              ${pmmapper_logs}
240
241 Checking DFC Logs After SFTP Server RSA Key Changed
242     Wait Until Keyword Succeeds         5 min  30 sec            Check Given Print In DFC LOG  ${CHECK_DFC_LOGS}
243
244 Check logs
245     [Arguments]  ${LOG_CHECK}
246     ${rc} =                                    Run And Return Rc And Output                    ${LOG_CHECK}
247     Should Be Equal As Integers                ${rc[0]}                               0
248     [Return]                                   ${rc[1]}
249
250 Change DFC httpsHostnameVerify configuration in Consul
251     [Documentation]     Changes DFC httpsHostnameVerify config.
252     [Arguments]                     ${httpsHostnameVerify}
253     ${httpsHostnameVerify_conf}     Create Dictionary               httpsHostnameVerify=${httpsHostnameVerify}
254     Templating.Create Environment   pm                              ${GLOBAL_TEMPLATE_FOLDER}
255     ${event}=                       Templating.Apply Template       pm                              ${consul_change_event}      ${httpsHostnameVerify_conf}
256     ${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}'
257     Should Be Equal As Integers   ${rc}                           0
258     ${resp}=                        Run Consul Put Request          /v1/kv/${container_name}-datafile-collector?raw=1          ${event}
259     Should Be Equal As Strings      ${resp.status_code}             200
260     ${rc} =                       Run and Return RC               kubectl delete pods -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME)
261     Should Be Equal As Integers   ${rc}                           0
262     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
263
264 Sending File Ready Event to VES Collector for HTTPS Server
265     [Arguments]  ${https-server_host}
266     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}
267
268 Send File Ready Event to VES Collector for HTTPS Server
269     [Arguments]                         ${pm_file}                          ${file_format_type}             ${file_format_version}     ${https_server_host}
270     Disable Warnings
271     ${pm_event}                         Create Dictionary                   https_server_host=${https_server_host}  pm_file=${pm_file}   fileFormatType=${file_format_type}   fileFormatVersion=${file_format_version}
272     Templating.Create Environment       pm                                  ${GLOBAL_TEMPLATE_FOLDER}
273     ${VES_FILE_READY_NOTIFICATION}=     Templating.Apply Template           pm                              ${pm_notification_event}   ${pm_event}
274     ${headers}=                         Create Dictionary                   content-type=application/json
275     ${auth}=                            Create List                         ${GLOBAL_DCAE_VES_USERNAME}     ${GLOBAL_DCAE_VES_PASSWORD}
276     ${session}=                         Create Session                      ves                             ${VES_HEALTH_CHECK_PATH}      auth=${auth}
277     ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${VES_FILE_READY_NOTIFICATION}   headers=${headers}
278     Should Be Equal As Strings          ${resp.status_code}                 202
279
280
281 Uploading PM Files to xNF HTTPS Server
282     [Arguments]                         ${https-server_host}
283     ${pm_file}=                         Upload PM Files to xNF HTTPS Server     ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}    ${https-server_host}
284     Set Global Variable                 ${PM_FILE}                              ${pm_file}
285
286 Upload PM Files to xNF HTTPS Server
287     [Arguments]                         ${pm_file_path}                     ${https_server}
288     ${epoch}=                           Get Current Date                    result_format=epoch
289     ${pm_file} =                        Set Variable                        A${epoch}.xml.gz
290     Copy File                           ${pm_file_path}                     tmp/${pm_file}
291     ${fileData}=                        Get Binary File                     tmp/${pm_file}
292     ${file_part}=                       Create List                         ${pm_file}                         ${fileData}                   application/octet-stream
293     ${fileParts}=                       Create Dictionary
294     Set to Dictionary                   ${fileParts}                        uploaded_file=${file_part}
295     ${auth}=                            Create List                         demo                                demo123456!
296     ${session}=                         Create Session                      https                               http://${https_server}:80   auth=${auth}
297     ${resp}=                            Post Request                        https                               /upload.php                 files=${fileParts}
298     Should Be Equal As Strings          ${resp.status_code}                 200
299     [Return]                            ${pm_file}