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.preloadVfModuleTopologyInformationBuilder;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadVfModuleTopologyOperationInput;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadVfModuleTopologyOperationOutput;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
15 import static org.onap.sdnc.northbound.util.MDSALUtil.vfModuleTopologyBuilder;
16 import static org.onap.sdnc.northbound.util.MDSALUtil.vfModuleTopologyIdentifierBuilder;
17 import static org.onap.sdnc.northbound.util.MDSALUtil.vnfTopologyIdentifierStructureBuilder;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.mockito.Mockito;
23 import org.mockito.junit.MockitoJUnitRunner;
24 import org.onap.sdnc.northbound.util.PropBuilder;
25 import org.opendaylight.mdsal.binding.api.DataBroker;
26 import org.opendaylight.mdsal.binding.api.TransactionChainClosedException;
27 import org.opendaylight.mdsal.binding.api.WriteTransaction;
28 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationInput;
29 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationOutput;
30 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
31 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
32 import org.opendaylight.yangtools.yang.common.RpcResult;
34 @RunWith(MockitoJUnitRunner.Silent.class)
35 public class PreloadVnfTopologyOperationRPCTest extends GenericResourceApiProviderTest {
37 private static final String SVC_OPERATION = "preload-vf-module-topology-operation";
40 public void setUp() throws Exception {
42 svcClient.setScvOperation(SVC_OPERATION);
46 public void should_fail_when_invalid_vnf_topology() throws Exception {
48 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput().build();
50 PreloadVfModuleTopologyOperationOutput output =
51 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
53 assertEquals("403", output.getResponseCode());
54 assertEquals("invalid input, null or empty preload-vf-module-topology-information.vf-module-topology.vf-module-topology-identifier.vf-module-name", output.getResponseMessage());
55 assertEquals("Y", output.getAckFinalIndicator());
60 public void should_fail_when_invalid_preload_data() throws Exception {
62 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput()
63 .setPreloadVfModuleTopologyInformation(preloadVfModuleTopologyInformationBuilder()
64 .setVnfTopologyIdentifierStructure(vnfTopologyIdentifierStructureBuilder()
65 .setVnfName("test-vnf-name").build()
69 PreloadVfModuleTopologyOperationOutput output =
70 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
72 assertEquals("403", output.getResponseCode());
73 assertEquals("invalid input, null or empty preload-vf-module-topology-information.vf-module-topology.vf-module-topology-identifier.vf-module-name", output.getResponseMessage());
74 assertEquals("Y", output.getAckFinalIndicator());
79 public void should_fail_when_client_execution_failed() throws Exception {
81 svcClient.mockHasGraph(true);
82 svcClient.mockExecuteWoServiceDataPreload(new RuntimeException("test exception"));
84 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput()
85 .setPreloadVfModuleTopologyInformation(preloadVfModuleTopologyInformationBuilder()
86 .setVnfTopologyIdentifierStructure(vnfTopologyIdentifierStructureBuilder()
87 .setVnfName("test-vnf-name")
88 .setVnfType("test-vnf-type").build()
90 .setVfModuleTopology(vfModuleTopologyBuilder()
91 .setVfModuleTopologyIdentifier(vfModuleTopologyIdentifierBuilder()
92 .setVfModuleName("vf-module-name").build()
96 .setSdncRequestHeader(sdncRequestHeader()
97 .setSvcRequestId("test-svc-request-id")
98 .setSvcAction(SvcAction.Assign).build()
100 .setRequestInformation(requestInformation()
101 .setRequestId("test-request-id")
102 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
105 PreloadVfModuleTopologyOperationOutput output =
106 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
108 assertEquals("500", output.getResponseCode());
109 assertEquals("test exception", output.getResponseMessage());
110 assertEquals("Y", output.getAckFinalIndicator());
114 public void should_fail_when_client_has_no_graph() throws Exception {
116 svcClient.mockHasGraph(false);
118 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput()
119 .setPreloadVfModuleTopologyInformation(preloadVfModuleTopologyInformationBuilder()
120 .setVnfTopologyIdentifierStructure(vnfTopologyIdentifierStructureBuilder()
121 .setVnfName("test-vnf-name")
122 .setVnfType("test-vnf-type").build()
124 .setVfModuleTopology(vfModuleTopologyBuilder()
125 .setVfModuleTopologyIdentifier(vfModuleTopologyIdentifierBuilder()
126 .setVfModuleName("vf-module-name").build()
130 .setSdncRequestHeader(sdncRequestHeader()
131 .setSvcRequestId("test-svc-request-id")
132 .setSvcAction(SvcAction.Assign).build()
134 .setRequestInformation(requestInformation()
135 .setRequestId("test-request-id")
136 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
139 PreloadVfModuleTopologyOperationOutput output =
140 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
142 assertEquals("503", output.getResponseCode());
143 assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
144 assertEquals("Y", output.getAckFinalIndicator());
148 public void should_fail_when_failed_to_update_mdsal() throws Exception {
150 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
151 svcClient.mockExecuteWoServiceData(svcResultProp);
152 svcClient.mockHasGraph(true);
153 WriteTransaction mockWriteTransaction = mock(WriteTransaction.class);
154 when(mockWriteTransaction.commit()).thenThrow(new TransactionChainClosedException("test exception"));
156 DataBroker spyDataBroker = Mockito.spy(dataBroker);
157 when(spyDataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction);
158 genericResourceApiProvider.setDataBroker(spyDataBroker);
160 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput()
161 .setPreloadVfModuleTopologyInformation(preloadVfModuleTopologyInformationBuilder()
162 .setVnfTopologyIdentifierStructure(vnfTopologyIdentifierStructureBuilder()
163 .setVnfName("test-vnf-name")
164 .setVnfType("test-vnf-type").build()
166 .setVfModuleTopology(vfModuleTopologyBuilder()
167 .setVfModuleTopologyIdentifier(vfModuleTopologyIdentifierBuilder()
168 .setVfModuleName("vf-module-name").build()
172 .setSdncRequestHeader(sdncRequestHeader()
173 .setSvcRequestId("test-svc-request-id")
174 .setSvcAction(SvcAction.Assign).build()
176 .setRequestInformation(requestInformation()
177 .setRequestId("test-request-id")
178 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
182 PreloadVfModuleTopologyOperationOutput output =
183 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
185 assertEquals("500", output.getResponseCode());
186 assertEquals("test exception", output.getResponseMessage());
187 assertEquals("Y", output.getAckFinalIndicator());
191 public void should_complete_with_success_when_no_errors() throws Exception {
193 svcClient.mockHasGraph(true);
194 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
195 svcClient.mockExecute(svcResultProp);
197 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput()
198 .setPreloadVfModuleTopologyInformation(preloadVfModuleTopologyInformationBuilder()
199 .setVnfTopologyIdentifierStructure(vnfTopologyIdentifierStructureBuilder()
200 .setVnfName("test-vnf-name")
201 .setVnfType("test-vnf-type").build()
203 .setVfModuleTopology(vfModuleTopologyBuilder()
204 .setVfModuleTopologyIdentifier(vfModuleTopologyIdentifierBuilder()
205 .setVfModuleName("vf-module-name").build()
209 .setSdncRequestHeader(sdncRequestHeader()
210 .setSvcRequestId("test-svc-request-id")
211 .setSvcAction(SvcAction.Assign).build()
213 .setRequestInformation(requestInformation()
214 .setRequestId("test-request-id")
215 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
219 PreloadVfModuleTopologyOperationOutput output =
220 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
222 assertEquals("200", output.getResponseCode());
223 assertEquals("Y", output.getAckFinalIndicator());
225 PreloadVfModuleTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
226 assertEquals(expectedOutput, output);
231 public void delete_complete_with_success_when_no_errors() throws Exception {
233 svcClient.mockHasGraph(true);
234 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
235 svcClient.mockExecute(svcResultProp);
237 PreloadVfModuleTopologyOperationInput input = preloadVfModuleTopologyOperationInput()
238 .setPreloadVfModuleTopologyInformation(preloadVfModuleTopologyInformationBuilder()
239 .setVnfTopologyIdentifierStructure(vnfTopologyIdentifierStructureBuilder()
240 .setVnfName("test-vnf-name")
241 .setVnfType("test-vnf-type").build()
243 .setVfModuleTopology(vfModuleTopologyBuilder()
244 .setVfModuleTopologyIdentifier(vfModuleTopologyIdentifierBuilder()
245 .setVfModuleName("vf-module-name").build()
249 .setSdncRequestHeader(sdncRequestHeader()
250 .setSvcRequestId("test-svc-request-id")
251 .setSvcAction(SvcAction.Delete).build()
253 .setRequestInformation(requestInformation()
254 .setRequestId("test-request-id")
255 .setRequestAction(RequestInformation.RequestAction.DeleteServiceInstance).build()
258 PreloadVfModuleTopologyOperationOutput output =
259 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
261 assertEquals("200", output.getResponseCode());
262 assertEquals("Y", output.getAckFinalIndicator());
264 PreloadVfModuleTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
265 assertEquals(expectedOutput, output);
270 private PreloadVfModuleTopologyOperationOutput createExpectedOutput(PropBuilder svcResultProp,
271 PreloadVfModuleTopologyOperationInput input) {
272 return preloadVfModuleTopologyOperationOutput()
273 .setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId())
274 .setResponseCode(svcResultProp.get(svcClient.errorCode))
275 .setAckFinalIndicator(svcResultProp.get(svcClient.ackFinal)).build();