From 8c40ac6fa1327e71ea5d9c9900bc033550d85511 Mon Sep 17 00:00:00 2001 From: Krzysztof Kuzmicki Date: Thu, 21 Jan 2021 09:34:42 +0100 Subject: Extend 5g bulk pm test suite in order to have possibility to test custom PM FILES Issue-ID: INT-1801 Signed-off-by: Krzysztof Kuzmicki Change-Id: I613da97a673b7c90c876b4a0d04374bf2865c22b --- robot/resources/usecases/5gbulkpm_interface.robot | 71 +++++++++++++++++---- robot/testsuites/usecases/5gbulkpm.robot | 77 +++++++++++++++-------- 2 files changed, 111 insertions(+), 37 deletions(-) (limited to 'robot') diff --git a/robot/resources/usecases/5gbulkpm_interface.robot b/robot/resources/usecases/5gbulkpm_interface.robot index 0655e53e..0818c9bb 100644 --- a/robot/resources/usecases/5gbulkpm_interface.robot +++ b/robot/resources/usecases/5gbulkpm_interface.robot @@ -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} + diff --git a/robot/testsuites/usecases/5gbulkpm.robot b/robot/testsuites/usecases/5gbulkpm.robot index 07ea3b7b..483dd03a 100644 --- a/robot/testsuites/usecases/5gbulkpm.robot +++ b/robot/testsuites/usecases/5gbulkpm.robot @@ -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} -- cgit 1.2.3-korg