Extend 5g bulk pm test suite in order to have possibility to test custom PM FILES 32/117032/6
authorKrzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>
Thu, 21 Jan 2021 08:34:42 +0000 (09:34 +0100)
committerKatarzyna Wasiel <katarzyna.wasiel@nokia.com>
Thu, 21 Jan 2021 13:07:37 +0000 (14:07 +0100)
Issue-ID: INT-1801
Signed-off-by: Krzysztof Kuzmicki <krzysztof.kuzmicki@nokia.com>
Change-Id: I613da97a673b7c90c876b4a0d04374bf2865c22b

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

index 0655e53..0818c9b 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,56 @@ Deployment Status
     ${status}           Set Variable                ${resp.json().get('status')}
     Should Be Equal As Strings                      ${status}               succeeded
 
+
+Check Next Event From Topic
+    [Documentation]
+    ...  This keyword checks if on MR topic there is no existing messageses.
+    ...  If there is no more messageses then it reports success and finish "Wait Until Keyword Succeeds  2 min  1 s  Check Next Event From Topic" step from "xNF PM File Validate" keyword
+    ...  In other case it triggers "Get Next Event From Topic".
+    ...  NOTE: Keyword "Get Next Event From Topic" will always fails in order to not finsh "Wait Until Keyword Succeeds  2 min  1 s  Check Next Event From Topic" step from "xNF PM File Validate" keyword
+    ${resp}=  Run MR Auth Get Request     ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
+    Run keyword If  ${resp.text} == @{EMPTY}  Log  Event is empty! There is no more events on topic!
+    ...     ELSE   Get Next Event From Topic  ${resp}
+
+Get Next Event From Topic
+    [Documentation]
+    ...  This keyword adds new events from MR topic to list ${all_event_json_list} in a recursive way and sets ${all_event_json_list} as a suite variable in order to be able to add new items/evnts in a next iteration
+    ...  NOTE: Keyword "Get Next Event From Topic" will always fails in order to not finish "Wait Until Keyword Succeeds  2 min  1 s  Check Next Event From Topic" step from "xNF PM File Validate" keyword
+    [Arguments]  ${resp}
+    ${resp_list}=  Set Variable   ${resp.json()}
+    Log  ${resp_list}
+    ${combained_list}=  Combine Lists  ${all_event_json_list}  ${resp_list}
+    ${all_event_json_list}=  Set Variable  ${combained_list}
+    Set Suite Variable         ${all_event_json_list}
+    Fail
+
 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}
