1 package org.onap.sdnc.northbound;
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.lenient;
5 import static org.mockito.Mockito.mock;
6 import static org.mockito.Mockito.when;
7 import static org.onap.sdnc.northbound.GenericResourceApiProvider.APP_NAME;
8 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NO_SERVICE_LOGIC_ACTIVE;
9 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
10 import static org.onap.sdnc.northbound.util.MDSALUtil.networkTopologyIdentifierStructureBuilder;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadNetworkTopologyInformationBuilder;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadNetworkTopologyOperationInput;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadNetworkTopologyOperationOutput;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
15 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.mockito.Mockito;
21 import org.mockito.junit.MockitoJUnitRunner;
22 import org.onap.sdnc.northbound.util.PropBuilder;
23 import org.opendaylight.mdsal.binding.api.DataBroker;
24 import org.opendaylight.mdsal.binding.api.TransactionChainClosedException;
25 import org.opendaylight.mdsal.binding.api.WriteTransaction;
26 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationInput;
27 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationOutput;
28 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
29 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
30 import org.opendaylight.yangtools.yang.common.RpcResult;
32 @RunWith(MockitoJUnitRunner.Silent.class)
33 public class PreloadNetworkTopologyRPCTest extends GenericResourceApiProviderTest {
35 private static final String SVC_OPERATION = "preload-network-topology-operation";
38 public void setUp() throws Exception {
40 svcClient.setScvOperation(SVC_OPERATION);
44 public void should_fail_when_invalid_network_topology() throws Exception {
46 PreloadNetworkTopologyOperationInput input = preloadNetworkTopologyOperationInput().build();
48 PreloadNetworkTopologyOperationOutput output =
49 exec(genericResourceApiProvider::preloadNetworkTopologyOperation, input, RpcResult::getResult);
51 assertEquals("403", output.getResponseCode());
52 assertEquals("invalid input, null or empty preload-network-topology-information", output.getResponseMessage());
53 assertEquals("Y", output.getAckFinalIndicator());
58 public void should_fail_when_client_execution_failed() throws Exception {
60 svcClient.mockHasGraph(true);
61 svcClient.mockExecuteWoServiceDataPreload(new RuntimeException("test exception"));
63 PreloadNetworkTopologyOperationInput input = preloadNetworkTopologyOperationInput()
64 .setPreloadNetworkTopologyInformation(preloadNetworkTopologyInformationBuilder()
65 .setNetworkTopologyIdentifierStructure(networkTopologyIdentifierStructureBuilder()
66 .setNetworkName("test-network-name")
67 .setNetworkType("test-network-type").build()
71 PreloadNetworkTopologyOperationOutput output =
72 exec(genericResourceApiProvider::preloadNetworkTopologyOperation, input, RpcResult::getResult);
74 assertEquals("500", output.getResponseCode());
75 assertEquals("test exception", output.getResponseMessage());
76 assertEquals("Y", output.getAckFinalIndicator());
80 public void should_fail_when_client_has_no_graph() throws Exception {
82 svcClient.mockHasGraph(false);
84 PreloadNetworkTopologyOperationInput input = preloadNetworkTopologyOperationInput()
85 .setPreloadNetworkTopologyInformation(preloadNetworkTopologyInformationBuilder()
86 .setNetworkTopologyIdentifierStructure(networkTopologyIdentifierStructureBuilder()
87 .setNetworkName("test-network-name")
88 .setNetworkType("test-network-type").build()
92 PreloadNetworkTopologyOperationOutput output =
93 exec(genericResourceApiProvider::preloadNetworkTopologyOperation, input, RpcResult::getResult);
95 assertEquals("503", output.getResponseCode());
96 assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
97 assertEquals("Y", output.getAckFinalIndicator());
101 public void should_fail_when_failed_to_update_mdsal() throws Exception {
103 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
104 svcClient.mockExecuteWoServiceData(svcResultProp);
105 svcClient.mockHasGraph(true);
106 WriteTransaction mockWriteTransaction = mock(WriteTransaction.class);
107 when(mockWriteTransaction.commit()).thenThrow(new TransactionChainClosedException("test exception"));
109 DataBroker spyDataBroker = Mockito.spy(dataBroker);
110 when(spyDataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction);
111 genericResourceApiProvider.setDataBroker(spyDataBroker);
113 PreloadNetworkTopologyOperationInput input = preloadNetworkTopologyOperationInput()
114 .setPreloadNetworkTopologyInformation(preloadNetworkTopologyInformationBuilder()
115 .setNetworkTopologyIdentifierStructure(networkTopologyIdentifierStructureBuilder()
116 .setNetworkName("test-network-name")
117 .setNetworkType("test-network-type").build()
121 PreloadNetworkTopologyOperationOutput output =
122 exec(genericResourceApiProvider::preloadNetworkTopologyOperation, input, RpcResult::getResult);
124 assertEquals("500", output.getResponseCode());
125 assertEquals("test exception", output.getResponseMessage());
126 assertEquals("Y", output.getAckFinalIndicator());
130 public void should_complete_with_success_when_no_errors() throws Exception {
132 svcClient.mockHasGraph(true);
133 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
134 svcClient.mockExecute(svcResultProp);
136 PreloadNetworkTopologyOperationInput input = preloadNetworkTopologyOperationInput()
137 .setPreloadNetworkTopologyInformation(preloadNetworkTopologyInformationBuilder()
138 .setNetworkTopologyIdentifierStructure(networkTopologyIdentifierStructureBuilder()
139 .setNetworkName("test-network-name")
140 .setNetworkType("test-network-type").build()
143 .setSdncRequestHeader(sdncRequestHeader()
144 .setSvcRequestId("test-svc-request-id")
145 .setSvcAction(SvcAction.Assign).build()
147 .setRequestInformation(requestInformation()
148 .setRequestId("test-request-id")
149 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
152 PreloadNetworkTopologyOperationOutput output =
153 exec(genericResourceApiProvider::preloadNetworkTopologyOperation, input, RpcResult::getResult);
155 assertEquals("200", output.getResponseCode());
156 assertEquals("Y", output.getAckFinalIndicator());
158 PreloadNetworkTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
159 assertEquals(expectedOutput, output);
162 private PreloadNetworkTopologyOperationOutput createExpectedOutput(PropBuilder svcResultProp,
163 PreloadNetworkTopologyOperationInput input) {
164 return preloadNetworkTopologyOperationOutput()
165 .setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId())
166 .setResponseCode(svcResultProp.get(svcClient.errorCode))
167 .setAckFinalIndicator(svcResultProp.get(svcClient.ackFinal)).build();