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.build;
10 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
11 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadVfModuleTopologyInformationBuilder;
12 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadVfModuleTopologyOperationInput;
13 import static org.onap.sdnc.northbound.util.MDSALUtil.preloadVfModuleTopologyOperationOutput;
14 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
15 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
16 import static org.onap.sdnc.northbound.util.MDSALUtil.vfModuleTopologyBuilder;
17 import static org.onap.sdnc.northbound.util.MDSALUtil.vfModuleTopologyIdentifierBuilder;
18 import static org.onap.sdnc.northbound.util.MDSALUtil.vnfTopologyIdentifierStructureBuilder;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.mockito.Mockito;
24 import org.mockito.junit.MockitoJUnitRunner;
25 import org.onap.sdnc.northbound.util.PropBuilder;
26 import org.opendaylight.mdsal.binding.api.DataBroker;
27 import org.opendaylight.mdsal.binding.api.TransactionChainClosedException;
28 import org.opendaylight.mdsal.binding.api.WriteTransaction;
29 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationInput;
30 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationOutput;
31 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
32 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
33 import org.opendaylight.yangtools.yang.common.RpcResult;
35 @RunWith(MockitoJUnitRunner.Silent.class)
36 public class PreloadVnfTopologyOperationRPCTest extends GenericResourceApiProviderTest {
38 private static final String SVC_OPERATION = "preload-vf-module-topology-operation";
41 public void setUp() throws Exception {
43 svcClient.setScvOperation(SVC_OPERATION);
47 public void should_fail_when_invalid_vnf_topology() throws Exception {
49 PreloadVfModuleTopologyOperationInput input = build(preloadVfModuleTopologyOperationInput());
51 PreloadVfModuleTopologyOperationOutput output =
52 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
54 assertEquals("403", output.getResponseCode());
55 assertEquals("invalid input, null or empty preload-vf-module-topology-information.vf-module-topology.vf-module-topology-identifier.vf-module-name", output.getResponseMessage());
56 assertEquals("Y", output.getAckFinalIndicator());
61 public void should_fail_when_invalid_preload_data() throws Exception {
63 PreloadVfModuleTopologyOperationInput input = build(preloadVfModuleTopologyOperationInput()
64 .setPreloadVfModuleTopologyInformation(build(preloadVfModuleTopologyInformationBuilder()
65 .setVnfTopologyIdentifierStructure(build(vnfTopologyIdentifierStructureBuilder()
66 .setVnfName("test-vnf-name")))))
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 = build(preloadVfModuleTopologyOperationInput()
85 .setPreloadVfModuleTopologyInformation(build(preloadVfModuleTopologyInformationBuilder()
86 .setVnfTopologyIdentifierStructure(build(vnfTopologyIdentifierStructureBuilder()
87 .setVnfName("test-vnf-name")
88 .setVnfType("test-vnf-type")))
89 .setVfModuleTopology(build(vfModuleTopologyBuilder()
90 .setVfModuleTopologyIdentifier(build(vfModuleTopologyIdentifierBuilder()
91 .setVfModuleName("vf-module-name"))
93 .setSdncRequestHeader(build(sdncRequestHeader()
94 .setSvcRequestId("test-svc-request-id")
95 .setSvcAction(SvcAction.Assign)
97 .setRequestInformation(build(requestInformation()
98 .setRequestId("test-request-id")
99 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
103 PreloadVfModuleTopologyOperationOutput output =
104 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
106 assertEquals("500", output.getResponseCode());
107 assertEquals("test exception", output.getResponseMessage());
108 assertEquals("Y", output.getAckFinalIndicator());
112 public void should_fail_when_client_has_no_graph() throws Exception {
114 svcClient.mockHasGraph(false);
116 PreloadVfModuleTopologyOperationInput input = build(preloadVfModuleTopologyOperationInput()
117 .setPreloadVfModuleTopologyInformation(build(preloadVfModuleTopologyInformationBuilder()
118 .setVnfTopologyIdentifierStructure(build(vnfTopologyIdentifierStructureBuilder()
119 .setVnfName("test-vnf-name")
120 .setVnfType("test-vnf-type")))
121 .setVfModuleTopology(build(vfModuleTopologyBuilder()
122 .setVfModuleTopologyIdentifier(build(vfModuleTopologyIdentifierBuilder()
123 .setVfModuleName("vf-module-name"))
125 .setSdncRequestHeader(build(sdncRequestHeader()
126 .setSvcRequestId("test-svc-request-id")
127 .setSvcAction(SvcAction.Assign)
129 .setRequestInformation(build(requestInformation()
130 .setRequestId("test-request-id")
131 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
135 PreloadVfModuleTopologyOperationOutput output =
136 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
138 assertEquals("503", output.getResponseCode());
139 assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
140 assertEquals("Y", output.getAckFinalIndicator());
144 public void should_fail_when_failed_to_update_mdsal() throws Exception {
146 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
147 svcClient.mockExecuteWoServiceData(svcResultProp);
148 svcClient.mockHasGraph(true);
149 WriteTransaction mockWriteTransaction = mock(WriteTransaction.class);
150 when(mockWriteTransaction.commit()).thenThrow(new TransactionChainClosedException("test exception"));
152 DataBroker spyDataBroker = Mockito.spy(dataBroker);
153 when(spyDataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction);
154 genericResourceApiProvider.setDataBroker(spyDataBroker);
156 PreloadVfModuleTopologyOperationInput input = build(preloadVfModuleTopologyOperationInput()
157 .setPreloadVfModuleTopologyInformation(build(preloadVfModuleTopologyInformationBuilder()
158 .setVnfTopologyIdentifierStructure(build(vnfTopologyIdentifierStructureBuilder()
159 .setVnfName("test-vnf-name")
160 .setVnfType("test-vnf-type")))
161 .setVfModuleTopology(build(vfModuleTopologyBuilder()
162 .setVfModuleTopologyIdentifier(build(vfModuleTopologyIdentifierBuilder()
163 .setVfModuleName("vf-module-name"))
165 .setSdncRequestHeader(build(sdncRequestHeader()
166 .setSvcRequestId("test-svc-request-id")
167 .setSvcAction(SvcAction.Assign)
169 .setRequestInformation(build(requestInformation()
170 .setRequestId("test-request-id")
171 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
175 PreloadVfModuleTopologyOperationOutput output =
176 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
178 assertEquals("500", output.getResponseCode());
179 assertEquals("test exception", output.getResponseMessage());
180 assertEquals("Y", output.getAckFinalIndicator());
184 public void should_complete_with_success_when_no_errors() throws Exception {
186 svcClient.mockHasGraph(true);
187 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
188 svcClient.mockExecute(svcResultProp);
190 PreloadVfModuleTopologyOperationInput input = build(preloadVfModuleTopologyOperationInput()
191 .setPreloadVfModuleTopologyInformation(build(preloadVfModuleTopologyInformationBuilder()
192 .setVnfTopologyIdentifierStructure(build(vnfTopologyIdentifierStructureBuilder()
193 .setVnfName("test-vnf-name")
194 .setVnfType("test-vnf-type")))
195 .setVfModuleTopology(build(vfModuleTopologyBuilder()
196 .setVfModuleTopologyIdentifier(build(vfModuleTopologyIdentifierBuilder()
197 .setVfModuleName("vf-module-name"))
199 .setSdncRequestHeader(build(sdncRequestHeader()
200 .setSvcRequestId("test-svc-request-id")
201 .setSvcAction(SvcAction.Assign)
203 .setRequestInformation(build(requestInformation()
204 .setRequestId("test-request-id")
205 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
209 PreloadVfModuleTopologyOperationOutput output =
210 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
212 assertEquals("200", output.getResponseCode());
213 assertEquals("Y", output.getAckFinalIndicator());
215 PreloadVfModuleTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
216 assertEquals(expectedOutput, output);
221 public void delete_complete_with_success_when_no_errors() throws Exception {
223 svcClient.mockHasGraph(true);
224 PropBuilder svcResultProp = svcClient.createExecuteOKResult();
225 svcClient.mockExecute(svcResultProp);
227 PreloadVfModuleTopologyOperationInput input = build(preloadVfModuleTopologyOperationInput()
228 .setPreloadVfModuleTopologyInformation(build(preloadVfModuleTopologyInformationBuilder()
229 .setVnfTopologyIdentifierStructure(build(vnfTopologyIdentifierStructureBuilder()
230 .setVnfName("test-vnf-name")
231 .setVnfType("test-vnf-type")))
232 .setVfModuleTopology(build(vfModuleTopologyBuilder()
233 .setVfModuleTopologyIdentifier(build(vfModuleTopologyIdentifierBuilder()
234 .setVfModuleName("vf-module-name"))
236 .setSdncRequestHeader(build(sdncRequestHeader()
237 .setSvcRequestId("test-svc-request-id")
238 .setSvcAction(SvcAction.Delete)
240 .setRequestInformation(build(requestInformation()
241 .setRequestId("test-request-id")
242 .setRequestAction(RequestInformation.RequestAction.DeleteServiceInstance)
246 PreloadVfModuleTopologyOperationOutput output =
247 exec(genericResourceApiProvider::preloadVfModuleTopologyOperation, input, RpcResult::getResult);
249 assertEquals("200", output.getResponseCode());
250 assertEquals("Y", output.getAckFinalIndicator());
252 PreloadVfModuleTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
253 assertEquals(expectedOutput, output);
258 private PreloadVfModuleTopologyOperationOutput createExpectedOutput(PropBuilder svcResultProp,
259 PreloadVfModuleTopologyOperationInput input) {
260 return build(preloadVfModuleTopologyOperationOutput()
261 .setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId())
262 .setResponseCode(svcResultProp.get(svcClient.errorCode))
263 .setAckFinalIndicator(svcResultProp.get(svcClient.ackFinal))