+    [Documentation]
+    ...  This keyword gathers all events from message router topic and validates if in recived data is present an expected string: "${expected_pm_str}" .
+    ...  Only in custom mode it saves a response as a json file "${PM_FILE}-${timestamp}.json" located in "${expected_event_json_path}"
+    [Arguments]  ${bulk_pm_mode}  ${expected_pm_str}  ${expected_event_json_path}
+    Run Keyword If  '${bulk_pm_mode}' == 'custom'  Set Log Level  ${PM_LOG_LEVEL}
+    ${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!
+    ${all_event_json_list}=  Set Variable  ${resp.json()}
+    Set Suite Variable         ${all_event_json_list}
+    Wait Until Keyword Succeeds  2 min  5 sec  Check Next Event From Topic
+    ${all_event_json_string}=   Convert To String    ${all_event_json_list}
+    Should Contain   ${all_event_json_string}   ${expected_pm_str}
+    Run Keyword If  '${bulk_pm_mode}' == 'custom'   Print Evnets From Topic to JSON file  ${expected_event_json_path}  ${all_event_json_string}
+    Run Keyword If  '${bulk_pm_mode}' == 'custom'  Set Log Level  TRACE
+
+
+Print Evnets From Topic to JSON file
+     [Arguments]   ${expected_event_json_path}  ${all_event_json_string}
+     ${str}=  Replace String   ${all_event_json_string}   '{  {
+     ${str2}=  Replace String   ${str}      }'  }
+     ${all_event_json_string}=  Replace String   ${str2}   u{  {
+     ${json}=  To Json  ${all_event_json_string}   pretty_print=True
+     ${timestamp}=  Get Time  epoch
+     Create File  ${expected_event_json_path}/${PM_FILE}-${timestamp}.json  ${json}
+
 
 Topic Validate
     [Arguments]                         ${value}
@@ -51,28 +98,29 @@ 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}
     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"      Fetch From Right                   ${pm_file_path}               marker=/
+    ...                     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 +142,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..483dd03 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,33 @@ ${EXPECTED_PRINT}                   StrictHostKeyChecking is enabled but environ
 
 *** Test Cases ***
 
+Setting Global Variables
+    [Documentation]
+    ...  This test case checks suite if it is working in default or custom mode and sets proper variables depended on used mode.
+    ...  Default mode is based on a previous version of 5gbulkpm test case which it test PM file available in robot image.
+    ...  Custom mode is used only in xtesing. Can be executed only as k8s job described in https://gerrit.onap.org/r/gitweb?p=integration/xtesting.git;a=blob_plain;f=smoke-usecases-robot/README.md;hb=refs/heads/master
+    ...  Custom mode is used to validate custom PM files. All details how to provide custom PM files are described in documentation above.
+    ...  By default in custom mode all PM details are not logged to robot log files, so they are not send to community name: TEST_DB_URL http://testresults.opnfv.org/onap/api/v1/results
+    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
+    ${env_variables} =  Get Environment Variables
+    ${bulk_pm_mode}=   Get Variable Value  ${env_variables["BULK_PM_MODE"]}  default
+    ${pm_log_level}=   Get Variable Value  ${env_variables["PM_LOG_LEVEL"]}  NONE
+    ${test_variables} =  Create Dictionary
+    Run Keyword If   "${bulk_pm_mode}" == "custom"  Set To Dictionary  ${test_variables}   FILE_FORMAT_TYPE=${env_variables["FILE_FORMAT_TYPE"]}
+    ...                                                                                    FILE_FORMAT_VERSION=${env_variables["FILE_FORMAT_VERSION"]}
+    ...                                                                                    PM_FILE_PATH=${env_variables["PM_FILE_PATH"]}
+    ...                                                                                    EXPECTED_PM_STR=${env_variables["EXPECTED_PM_STR"]}
+    ...                                                                                    EXPECTED_EVENT_JSON_PATH=${env_variables["EXPECTED_EVENT_JSON_PATH"]}
+    ...        ELSE                                 Set To Dictionary  ${test_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
+    ...                                                                                    EXPECTED_EVENT_JSON_PATH=none
+    Set Global Variable   ${GLOBAL_TEST_VARIABLES}  ${test_variables}
+    Set Global Variable  ${BULK_PM_MODE}  ${bulk_pm_mode}
+    Set Global Variable  ${PM_LOG_LEVEL}  ${pm_log_level}
+
+
 Deploying Data File Collector
     [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
     ${headers}=                         Create Dictionary                  content-type=application/json
@@ -117,10 +141,10 @@ 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}=  Upload PM Files to xNF SFTP Server  ${GLOBAL_TEST_VARIABLES["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 +158,14 @@ 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}
+    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["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
+    Wait Until Keyword Succeeds         2 min                            5 sec            xNF PM File Validate   ${BULK_PM_MODE}   ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}  ${GLOBAL_TEST_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
+
 
-Setting Known_Hosts Environment Set
+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,25 @@ 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}
+    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}  ${BULK_PM_MODE}
+    Set Global Variable  ${PM_FILE}  ${pm_file}
 
-Sending File Ready Event to VES Collector After Known_Host Set
+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}
+    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
 
-Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic After Known_Host Set
+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
+    Wait Until Keyword Succeeds         2 min                            5 sec             xNF PM File Validate   ${BULK_PM_MODE}   ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}  ${GLOBAL_TEST_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
 
-Checking DFC Logs After Known_Hosts Set
+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 +201,15 @@ 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}
+    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}  ${BULK_PM_MODE}
+    Set Global Variable  ${PM_FILE}  ${pm_file}
 
-Sending File Ready Event to VES Collector After RSA Key Change
+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}
+    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
 
-Checking DFC Logs After RSA Key Change
+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}
+    Wait Until Keyword Succeeds         5 min  30 sec            Check Given Print In DFC LOG  ${CHECK_DFC_LOGS}