Extend 5g bulk pm test suite in order to have possibility to test custom PM FILES 73/116173/36
authorKatarzyna Wasiel <katarzyna.wasiel@nokia.com>
Mon, 7 Dec 2020 14:50:59 +0000 (15:50 +0100)
committerBartek Grzybowski <b.grzybowski@partner.samsung.com>
Tue, 19 Jan 2021 07:31:59 +0000 (07:31 +0000)
Issue-ID: INT-1801
Signed-off-by: Katarzyna Wasiel <katarzyna.wasiel@nokia.com>
Change-Id: I2d892f8737e34d84792bbc88d63ab5ae9a71e5e3

robot/resources/usecases/5gbulkpm_interface.robot
robot/testsuites/usecases/5gbulkpm.robot

index 0655e53..3289f49 100644 (file)
@@ -3,6 +3,7 @@ Documentation     The main interface for interacting with 5G Bulkpm.
 Library              RequestsLibrary
 Library           OperatingSystem
 Library           String
+Library           JSONLibrary
 
 *** Variables ***
 ${INVENTORY_SERVER}                                 ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
@@ -26,10 +27,38 @@ Deployment Status
     ${status}           Set Variable                ${resp.json().get('status')}
     Should Be Equal As Strings                      ${status}               succeeded
 
+
+Validate Json Event From Topic
+    [Arguments]  ${expected_event_json_path}  ${expected_pm_str}  ${known_host_variable}=False
+    ${PmEventRespFiles} =  Run Keyword If  "${known_host_variable}" == "False"  OperatingSystem.List Files In Directory  ${expected_event_json_path}  5gbulkpm-*.json  absolute=True
+    ...                              ELSE                                       OperatingSystem.List Files In Directory  ${expected_event_json_path}  5gbulkpm_checking_sftp_rsa_key-*.json  absolute=True
+    Set Test Variable  ${pmResultFound}  False
+    FOR  ${filePath}  IN  @{PmEventRespFiles}
+         Set Log Level  NONE
+         ${pmData} =  OperatingSystem.Get File  ${filePath}
+         Set Log Level  INFO
+         ${statusOfPmResult}=  Run Keyword And Return Status  Should Contain  ${pmData}  ${expected_pm_str}
+         Run Keyword If  '${statusOfPmResult}' == 'True'  Run Keywords  Set Test Variable  ${pmResultFound}  True
+         ...                                                       AND  Exit For Loop
+    END
+
+   Should Be Equal  ${pmResultFound}  True
+
+Get Event From Topic
+    [Arguments]  ${expected_event_json_path}  ${known_host_variable}=False
+    Wait Until Keyword Succeeds  2 min  5 s  xNF PM File Validate  none  ${expected_event_json_path}  ${known_host_variable}
+
 xNF PM File Validate
-    [Arguments]         ${value}
-    ${resp}=            Run MR Auth Get Request     ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
-    Should Contain      ${resp.text}                ${value}
+    [Arguments]  ${expected_pm_str}  ${expected_event_json_path}  ${known_host_variable}=False
+    #Run Keyword If  '${expected_event_json_path}' != 'none'  Set Log Level  NONE
+    ${timestamp}=  Get Time  epoch
+    ${resp}=  Run MR Auth Get Request     ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
+    Run keyword If  ${resp.text} == @{EMPTY}  Fail  msg=Event is empty!
+    ${pmEventJson}=  Run Keyword If  '${expected_event_json_path}' != 'none'  To Json  ${resp.text}  pretty_print=True
+    Run Keyword If  '${expected_event_json_path}' != 'none' and '${known_host_variable}' == 'False'  Create File  ${expected_event_json_path}/5gbulkpm-pm_event-${timestamp}.json  ${pmEventJson}
+    ...    ELSE IF  '${expected_event_json_path}' != 'none' and '${known_host_variable}' == 'True'   Create File  ${expected_event_json_path}/5gbulkpm_checking_sftp_rsa_key-pm_event-${timestamp}.json  ${pmEventJson}
+    #Run Keyword If  '${expected_event_json_path}' != 'none'  Set Log Level  INFO
+    Run Keyword If  '${expected_event_json_path}' == 'none'  Should Contain  ${resp.text}  ${expected_pm_str}
 
 Topic Validate
     [Arguments]                         ${value}
@@ -51,28 +80,31 @@ Usecase Teardown
 
 
 Send File Ready Event to VES Collector
-    [Arguments]                         ${epoch}
+    [Arguments]                         ${pm_file}                          ${file_format_type}             ${file_format_version}
     ${headers}=                         Create Dictionary                   content-type=application/json
     ${fileready}=                       OperatingSystem.Get File            ${JSON_DATA_FILE}
     ${auth}=                            Create List                         ${GLOBAL_DCAE_VES_USERNAME}     ${GLOBAL_DCAE_VES_PASSWORD}
     ${session}=                         Create Session                      ves                             ${VES_HEALTH_CHECK_PATH}      auth=${auth}
     ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${fileready}   headers=${headers}
     Should Be Equal As Strings          ${resp.status_code}                 202
