5G - PNF PnP - Integration Test Cases

5G - PNF PnP - Integration Test Cases

Test update in progress for Guilin release and SO building block flow

Link to specification:

PNF PNP message flow diagram

Rainy day scenario - PNF is sending registration request to ONAP where required AAI entry is not present:

Sunny day scenario - PNF is sending registration request to ONAP where required AAI entry is prepared by SO workflow:

 

PNF PNP deployment diagram

PNF PNP hardware requirements

  • ONAP - standard ONAP instance located in Wind River lab

  • 4 Virtual machines dedicated for PNF Simulator:

    • 2 VCPU

    • 8 GB of RAM

    • 32 GB of HDD

PNF PNP test cases

High-Level descriptions

Id.

Test Case Name

Test Case Description

Id.

Test Case Name

Test Case Description

T01

Create and distribute service which contains PNF based on imported VSP 

Verification if in VID is present PNF enabled service.

T02

PNF registration accepting when AAI entry created in advance

Verification if PNF resource registration is done properly when correct AAI record (based on correlationID) is present before first InventoryQuery is done by PRH.
Verification if AAI entries: ipaddress-v4-oam and ipaddress-v6-oam are updated correctly based on pnfRegistration message contents.

T03

Delete pnf service and pnf resource

 

T04

Delete pnf service instance and reasign pnf resource to another service instance

 

T05

PNF registration rejected

Verification if PRH drops the PnfRegistration request when no AAI entry exists for the correlationID.
AAI entries shall not be created by PRH.

T06

PNF registration accepted when AAI entry is created using AAI API (without SO instantiation)

Verification if PNF resource registration is done properly when correct AAI record (based on correlationID) is present - created using AAI API
Verification if AAI entries: ipaddress-v4-oam and ipaddress-v6-oam are updated correctly based on correlationID.

Detailed descriptions

Test Case ID

T01

Test Case Name

Create and distribute service which contains PNF based on imported VSP 

Description

Verification if in VID is present PNF enabled service.
Test case covers following steps from message flow in 5G - PNF Plug and Play:

Release

Frankfurt/Guilin

Preconditions

  1. Users with roles: Designer (Carlos Santana - cs0008),  Admin (demo) should be available

  2. Robot init sucesfully executed. In intsalation server followin script shoulkd be sucesfully ececuted. ~/oom/kubernetes/robot/demo-k8s.sh onap init

    ubuntu@onap-5915-rke-node:~$ ~/oom/kubernetes/robot/demo-k8s.sh onap init Number of parameters: 2 KEY: init ++ kubectl --namespace onap get pods ++ sed 's/ .*//' ++ grep robot + POD=dev-robot-6d67844b64-pgbx5 ++ dirname ./demo-k8s.sh + DIR=. + SCRIPTDIR=scripts/demoscript + ETEHOME=/var/opt/ONAP + '[' ']' ++ kubectl --namespace onap exec dev-robot-6d67844b64-pgbx5 -- bash -c 'ls -1q /share/logs/ | wc -l' + export GLOBAL_BUILD_NUMBER=0 + GLOBAL_BUILD_NUMBER=0 ++ printf %04d 0 + OUTPUT_FOLDER=0000_demo_init + DISPLAY_NUM=90 + VARIABLEFILES='-V /share/config/robot_properties.py' + kubectl --namespace onap exec dev-robot-6d67844b64-pgbx5 -- /var/opt/ONAP/runTags.sh -V /share/config/robot_properties.py -d /share/logs/0000_demo_init -i InitDemo --display 90 Starting Xvfb on display :90 with res 1280x1024x24 Executing robot tests at log level TRACE ============================================================================== Testsuites ============================================================================== Testsuites.Demo :: Executes the VNF Orchestration Test cases including setu... ============================================================================== Initialize Customer And Models | PASS | ------------------------------------------------------------------------------ Initialize SO Openstack Identity For V3 | PASS | ------------------------------------------------------------------------------ Testsuites.Demo :: Executes the VNF Orchestration Test cases inclu... | PASS | 2 critical tests, 2 passed, 0 failed 2 tests total, 2 passed, 0 failed ============================================================================== Testsuites | PASS | 2 critical tests, 2 passed, 0 failed 2 tests total, 2 passed, 0 failed ============================================================================== Output: /share/logs/0000_demo_init/output.xml Log: /share/logs/0000_demo_init/log.html Report: /share/logs/0000_demo_init/report.html

Testing Steps

Step

