import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
return returnStructure;
}
- private static void printNodesInfo(Map<NodeId, PceNode> allpcenodes) {
- Iterator<Map.Entry<NodeId, PceNode>> nodes = allpcenodes.entrySet().iterator();
- while (nodes.hasNext()) {
- PceNode pcenode = nodes.next().getValue();
- List<PceLink> links = pcenode.getOutgoingLinks();
- LOG.info("In printNodes in node {} : outgoing links {} ", pcenode.getNodeId().getValue(), links);
- }
+ private static void printNodesInfo(Map<NodeId, PceNode> allPceNodes) {
+ allPceNodes.forEach(((nodeId, pceNode) -> {
+ LOG.info("In printNodes in node {} : outgoing links {} ", pceNode.getNodeId().getValue(),
+ pceNode.getOutgoingLinks());
+ }));
}
}
import static org.junit.Assert.assertNotNull;
+import java.util.concurrent.ExecutionException;
import org.junit.Before;
import org.junit.Test;
-import org.mockito.Mockito;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
import org.opendaylight.transportpce.common.network.RequestProcessor;
import org.opendaylight.transportpce.pce.service.PathComputationService;
import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
+import org.opendaylight.transportpce.pce.utils.PceTestData;
+import org.opendaylight.transportpce.pce.utils.PceTestUtils;
+import org.opendaylight.transportpce.pce.utils.TransactionUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.CancelResourceReserveInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder;
private PathComputationService pathComputationService;
private NotificationPublishService notificationPublishService;
private NetworkTransactionImpl networkTransaction;
- private RequestProcessor requestProcessor;
private PceServiceRPCImpl pceServiceRPC;
@Before
- public void setUp() {
+ public void setUp() throws ExecutionException, InterruptedException {
+ PceTestUtils.writeNetworkIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
+ TransactionUtils.getNetworkForSpanLoss());
notificationPublishService = new NotificationPublishServiceMock();
- requestProcessor = Mockito.mock(RequestProcessor.class);
- networkTransaction = new NetworkTransactionImpl(requestProcessor);
+ networkTransaction = new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker()));
pathComputationService = new PathComputationServiceImpl(networkTransaction, notificationPublishService);
pceServiceRPC = new PceServiceRPCImpl(pathComputationService);
+
}
@Test
@Test
public void testPathComputationRequest() {
- PathComputationRequestInput pathComputationRequestInput =
- new PathComputationRequestInputBuilder().build();
- assertNotNull(pceServiceRPC.pathComputationRequest(pathComputationRequestInput));
+ assertNotNull(pceServiceRPC.pathComputationRequest(PceTestData.getPCERequest()));
}
+ @Test
+ public void testPathComputationRequestCoRoutingOrGeneral2() {
+ assertNotNull(pceServiceRPC.pathComputationRequest(
+ PceTestData.getPathComputationRequestInputWithCoRoutingOrGeneral2()));
+ }
}
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.pce.utils.TransactionUtils;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
-import org.opendaylight.yangtools.yang.common.Uint32;
-
-
public class PceOpticalNodeTest extends AbstractTest {
pceOpticalNode = new PceOpticalNode(specificNode,
OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initWLlist();
+ Assert.assertTrue(pceOpticalNode.isValid());
+ Assert.assertTrue(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
pceOpticalNode = new PceOpticalNode(node,
OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initWLlist();
+ Assert.assertTrue(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
pceOpticalNode = new PceOpticalNode(node,
OpenroadmNodeType.XPONDER, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initWLlist();
+ Assert.assertTrue(pceOpticalNode.isValid());
+ Assert.assertTrue(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
pceOpticalNode = new PceOpticalNode(node,
OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initXndrTps();
+ pceOpticalNode.initWLlist();
+ Assert.assertFalse(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
public void testGetRdmSrgClient() {
- NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
- Node specificNode = node1Builder.build();
- pceOpticalNode = new PceOpticalNode(specificNode,
+ pceOpticalNode = new PceOpticalNode(node,
OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initSrgTps();
- pceOpticalNode.getRdmSrgClient("7");
+ Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
+ Assert.assertFalse(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
pceOpticalNode.initSrgTps();
pceOpticalNode.initWLlist();
pceOpticalNode.initXndrTps();
- pceOpticalNode.getRdmSrgClient("7");
+ Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
+ Assert.assertFalse(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
public void testGetRdmSrgClientDeg() {
- NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
- Node specificNode = node1Builder.build();
- pceOpticalNode = new PceOpticalNode(specificNode,
+ pceOpticalNode = new PceOpticalNode(node,
OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initSrgTps();
- pceOpticalNode.getRdmSrgClient("7");
+ Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
+ Assert.assertFalse(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
@Test
pceOpticalNode = new PceOpticalNode(specificNode,
OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initSrgTps();
- pceOpticalNode.getRdmSrgClient("5");
+ Assert.assertFalse(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
+ Assert.assertNull(pceOpticalNode.getRdmSrgClient("5"));
}
@Test
pceOpticalNode = new PceOpticalNode(node,
OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
pceOpticalNode.initSrgTps();
- pceOpticalNode.getRdmSrgClient("2");
+ Assert.assertNull(pceOpticalNode.getRdmSrgClient("2"));
+ Assert.assertFalse(pceOpticalNode.isValid());
+ Assert.assertFalse(pceOpticalNode.checkWL(12));
+ Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
}
private List<SupportingNode> geSupportingNodes() {
private DegreeAttributes getDegAttributes() {
return (new DegreeAttributesBuilder())
.setAvailableWavelengths(
- Collections.singletonList(new AvailableWavelengthsBuilder()
- .setIndex(20L)
- .build()))
+ Collections.singletonList(new AvailableWavelengthsBuilder().setIndex(20L).build()))
.build();
}
private SrgAttributes getSrgAttributes() {
- return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
+ return new SrgAttributesBuilder().setAvailableWavelengths(TransactionUtils.create96AvalWaveSrg()).build();
}
private DegreeAttributes getEmptyDegAttributes() {
return (new DegreeAttributesBuilder())
- .setAvailableWavelengths(
- new ArrayList<>())
+ .setAvailableWavelengths(new ArrayList<>())
.build();
}
}
private TerminationPointBuilder getTerminationPointBuilder() {
- return new TerminationPointBuilder()
- .setTpId(new TpId("2"));
+ return new TerminationPointBuilder().setTpId(new TpId("2"));
}
private TerminationPoint1Builder getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) {
- return new TerminationPoint1Builder()
- .setTpType(openroadmTpType);
+ return new TerminationPoint1Builder().setTpType(openroadmTpType);
}
.setTailEquipmentId("destNode" + "--" + "destTp").build());
}
- private static List<org.opendaylight.yang.gen
- .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
-
- List<org.opendaylight.yang.gen
- .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
- waveList = new ArrayList<>();
-
- for (int i = 1; i < 97; i++) {
- org.opendaylight.yang.gen
- .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder
- avalBldr = new org.opendaylight.yang.gen
- .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder()
- .setIndex(Uint32.valueOf(i))
- .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
- .AvailableWavelengthsKey(Uint32.valueOf(i)));
- waveList.add(avalBldr.build());
- }
- return waveList;
- }
}
*/
package org.opendaylight.transportpce.pce.service;
+import java.math.BigDecimal;
+import java.util.Arrays;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.opendaylight.transportpce.pce.utils.PceTestUtils;
import org.opendaylight.transportpce.pce.utils.TransactionUtils;
import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.PathBandwidth;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.generic.path.properties.PathPropertiesBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.generic.path.properties.path.properties.PathMetricBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.no.path.info.NoPathBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.Response;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.ResponseBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.response.response.type.NoPathCaseBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.response.response.type.PathCaseBuilder;
+
+
public class PathComputationServiceImplTest extends AbstractTest {
}
+ @Test
+ public void testPathComputationRequestNoPath() {
+ Response response = new ResponseBuilder().setResponseType(new NoPathCaseBuilder()
+ .setNoPath(new NoPathBuilder().setNoPath("no path").build()).build()).build();
+
+ pathComputationServiceImpl.generateGnpyResponse(response,"path");
+ Assert.assertNotNull(
+ pathComputationServiceImpl.pathComputationRequest(PceTestData.getPCE_test3_request_54()));
+
+ }
+
+ @Test
+ public void testPathComputationRequestPathCase() {
+ Response response = new ResponseBuilder().setResponseType(new PathCaseBuilder()
+ .setPathProperties(new PathPropertiesBuilder().setPathMetric(Arrays.asList(new PathMetricBuilder()
+ .setAccumulativeValue(new BigDecimal(21))
+ .setMetricType(PathBandwidth.class).build()))
+ .build()).build()).build();
+
+ pathComputationServiceImpl.generateGnpyResponse(response,"path");
+ Assert.assertNotNull(
+ pathComputationServiceImpl.pathComputationRequest(PceTestData.getPCE_test3_request_54()));
+
+ }
+
@Test(expected = Exception.class)
public void generateGnpyResponse() throws Exception {
PceTestUtils.writeNetworkIntoDataStore(dataBroker, dataStoreContext, TransactionUtils.getNetworkForSpanLoss());
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.MappingBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengthsBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.Interface;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.AmplifiedLinkBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.SpanBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.CurrentPmList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.CurrentPmListBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.group.CurrentPm;
import org.opendaylight.yangtools.yang.binding.Augmentation;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint32;
public final class TransactionUtils {
supportingNodeListA.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network"))
.setNodeRef(new NodeId("ROADM-A1")).build());
Node ietfNodeA = new NodeBuilder().setNodeId(new NodeId("ROADM-A1-DEG2")).setSupportingNode(supportingNodeListA)
- .build();
+ .addAugmentation(Node1.class,getNode1AugImpl()).build();
List<SupportingNode> supportingNodeListC = new ArrayList<>();
supportingNodeListC.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network"))
+
.setNodeRef(new NodeId("ROADM-C1")).build());
+ supportingNodeListC.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("clli-network"))
+ .setNodeRef(new NodeId("ROADM-C2")).build());
+
Node ietfNodeC = new NodeBuilder().setNodeId(new NodeId("ROADM-C1-DEG1")).setSupportingNode(supportingNodeListC)
+ .addAugmentation(Node1.class,getNode1AugImpl())
+ .addAugmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class,
+ getNode1())
.build();
List<Node> ietfNodeList = new ArrayList<>();
ietfNodeList.add(ietfNodeA);
return ietfNetworkBldr.build();
}
+ private static Augmentation<Node> getNode1AugImpl() {
+ return new Node1Builder().setNodeType(OpenroadmNodeType.DEGREE).build();
+ }
+
public static Mapping getMapping1() {
return new MappingBuilder().setLogicalConnectionPoint("DEG2-TTP-TXRX").setSupportingOts("OTS-DEG2-TTP-TXRX")
.build();
currentPmEntryListC.add(currentPmEntryC);
return Optional.of(new CurrentPmListBuilder().setCurrentPmEntry(currentPmEntryListC).build());
}
+
+ private static org.opendaylight
+ .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1() {
+ return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
+ .setSrgAttributes(getSrgAttributes())
+ .setDegreeAttributes(getDegAttributes())
+ .build();
+ }
+
+ private static DegreeAttributes getDegAttributes() {
+ return (new DegreeAttributesBuilder())
+ .setAvailableWavelengths(
+ Collections.singletonList(new AvailableWavelengthsBuilder()
+ .setIndex(20L)
+ .build()))
+ .build();
+ }
+
+ private static SrgAttributes getSrgAttributes() {
+ return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
+ }
+
+ public static List<org.opendaylight.yang.gen
+ .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
+
+ List<org.opendaylight.yang.gen
+ .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
+ waveList = new ArrayList<>();
+
+ for (int i = 1; i < 97; i++) {
+ org.opendaylight.yang.gen
+ .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder
+ avalBldr = new org.opendaylight.yang.gen
+ .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder()
+ .setIndex(Uint32.valueOf(i))
+ .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
+ .AvailableWavelengthsKey(Uint32.valueOf(i)));
+ waveList.add(avalBldr.build());
+ }
+ return waveList;
+ }
+
+
}