diff options
Diffstat (limited to 'vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfTopologyOperationRPCTest.java')
-rw-r--r-- | vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfTopologyOperationRPCTest.java | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfTopologyOperationRPCTest.java b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfTopologyOperationRPCTest.java new file mode 100644 index 00000000..422a6adb --- /dev/null +++ b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfTopologyOperationRPCTest.java @@ -0,0 +1,174 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.sdnc.vnfapi; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.sdnc.vnfapi.util.PropBuilder; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.VnfTopologyOperationInput; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.VnfTopologyOperationOutput; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.sdnc.request.header.SdncRequestHeader.SvcAction; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.vnf.model.infrastructure.VnfList; +import org.opendaylight.yangtools.yang.common.RpcResult; + +import static org.onap.sdnc.vnfapi.util.MDSALUtil.build; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.exec; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.sdncRequestHeader; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.serviceData; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.serviceInformation; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.vnfInformation; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.vnfList; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.vnfRequestInformation; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.vnfTopologyOperationInput; +import static org.onap.sdnc.vnfapi.util.MDSALUtil.vnfTopologyOperationOutput; + + +/** + * This class test the VnfTopologyOperation mdsal RPC. + */ +@RunWith(MockitoJUnitRunner.class) +public class VnfTopologyOperationRPCTest extends VnfApiProviderTest { + + + final String SVC_OPERATION = "vnf-topology-operation"; + + + @Before + public void setUp() throws Exception { + super.setUp(); + svcClient.setScvOperation(SVC_OPERATION); + } + + + /** + * Verify VnfTopologyOperation RPC executes Delete VNFList entry + * {@link VnfTopologyOperationOutput} and persisted the expected {@link VnfList} in the {@link DataBroker} + */ + @Test + public void testVnfTopologyOperationRPC_Delete_VNFList_Entry_Success() throws Exception { + + + //mock svcClient to perform a successful execution with the expected parameters + svcClient.mockHasGraph(true); + PropBuilder svcResultProp = svcClient.createExecuteOKResult(); + svcClient.mockExecute(svcResultProp); + + // create the VnfTopologyOperationInput from the template + VnfTopologyOperationInput vnfTopologyOperationInput = createVTOI(); + + //persist a vnfList entry in the dataBroker + persistVnfListBroker(vnfTopologyOperationInput); + + //execute the mdsal exec + VnfTopologyOperationOutput actualVnfTopologyOperationOutput = exec( + vnfapiProvider::vnfTopologyOperation + , vnfTopologyOperationInput + , RpcResult::getResult + ); + + + //verify the returned VnfTopologyOperationOutput + VnfTopologyOperationOutput expectedVnfTopologyOperationOutput = createExpectedVTOO(svcResultProp,vnfTopologyOperationInput); + Assert.assertEquals(expectedVnfTopologyOperationOutput,actualVnfTopologyOperationOutput); + + + //verify the persisted VnfList + VnfList actualVnfList = db.read(vnfTopologyOperationInput.getVnfRequestInformation().getVnfId(), LogicalDatastoreType.CONFIGURATION); + VnfList expectedVnfList = null; + Assert.assertEquals(expectedVnfList,actualVnfList); + + LOG.debug("done"); + } + + + public VnfTopologyOperationInput createVTOI(){ + return build(vnfTopologyOperationInput() + .setServiceInformation( + build(serviceInformation() + .setServiceId("serviceId: xyz") + .setServiceInstanceId("serviceInstanceId: xyz") + .setServiceType("serviceType: xyz") + .setSubscriberName("subscriberName: xyz") + ) + ) + .setVnfRequestInformation( + build(vnfRequestInformation() + .setVnfId("vnfId: xyz") + .setVnfName("vnfName: xyz")//defect if missing + .setVnfType("vnfType: xyz")//defect if missing + + + ) + ) + .setSdncRequestHeader( + build(sdncRequestHeader() + .setSvcAction(SvcAction.Delete) + ) + ) + ); + + } + + + + private VnfList persistVnfListBroker( + VnfTopologyOperationInput vnfTopologyOperationInput + ) throws Exception{ + VnfList service = build( + vnfList() + .setVnfId(vnfTopologyOperationInput.getVnfRequestInformation().getVnfId()) + .setServiceData( + build(serviceData() + .setVnfId(vnfTopologyOperationInput.getVnfRequestInformation().getVnfId()) + ) + ) + ); + db.write(true,service, LogicalDatastoreType.CONFIGURATION); + return service; + } + + + + + + private VnfTopologyOperationOutput createExpectedVTOO(PropBuilder expectedSvcResultProp,VnfTopologyOperationInput expectedVnfTopologyOperationInput){ + return build( + vnfTopologyOperationOutput() + .setSvcRequestId(expectedVnfTopologyOperationInput.getSdncRequestHeader().getSvcRequestId()) + .setResponseCode(expectedSvcResultProp.get(svcClient.errorCode)) + .setAckFinalIndicator(expectedSvcResultProp.get(svcClient.ackFinal)) + .setResponseMessage(expectedSvcResultProp.get(svcClient.errorMessage)) + .setVnfInformation(build(vnfInformation() + .setVnfId(expectedVnfTopologyOperationInput.getVnfRequestInformation().getVnfId()) + )) + ); + } + + + + +} |