Test update in progress for Guilin release and SO building block flow
Link to specification:
5G - PNF Plug and Play
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 |
---|---|---|
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. |
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 |
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. | |
Release | Frankfurt/Guilin | |
Preconditions |
| |
Testing Steps | Step | Expected Result |
|
| |
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. 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:
Also whole test case including T01 is automated in robot/xtesting robot smoke image - | |
Release | Frankfurt/Guilin | |
Preconditions |
| |
Testing Steps | Step | Expected Result |
|
| |
Actual Results | PNF registration is accepted and AAI entries: ipaddress-v4-oam and ipaddress-v6-oam are updated correctly based on correlationID. SO service is instantieted. | |
Conclusion (Pass/Fail) | ||
Testing Lab | ||
Tester Name | Krzysztof Kuzmicki |
Test Case ID | T03 | |
Test Case Name | Delete pnf service and pnf resource | |
Description | ||
Release | Guilin | |
Preconditions | ||
Testing Steps | Step | Expected Result |
Actual Results | ||
Conclusion (Pass/Fail) | ||
Testing Lab | ||
Tester Name | Krzysztof Kuzmicki |
Test Case ID | T04 | |
Test Case Name | Delete pnf service instance and reassign pnf resource to another service instance | |
Description | ||
Release | Guilin | |
Preconditions | ||
Testing Steps | Step | Expected Result |
Actual Results | ||
Conclusion (Pass/Fail) | ||
Testing Lab | ||
Tester Name | Krzysztof Kuzmicki |
Test Case ID | T05 | |
Test Case Name | PNF registration rejected | |
Description | Verification if PRH drops the PnfRegistration request when no AAI entry exists for the correlationID. Test case covers following steps from message flow in 5G - PNF Plug and Play: | |
Release | Casablanca | |
Preconditions |
| |
Testing Steps | Step | Expected Result |
|
| |
Actual Results | PNF registration is rejected and AAI entries has not be created. | |
Conclusion (Pass/Fail) | ||
Testing Lab | ||
Tester Name | Krzysztof Kuzmicki |
Test Case ID | T06 | |
Test Case Name | PNF registration accepted when AAI entry is created using AAI API (without SO instantiation) | |
Description | Verification if PNF resource registration is done properly when correct AAI record (based on correlationID) is present - created using AAI API Test case covers following steps from message flow in 5G - PNF Plug and Play: | |
Release | Casablanca | |
Preconditions |
| |
Testing Steps | Step | Expected Result |
|
| |
Actual Results | PNF registration is accepted and AAI entries: ipaddress-v4-oam and ipaddress-v6-oam are updated correctly based on correlationID | |
Conclusion (Pass/Fail) | ||
Testing Lab | ||
Tester Name | Krzysztof Kuzmicki |
8 Comments
michail salichos
Any hints regarding T02 testing steps?
Krzysztof Kuzmicki
Still we have problems in our ONAP with SO in order to have it working.
Currently so-bpmn-infra is not getting up.
Rebecca Lantz
To confirm, there is no testing of the final service configuration message back to PNF? Do we anticipate that the SO workflow will include this? If this is not included, how does the PNF know to stop sending the PNF Registration VES event?
Krzysztof Kuzmicki
We confirm that this is not included.
We (Marek Kukulski and Damian Nowak) agreed with Seshu that we will prepare generic building block for PNF registration and include it in some testing/example work-flow. Sending configuration down to PNF is related to a domain specific work-flow which is expected to include PNF registration building block. Prepared example work-flow is not planned to be a production work-flow, and as such it doesn't contain configuration steps.
Rebecca Lantz
Thank you for the clarification. My understanding from PNP documentation is that the PNF is to continuously send the registration messages until it receives the configuration data. If the receiving of configuration data is optional and may not necessarily happen, how does the PNF know to stop sending the registration messages? Will there be some kind of ACK sent back once the PNF registration completes?
Rahul Tyagi
I am getting below error in PRH logs while for PNF_REGISTRATION
"org.onap.dcaegen2.services.prh.tasks.ScheduledTasks |2019-05-01T20:51:42.969Z |WARN |Chain of tasks have been aborted due to errors in PRH workflow | |org.onap.dcaegen2.services.sdk.rest.services.adapters.http.exceptions.HttpException: Request failed for URL 'http://message-router:3904//events/unauthenticated.VES_PNFREG_OUTPUT/OpenDCAE-c12/c12'. Response code: 404 Not Found\n\tat org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse.throwIfUnsuccessful(HttpResponse.java:74)\n\tat reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:190)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)\n\tat reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:123)\n\tat reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:114)\n\tat reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:92)\n\tat reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:113)\n\tat reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:287)\n\tat reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:350)\n\tat reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:113)\n\tat reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:486)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoReduceSeed$ReduceSeedSubscriber.onComplete(MonoReduceSeed.java:156)\n\tat reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136)\n\tat reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:372)\n\tat reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:196)\n\tat reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:337)\n\tat reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:334)\n\tat reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:381)\n\tat reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:520)\n\tat reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:141)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)\n\tat io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)\n\tat io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)\n\tat io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)\n\tat io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:648)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:583)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:500)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$5.run(.java:897)\n\tat java.lang.Thread.run(Thread.java:748)\n | |reactor-http-nio-6"
I am using prh-app-server image 1.2.2.-SNAPSHOT and dmaap-mr image 1.1.12.
Do I need to make any config changes? Kindly suggest.
Krzysztof Kuzmicki
Hi
There was an issue and R&D had to increase version to 1.2.2
OOM-1831 - Getting issue details... STATUS
Marcin Migdal could you have a look?
I will be present at office on 5th of May.
br,
K
Thamlur Raju
Hi,
I am using the Dublin release ,
version: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.2.4
I am getting below error (PRH pod logs) when i trigger the events from pnf simulator and service instance was created without any failure but due to below error in the SO BPMN logs i wasn't see any DMAAP related information...
But AAI was updated with pnf-simulator triggered event information...
org.onap.dcaegen2.services.prh.tasks.ScheduledTasks |2019-09-25T06:36:24.220Z |WARN |DMaaPProducerTask exception has been registered: | |org.onap.dcaegen2.services.sdk.rest.services.adapters.http.exceptions.HttpException: Request failed for URL 'http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.VES_PNFREG_OUTPUT/OpenDCAE-c12/c12'. Response code: 404 Not Found\n\tat org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse.throwIfUnsuccessful(HttpResponse.java:74)\n\tat reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:190)\n\tat reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)\n\tat reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)\n\tat reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:123)\n\tat reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:114)\n\tat reactor.core.publisher.FluxDefaultIfEmpty$DefaultIf