From 0deebae5d65e5ef521a79958f1878862f88c3583 Mon Sep 17 00:00:00 2001 From: krzysztof kuzmicki Date: Wed, 10 Oct 2018 10:19:48 +0200 Subject: E2E sunny scenario for PNF registration Change-Id: I09e23319bd33ba89ac256a3d687c9caa351d4d46 Issue-ID: INT-685 Signed-off-by: krzysztof kuzmicki --- .../aai/add_pnf_registration_info.template | 12 +++ robot/resources/global_properties.robot | 5 ++ .../pnf_registration_without_SO_template.robot | 97 ++++++++++++++++++++++ .../ves/pnf_registration_request.template | 36 ++++++++ robot/testsuites/pnf-registration.robot | 25 ++++++ 5 files changed, 175 insertions(+) create mode 100644 robot/resources/aai/add_pnf_registration_info.template create mode 100644 robot/resources/test_templates/pnf_registration_without_SO_template.robot create mode 100644 robot/resources/ves/pnf_registration_request.template create mode 100644 robot/testsuites/pnf-registration.robot diff --git a/robot/resources/aai/add_pnf_registration_info.template b/robot/resources/aai/add_pnf_registration_info.template new file mode 100644 index 00000000..2122ef24 --- /dev/null +++ b/robot/resources/aai/add_pnf_registration_info.template @@ -0,0 +1,12 @@ +{ + "pnf-name": "${correlation_id}", + "pnf-name2": "example-pnf-name2-val-78244", + "pnf-name2-source": "example-pnf-name2-source-val-99275", + "pnf-id": "example-pnf-id-val-7989", + "equip-type": "example-equip-type-val-20348", + "equip-vendor": "example-equip-vendor-val-52182", + "equip-model": "example-equip-model-val-8370", + "management-option": "example-management-option-val-72881", + "ipaddress-v4-oam": "", + "ipaddress-v6-oam": "" +} diff --git a/robot/resources/global_properties.robot b/robot/resources/global_properties.robot index 7d8db8e0..ea693728 100644 --- a/robot/resources/global_properties.robot +++ b/robot/resources/global_properties.robot @@ -33,3 +33,8 @@ ${GLOBAL_AAI_ZONE_ID} nova1 ${GLOBAL_AAI_ZONE_NAME} nova ${GLOBAL_AAI_DESIGN_TYPE} integration ${GLOBAL_AAI_ZONE_CONTEXT} labs +${GLOBAL_DNS_HV_VES_NAME} dcae-hv-ves-collector +${GLOBAL_HV_VES_SERVER_PORT} 6061 +${GLOBAL_DNS_VES_NAME} dcae-ves-collector +${GLOBAL_VES_SERVER_PORT} 8080: + diff --git a/robot/resources/test_templates/pnf_registration_without_SO_template.robot b/robot/resources/test_templates/pnf_registration_without_SO_template.robot new file mode 100644 index 00000000..cc18aa18 --- /dev/null +++ b/robot/resources/test_templates/pnf_registration_without_SO_template.robot @@ -0,0 +1,97 @@ +*** Settings *** +Documentation PNF Registration Handler (PRH) test cases +Resource ../aai/aai_interface.robot +Resource ../mr_interface.robot +Resource ../json_templater.robot +Library OpenstackLibrary +Library OperatingSystem +Library UUID +Library Collections +Library JSONUtils +Library HTTPUtils + + +*** Variables *** +${aai_so_registration_entry_template}= robot/assets/templates/aai/add_pnf_registration_info.template +${pnf_ves_integration_request}= robot/assets/templates/ves/pnf_registration_request.template +${DMAAP_MESSAGE_ROUTER_UNAUTHENTICATED_PNF_PATH} /events/unauthenticated.PNF_READY/2/1 +${VES_ENDPOINT} http://${GLOBAL_DNS_VES_NAME}:${GLOBAL_VES_SERVER_PORT} +${VES_data_path} /eventListener/v7 + + +*** Keywords *** +Create A&AI antry without SO and succesfully registrate PNF + [Documentation] Test case template for create A&AI antry without SO and succesfully registrate PNF + [Arguments] ${PNF_entry_dict} + Create PNF initial entry in A&AI ${PNF_entry_dict} + Send VES integration request ${PNF_entry_dict} + Verifi PNF Integration Request in A&AI ${PNF_entry_dict} + Verifi PNF Integration Request in MR ${PNF_entry_dict} + +Create PNF initial entry in A&AI + [Documentation] Creates PNF initial entry in A&AI registry. Entry contains only correlation id (pnf-name) + [Arguments] ${PNF_entry_dict} + ${template}= Fill Json Template File ${aai_so_registration_entry_template} ${PNF_entry_dict} + Log Filled A&AI entry template ${template} + ${correlation_id}= Get From Dictionary ${PNF_entry_dict} correlation_id + ${del_resp}= Delete A&AI Entity /network/pnfs/pnf/${PNF_entry_dict.correlation_id} + Log Removing existing entry "${PNF_entry_dict.correlation_id}" from A&AI registry + ${put_resp}= Run A&AI Put Request /aai/v11/network/pnfs/pnf/${PNF_entry_dict.correlation_id} ${template} + Log Adding new entry with correlation ID "${PNF_entry_dict.correlation_id}" to A&AI registry (empty IPv4 and IPv6 address) + +Send VES integration request + [Documentation] Send VES integration request. Request contains correlation id (sourceName), oamV4IpAddress and oamV6IpAddress + [Arguments] ${PNF_entry_dict} + ${template}= Fill Json Template File ${pnf_ves_integration_request} ${PNF_entry_dict} + ${post_resp}= Run VES HTTP Post Request ${template} + Should Be Equal As Strings ${post_resp.status_code} 202 + Log VES integration request has been send + +Verifi PNF integration request in A&AI + [Documentation] Verifi if PNF integration request entries are present in A&AI + [Arguments] ${PNF_entry_dict} + Wait Until Keyword Succeeds 10x 1s Query PNF A&AI updated entry ${PNF_entry_dict} + Log PNF integration request in A&AI has been verified and contains all necessary entries + +Verifi PNF integration request in MR + [Documentation] Verifi if PNF integration request entries are present in MR unauthenticated.PNF_READY/ topic + [Arguments] ${PNF_entry_dict} + ${get_resp}= Run MR Get Request ${DMAAP_MESSAGE_ROUTER_UNAUTHENTICATED_PNF_PATH} + Should Be Equal As Strings ${get_resp.status_code} 200 + ${json_resp_item}= Get From List ${get_resp.json()} 0 + ${json}= evaluate json.loads('${json_resp_item}') json + Log JSON recieved from MR ${DMAAP_MESSAGE_ROUTER_UNAUTHENTICATED_PNF_PATH} endpoint ${json} + Should Be Equal As Strings ${json["ipaddress-v4-oam"]} ${PNF_entry_dict.PNF_IPv4_address} + Should Be Equal As Strings ${json["ipaddress-v6-oam"]} ${PNF_entry_dict.PNF_IPv6_address} + Should Be Equal As Strings ${json["correlationId"]} ${PNF_entry_dict.correlation_id} + Log PNF integration request in MR has been verified and contains all necessary entries + +Query PNF A&AI updated entry + [Documentation] Query PNF A&AI updated entry + [Arguments] ${PNF_entry_dict} + ${get_resp}= Run A&AI Get Request /aai/v11/network/pnfs/pnf/${PNF_entry_dict.correlation_id} + Should Be Equal As Strings ${get_resp.status_code} 200 + ${json_resp}= Set Variable ${get_resp.json()} + Log JSON recieved from A&AI endpoint ${json_resp} + Should Be Equal As Strings ${json_resp["ipaddress-v4-oam"]} ${PNF_entry_dict.PNF_IPv4_address} + Should Be Equal As Strings ${json_resp["ipaddress-v6-oam"]} ${PNF_entry_dict.PNF_IPv6_address} + Should Be Equal As Strings ${json_resp["pnf-name"]} ${PNF_entry_dict.correlation_id} + Log PNF integration request in A&AI has been verified and contains all necessary entries + +Run VES HTTP Post Request + [Documentation] Runs a VES Post request + [Arguments] ${data} + Disable Warnings + ${session}= Create Session ves ${VES_ENDPOINT} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${post_resp}= Post Request ves ${VES_data_path} data=${data} headers=${headers} + Log PNF integration request ${data} + Should Be Equal As Strings ${post_resp.status_code} 202 + Log VES has accepted event with status code ${post_resp.status_code} + [Return] ${post_resp} + +Cleanup PNF entry in A&AI + [Documentation] Creates PNF initial entry in A&AI registry + [Arguments] ${PNF_entry_dict} + ${del_resp}= Delete A&AI Entity /network/pnfs/pnf/${PNF_entry_dict.correlation_id} + Log Teardown complete diff --git a/robot/resources/ves/pnf_registration_request.template b/robot/resources/ves/pnf_registration_request.template new file mode 100644 index 00000000..61b46d16 --- /dev/null +++ b/robot/resources/ves/pnf_registration_request.template @@ -0,0 +1,36 @@ +{ + "event": { + "commonEventHeader": { + "startEpochMicrosec": 1538407540940, + "sourceId": "val13", + "eventId": "registration_38407540", + "nfcNamingCode": "oam", + "internalHeaderFields": {}, + "eventType": "pnfRegistration", + "priority": "Normal", + "version": "4.0.1", + "reportingEntityName": "NOK6061ZW3", + "sequence": 0, + "domain": "pnfRegistration", + "lastEpochMicrosec": 1538407540940, + "eventName": "pnfRegistration_Nokia_5gDu", + "vesEventListenerVersion": "7.0.1", + "sourceName": "${correlation_id}", + "nfNamingCode": "gNB" + }, + "pnfRegistrationFields": { + "unitType": "val8", + "serialNumber": "6061ZW3", + "pnfRegistrationFieldsVersion": "2.0", + "manufactureDate": "1538407540942", + "modelNumber": "val6", + "lastServiceDate": "1538407540942", + "unitFamily": "BBU", + "vendorName": "Nokia", + "oamV4IpAddress": "${PNF_IPv4_address}", + "oamV6IpAddress": "${PNF_IPv6_address}", + "softwareVersion": "val7" + } + } +} + diff --git a/robot/testsuites/pnf-registration.robot b/robot/testsuites/pnf-registration.robot new file mode 100644 index 00000000..dc2d7b5f --- /dev/null +++ b/robot/testsuites/pnf-registration.robot @@ -0,0 +1,25 @@ +*** Settings *** +Documentation Executes the PNF registration test cases including setup and teardown +... + +Resource ../resources/test_templates/pnf_registration_without_SO_template.robot + + +*** Test Cases *** + +Create A&AI antry without SO and succesfully registrate PNF, PNF entry contains: correlation ID, PNF_IPv4_address and PNF_IPv6_address + [Documentation] This test is checking creation A&AI entry without SO and succesfull PNF registration + [Tags] pnf_registrate + [Setup] Initialize PNF entry with correlation ID, PNF_IPv4_address and PNF_IPv6_address + Create A&AI antry without SO and succesfully registrate PNF ${PNF_entry_dict} + [Teardown] Cleanup PNF entry in A&AI ${PNF_entry_dict} + + +*** Keyword *** + +Initialize PNF entry with correlation ID, PNF_IPv4_address and PNF_IPv6_address + [Documentation] Setup test case variable + ${PNF_entry_dict}= Create Dictionary correlation_id=ABCDEFG1234567 PNF_IPv4_address=13.13.13.13 PNF_IPv6_address=2001:0db8:0:0:0:0:1428:57ab + Set Test Variable ${PNF_entry_dict} + Log Initial PNF entry ${PNF_entry_dict} + -- cgit 1.2.3-korg