2 * Copyright © 2018 Orange Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.transportpce.renderer.provisiondevice;
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.concurrent.ExecutionException;
14 import org.junit.Assert;
15 import org.junit.Test;
16 import org.mockito.Mockito;
17 import org.opendaylight.controller.md.sal.binding.api.MountPoint;
18 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
19 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
20 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
21 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
22 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
23 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
24 import org.opendaylight.transportpce.common.mapping.PortMapping;
25 import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
26 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
27 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
28 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
29 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
30 import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
31 import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
32 import org.opendaylight.transportpce.renderer.utils.ServiceImplementationDataUtils;
33 import org.opendaylight.transportpce.renderer.utils.TransactionUtils;
34 import org.opendaylight.transportpce.test.AbstractTest;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.DestinationBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.SourceBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnections;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathOutput;
44 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
46 public class DeviceRendererServiceImplDeleteTest extends AbstractTest {
48 private DeviceRendererService deviceRendererService;
49 private CrossConnect crossConnect;
50 private OpenRoadmInterfaces openRoadmInterfaces;
51 private OpenRoadmInterfaceFactory openRoadmInterfaceFactory;
52 private DeviceTransactionManager deviceTransactionManager;
54 private void setMountPoint(MountPoint mountPoint) {
55 MountPointService mountPointService = new MountPointServiceStub(mountPoint);
56 this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
57 this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(this.deviceTransactionManager);
58 this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
59 PortMapping portMapping = new PortMappingImpl(this.getDataBroker(), this.deviceTransactionManager,
60 this.openRoadmInterfaces);
61 this.openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(portMapping,
62 this.openRoadmInterfaces);
63 this.crossConnect = new CrossConnectImpl(this.deviceTransactionManager);
64 this.crossConnect = Mockito.spy(this.crossConnect);
65 this.deviceRendererService = new DeviceRendererServiceImpl(this.getDataBroker(),
66 this.deviceTransactionManager, this.openRoadmInterfaceFactory, this.openRoadmInterfaces,
67 this.crossConnect, portMapping);
71 public void testSetupServiceWhenDeviceIsNotMounted() {
73 ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs();
74 ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
75 Assert.assertFalse(servicePathOutput.isSuccess());
76 Assert.assertEquals("node1 is not mounted on the controller",
77 servicePathOutput.getResult());
81 public void testDeleteServiceSuccess() throws OpenRoadmInterfaceException {
82 setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
83 String [] interfaceTokens = {
84 OpenRoadmInterfacesImpl.NETWORK_TOKEN,
85 OpenRoadmInterfacesImpl.CLIENT_TOKEN,
86 OpenRoadmInterfacesImpl.TTP_TOKEN,
87 OpenRoadmInterfacesImpl.PP_TOKEN
90 String nodeId = "node1";
91 Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
92 Mockito.doNothing().when(this.openRoadmInterfaces).deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
94 for (String srcToken : interfaceTokens) {
95 String srcTP = "src-" + srcToken;
96 for (String dstToken : interfaceTokens) {
97 String dstTp = "dst-" + dstToken;
99 List<Nodes> nodes = new ArrayList<>();
100 nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
101 ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
103 ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
104 Assert.assertTrue(servicePathOutput.isSuccess());
105 Assert.assertEquals("Request processed", servicePathOutput.getResult());
111 public void testDeleteServiceFailure() throws OpenRoadmInterfaceException {
112 setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
113 String [] interfaceTokens = {
114 OpenRoadmInterfacesImpl.NETWORK_TOKEN,
115 OpenRoadmInterfacesImpl.CLIENT_TOKEN,
116 OpenRoadmInterfacesImpl.TTP_TOKEN,
117 OpenRoadmInterfacesImpl.PP_TOKEN
120 String nodeId = "node1";
121 Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
122 Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
123 .deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
125 for (String srcToken : interfaceTokens) {
126 String srcTP = "src-" + srcToken;
127 for (String dstToken : interfaceTokens) {
128 String dstTp = "dst-" + dstToken;
130 List<Nodes> nodes = new ArrayList<>();
131 nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
132 ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
134 ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
135 Assert.assertFalse(servicePathOutput.isSuccess());
136 Assert.assertNotEquals("Request processed", servicePathOutput.getResult());
142 public void testDeleteServiceNulls() throws OpenRoadmInterfaceException {
143 setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
145 String nodeId = "node1";
146 Mockito.doReturn(false).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
147 Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
148 .deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
150 List<Nodes> nodes = new ArrayList<>();
151 nodes.add(ServiceImplementationDataUtils.createNode(nodeId, null, null));
152 nodes.add(ServiceImplementationDataUtils.createNode(nodeId, "src-" + OpenRoadmInterfacesImpl.PP_TOKEN, null));
153 ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
155 ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
156 Assert.assertTrue(servicePathOutput.isSuccess());
157 Assert.assertEquals("Request processed", servicePathOutput.getResult());
161 public void testDeleteServiceFailedCrossConnect() throws OpenRoadmInterfaceException {
162 setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
164 String nodeId = "node1";
166 Mockito.doReturn(false).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
167 Mockito.doNothing().when(this.openRoadmInterfaces).deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
169 String srcTP = "src-" + OpenRoadmInterfacesImpl.TTP_TOKEN;
170 String dstTp = "dst-" + OpenRoadmInterfacesImpl.PP_TOKEN;
172 List<Nodes> nodes = new ArrayList<>();
173 nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTP, dstTp));
174 ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
176 ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
177 Assert.assertTrue(servicePathOutput.isSuccess());
178 Assert.assertEquals("Request processed", servicePathOutput.getResult());
182 public void testDeleteServiceInterfacesUsedByXc() throws OpenRoadmInterfaceException, ExecutionException,
183 InterruptedException {
184 setMountPoint(MountPointUtils.getMountPoint(new ArrayList<>(), getDataBroker()));
186 String nodeId = "node1";
188 Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.eq(nodeId), Mockito.anyString());
189 Mockito.doThrow(OpenRoadmInterfaceException.class).when(this.openRoadmInterfaces)
190 .deleteInterface(Mockito.eq(nodeId), Mockito.anyString());
192 String srcTp = "src-" + OpenRoadmInterfacesImpl.PP_TOKEN;
193 String dstTp = "dst-" + OpenRoadmInterfacesImpl.TTP_TOKEN;
194 Long waveNumber = 20L;
196 String connectionNumber = dstTp + "-" + srcTp + "-" + waveNumber;
197 RoadmConnectionsBuilder roadmConnectionsBuilder = new RoadmConnectionsBuilder();
198 roadmConnectionsBuilder.setConnectionNumber(connectionNumber)
199 .withKey(new RoadmConnectionsKey(connectionNumber));
200 String interfaceName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(srcTp, waveNumber);
201 roadmConnectionsBuilder.setSource((new SourceBuilder()).setSrcIf(interfaceName).build());
202 interfaceName = this.openRoadmInterfaceFactory.createOpenRoadmOchInterfaceName(dstTp, waveNumber);
203 roadmConnectionsBuilder.setWavelengthNumber(20L);
204 roadmConnectionsBuilder.setDestination((new DestinationBuilder()).setDstIf(interfaceName).build());
205 InstanceIdentifier<RoadmConnections> xciid = InstanceIdentifier.create(OrgOpenroadmDevice.class)
206 .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber));
207 TransactionUtils.writeTransaction(this.deviceTransactionManager, nodeId, LogicalDatastoreType.CONFIGURATION,
208 xciid, roadmConnectionsBuilder.build());
210 List<Nodes> nodes = new ArrayList<>();
211 nodes.add(ServiceImplementationDataUtils.createNode(nodeId, srcTp, dstTp));
212 ServicePathInput servicePathInput = ServiceImplementationDataUtils.buildServicePathInputs(nodes);
214 ServicePathOutput servicePathOutput = deviceRendererService.deleteServicePath(servicePathInput);
215 Assert.assertTrue(servicePathOutput.isSuccess());
216 Assert.assertEquals("Request processed", servicePathOutput.getResult());