Expected Result

  1. Login to ONAP portal as a designer user

  2. Navigate to SDC application

  3. Navigate to ONBOARD tab

  4. Click on CREATE NEW VLM

  5. Fill all mandatory parameters

  6. Add License Key Group and fill all mandatory parameters

  7. Add Entitlement Pool and fill all mandatory parameters

  8. Add  Feature Group fill all mandatory parameters and add already created Entitlement Pool and License Key Group

  9. Add License Agreement fill mandatory parameters and add already created Feature Group

  10. Press Submit button and next COMMIT & SUBMIT button

  11. Navigate to ONBOARD tab

  12. Click on CREATE NEW VSP

  13. Fill all mandatory parameters:

    1. select Vendor defined in already created VLM

    2. Name will be used in next steps

    3. in ONBOARDING PROCEDURE select Network Package

  14. Click on warning under License Agreement

  15. Fill Licensing Version, License Agreement and Feature Groups from already created VLM

  16. Click on Overview from left menu and press SELECT FILE button.

  17. Select attached pNF.csar file from your PC

  18. Press Submit button and next COMMIT & SUBMIT button

  19. Navigate to Home tab

  20. Click on IMPORT button and select  IMPORT VSP

  21. Select previously created VSP and press IMPORT VSP button

  22. In newly opened window yoiu can moduify PNF name.

  23. Next click Create and Certify button

  24. Next press Certify button. Put comment message in Certification confirmation pop-up and press OK button

  25. Navigate to SDC tab / HOME menu

  26. Click on ADD + button and select  Add Service

  27. In HOME > Create new service > General page fill all mandatory fields (change service type from default a'lacarte to macro) and press Create button in right top corner

  28. Go to Composition in left menu

  29. In search box find crated PNF using its name

  30. Drag ad drop it to main view

  31. Next click Certify button

  32. Next Press Distribute button in left top corner

  33. PressDistribution button in left top corner and verify distribution status, use refresh button

  34. Re-login as a a demo user

  35. VID Navigate to  application

  36. From left menu select Browse SDC Service Models

  1. User is logged in

  2. SDC application is open

  3. ONBOARD CATALOG is visible

  4. New License Model window is present

  5. All mandatory parameters are fulfilled

  6. License Key Group is added

  7. Entitlement Pool is added

  8. Feature Group is added

  9. License Agreement is added

  10. VLM is submitted sucesfully

  11. VLM is visible

  12. New Software Product window is present

  13. All mandatory parameters are fulfilled

  14. Licensing Version, License Agreement and Feature Groups and warning is not present

  15. Licensing Version, License Agreement and Feature Groups are defined

  16. Select file window is opened

  17. File is selected

  18. File is sucesfully uploaded and VSP is submited

  19. Home tab is opened

  20. Import VSP window is presnet with list of dubmited VSPs

  21. Previously create VSP is imported as VSP and Create window is opened

  22. All modifications are present

  23. PNF is successfully Certified

  24. SDC application is open

  25. Page HOME > Create new service > General with fields that must be filled out is open

  26. Create/Update saved successfully message is present in left top corner

  27. Composition main view is open

  28. PNF is visible

  29. PNF is added to service

  30. Service is Cerified and ready for Distribution

  31. Distribute Distribute successfully message is present in left top corner

  32. Monitor main view is opened with information about distribution. Thesr should not be any errors.

  33. User is re-logged

  34. VID application is open

  35. In Browse SDC Service Models main view is present entry about newly created service - it can take couple of minutes ~ 15 minutes

Actual Results

In VID is present enabled PNF service.

Conclusion (Pass/Fail)

 

Testing Lab

 

Tester Name

Krzysztof Kuzmicki

Test Case ID

T02

Test Case Name

PNF registration accepting when AAI entry created in advance

Description

Verification if PNF resource registration is done properly when correct AAI record (based on correlationID) is present before first InventoryQuery is done by PRH.
Verification if AAI entries: ipaddress-v4-oam and ipaddress-v6-oam are updated correctly based on correlationID.

Test case covers following steps from message flow in 5G - PNF Plug and Play:

Whole test case can be also executed using postman collection PNF_service_instantiation_v2.postman_collection.json. In order to execute it successfully there is need to set two variables in collection variables:

  • name of servcie model for pNF

  • ip onap worker/k8s VM

Also whole test case including T01 is automated in robot/xtesting robot smoke image - ~/oom/kubernetes/robot/demo-k8s.sh onap pnf_registarte

Release

Frankfurt/Guilin

Preconditions

  1. Created PNF and Service using Test Case T01 (Create and distribute service which contains PNF based on imported VSP )

Testing Steps

Step

Expected Result

  1. Get created service model in Test Case T01 curl --location --request GET 'https://{worker_ip}:30204/sdc2/rest/v1/catalog/services/serviceName/{service model name}/serviceVersion/1.0' \
    --header 'USER_ID: cs0008' \
    --header 'X-FromAppId: robot-ete' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Basic YmVlcDpib29w'

  2. From response get following parameters

    • service_model_uuid → resp_json.uuid;

    • service_model_invariant_uuid -> resp_json.invariantUUID

    • nf_resource_name -> resp_json.componentInstances[0].name

    • nf_resource_uuid -> resp_json.componentInstances[0].customizationUUID

    • componentName -> resp_json.componentInstances[0].componentName

    • nf_model_invariant_uuid -> resp_json.invariantUUID

    • nf_model_uuid -> resp_json.uuid

    • nf_model_name -> resp_json.name

  3. Get owning entity id:
    curl -k -O --location --request GET 'https://{worker_ip}:30233/aai/v13/business/owning-entities?owning-entity-name=OE-Demonstration' \

    --header 'Content-Type: application/json' \
    --header 'X-FromAppId: dcae-curl' \
    --header 'x-transactionId: 9998' \
    --header 'Accept: application/json' \
    --header 'Authorization: Basic QUFJOkFBSQ=='

    From response get following parameter:

    • owningEntityId -> resp_json.owning-entity[0].owning-entity-id

  4. Get product family id:

    curl -k -O  --location --request GET 'https://{worker_ip}:30233/aai/v13/service-design-and-creation/services?service-description=gNB' \
    --header 'Content-Type: application/json' \
    --header 'X-FromAppId: dcae-curl' \
    --header 'x-transactionId: 9998' \
    --header 'Accept: application/json' \
    --header 'Authorization: Basic QUFJOkFBSQ=='

    From response get following parameter:

    • productFamilyId -> resp_json.service[0].service-id

  5. Fill SO_request.json with above paremeters and:

    • owningEntityName=OE-Demonstration

    • full_customer_name=Demonstration

    • platformName=Platform-Demonstration

    • lineOfBusinessName=LOB-Demonstration

    • service=gNB

    • nf_instance_name=<your pnf name - send by pnf>

  6. Send Instantiation request to SO

    curl -k  --request POST 'http://{worker_ip}:30277/onap/so/infra/serviceInstantiation/v7/serviceInstances' \
    --header 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    -d @SO_request.json

  7. Login to so-bpmn-infra pod via rke console:
    kubectl exec -it dev-so-bpmn-infra-<....> -n onap /bin/sh
    open debug.log
    vi logs/bpmn/debug.log

  8. Verify AAI entry for PNF created by SO service using command:

    curl --location --request GET 'https:///{worker_ip}:30233/aai/v17/network/pnfs/pnf/{nf_instance_name}' \
    --header 'Content-Type: application/json' \
    --header 'X-FromAppId: dcae-curl' \
    --header 'x-transactionId: 9998' \
    --header 'Accept: application/json' \
    --header 'Authorization: Basic QUFJOkFBSQ==' \
    --header 'Cookie: JSESSIONID=2F951F19C99CDAED4CA5AFB3DCCD5D61'

  9. Verify AAI entry for Service Instance created by SO service using command:

    curl --location --request GET 'https://{worker_ip}:30233/aai/v13/business/customers/customer/{full_customer_name}/service-subscriptions/service-subscription/{service}/service-instances/service-instance/{instanceId}' \
    --header 'Content-Type: application/json' \
    --header 'X-FromAppId: dcae-curl' \
    --header 'x-transactionId: 9998' \
    --header 'Accept: application/json' \
    --header 'Authorization: Basic QUFJOkFBSQ==' \
    --header 'Cookie: JSESSIONID=2F951F19C99CDAED4CA5AFB3DCCD5D61'

  10. Send PNF Registration request from real PNF or simulate it using following curl comand.

    • Fill registration_request.json:

      • set sourceName=nf_instance_nam

    • Send regitration request:

      curl -k --request POST 'https://{worker_ip}:30417/eventListener/v7' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Basic c2FtcGxlMTpzYW1wbGUx' \
      --header 'Cookie: JSESSIONID=17A9DC67B33C079DE46F4A304143A5C2' \
      -d @reqistration_request.json

  11. Verify if SO service has reacted on PNFReady message from PRH and has ended

  12. Once again Verify AAI entry for PNF created by SO service using command:

    curl --location --request GET 'https:///{worker_ip}:30233/aai/v17/network/pnfs/pnf/{nf_instance_name}' \
    --header 'Content-Type: application/json' \
    --header 'X-FromAppId: dcae-curl' \
    --header 'x-transactionId: 9998' \--header 'Accept: application/json' \--header 'Authorization: Basic QUFJOkFBSQ==' \--header 'Cookie: JSESSIONID=2F951F19C99CDAED4CA5AFB3DCCD5D61'