-    ${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":"A${epoch}.xml.gz","hashMap":{"location":"sftp://bulkpm:bulkpm@sftpserver:22/upload/A${epoch}.xml.gz","compression":"gzip","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10"}}]}}}
+    ${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@sftpserver:22/upload/${pm_file}","compression":"gzip","fileFormatType":"${file_format_type}","fileFormatVersion":"${file_format_version}"}}]}}}
     ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${VES_FILE_READY_NOTIFICATION}   headers=${headers}
     Should Be Equal As Strings          ${resp.status_code}                 202
 
 Upload PM Files to xNF SFTP Server
-    [Arguments]                         ${ftp_file_path}
+    [Arguments]                         ${pm_file_path}                   ${bulk_pm_mode}                    ${known_host_variable}=False
     Open Connection                     sftpserver
     Login                               bulkpm                             bulkpm
     ${epoch}=                           Get Current Date                   result_format=epoch
-    Set Global Variable                 ${epoch}
-    Put File                            ${ftp_file_path}                   upload/A${epoch}.xml.gz
-    [Return]                            ${epoch}
+    ${pm_file} =  Run Keyword If        "${bulk_pm_mode}" == "custom" and "${known_host_variable}" == "False"  Fetch From Right                   ${pm_file_path}               marker=/
+    ...                  ELSE IF        "${bulk_pm_mode}" == "custom" and "${known_host_variable}" == "True"   Set Variable                       PM${epoch}.xml.gz
+    ...                     ELSE                                           Set Variable                        A${epoch}.xml.gz
+
+    Put File                            ${pm_file_path}                    upload/${pm_file}
+    [Return]  ${pm_file}
 
 Check Given Print In DFC Log
-    [Arguments]  ${CHECK_DFC_LOGS}
+    [Arguments]  ${check_dfc_logs}
     ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
     Should Contain                   ${dfc_logs}                             HostKey has been changed
 
@@ -94,5 +126,6 @@ Check Known Hosts In Env
     Should Be Equal As Integers  ${check[0]}  0
     ${env} =  Set Variable  ${check[1]}
     ${string_matches} =  Get Lines Containing String  ${env}  KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host  case_insensitive=True
-    ${output} =  Should Not Be Empty  ${string_matches} 
+    ${output} =  Should Not Be Empty  ${string_matches}
     [Return]    ${output}
+
index 07ea3b7..e8d5da2 100644 (file)
@@ -14,16 +14,13 @@ 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
+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
-${FTP_FILE_PATH}                    ${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
 ${DEPLOYMENT_ENDPOINT}              dcae-deployments
 ${MR_TOPIC_CHECK_PATH}              /topics
 ${DR_SUB_CHECK_PATH}                /internal/prov
@@ -46,6 +43,21 @@ ${EXPECTED_PRINT}                   StrictHostKeyChecking is enabled but environ
 
 *** 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
@@ -117,10 +129,12 @@ Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
     ${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
 
-Upload PM Files to xNF SFTP Server After Services Deployed
+Uploading PM Files to xNF SFTP Server After Services Deployed
     [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    Upload PM Files to xNF SFTP Server  ${FTP_FILE_PATH}
-    Set Global Variable                 ${epoch}
+
+    ${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
@@ -134,13 +148,24 @@ DR PM Mapper Subscriber Check
 
 Sending File Ready Event to VES Collector After Services Deployed
     [Tags]                              5gbulkpm                 5gbulkpm_checking_sftp_rsa_key
-    Send File Ready Event to VES Collector  ${epoch}
+    ${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
-    Wait Until Keyword Succeeds         5 minute                            5 sec            xNF PM File Validate      perf3gpp_RnNode-Ericsson_pmMeasResult
 
-Setting Known_Hosts Environment Set
+    ${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
@@ -150,25 +175,42 @@ Setting Known_Hosts Environment Set
     ${rc}=                             Run and Return RC                   ${COPY_RSA_KEY}
     Should Be Equal As Integers        ${rc}                               0
 
-Uploading PM Files to xNF SFTP Server After Known_Host Set
+Uploading PM Files to xNF SFTP Server After KNOWN_HOSTS_FILE_PATH Env Variable Added
     [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    Upload PM Files to xNF SFTP Server  ${FTP_FILE_PATH}
-    Set Global Variable                 ${epoch}
 
-Sending File Ready Event to VES Collector After Known_Host Set
+    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
-    Send File Ready Event to VES Collector  ${epoch}
 
-Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic After Known_Host Set
+    ${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
-    Wait Until Keyword Succeeds         5 minute                            5 sec            xNF PM File Validate      perf3gpp_RnNode-Ericsson_pmMeasResult
 
-Checking DFC Logs After Known_Hosts Set
+    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 RSA Key Known_Hosts
+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
@@ -176,15 +218,22 @@ Changing RSA Key Known_Hosts
     ${rc}=                            Run and Return RC         ${COPY_RSA_KEY}
     Should Be Equal As Integers       ${rc}                     0
 
-Uploading PM Files to xNF SFTP Server After RSA Key Change
+Uploading PM Files to xNF SFTP Server After SFTP Server RSA Key Changed
     [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    Upload PM Files to xNF SFTP Server  ${FTP_FILE_PATH}
-    Set Global Variable                 ${epoch}
 
-Sending File Ready Event to VES Collector After RSA Key Change
+    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
-    Send File Ready Event to VES Collector  ${epoch}
 
-Checking DFC Logs After RSA Key Change
+    ${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}