From a77937222db28970e716507baa1d221679d4e0d0 Mon Sep 17 00:00:00 2001 From: AhmedEldeeb50 Date: Sun, 26 Apr 2020 16:07:59 +0200 Subject: [PATCH] update PceLink test object and NetworkService JIRA: TRNSPRTPCE-209 Signed-off-by: AhmedEldeeb50 Change-Id: If3d8ba209f1f4e1ca91f8b19d3e6e9f5a4ecf212 --- .../pce/PceSendingPceRPCsTest.java | 16 +- .../constraints/PceConstraintsCalcTest.java | 15 +- .../ServiceDataStoreOperationsImplTest.java | 35 +++ .../pce/networkanalyzer/PceResultTest.java | 57 ++++ .../PathComputationServiceImplTest.java | 26 +- .../transportpce/pce/utils/PceTestUtils.java | 59 ++-- .../pce/utils/TransactionUtils.java | 292 ++++++++++++++++++ 7 files changed, 459 insertions(+), 41 deletions(-) create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImplTest.java create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceResultTest.java create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/utils/TransactionUtils.java diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java index 8cd611e28..06a5838db 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java @@ -10,35 +10,34 @@ package org.opendaylight.transportpce.pce; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.transportpce.common.DataStoreContext; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.RequestProcessor; 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; - -@RunWith(MockitoJUnitRunner.class) +//@RunWith(MockitoJUnitRunner.class) public class PceSendingPceRPCsTest extends AbstractTest { private PceSendingPceRPCs pceSendingPceRPCs; private NetworkTransactionImpl networkTransaction; private DataStoreContext dataStoreContext = this.getDataStoreContextUtil(); - private DataBroker dataBroker = dataStoreContext.getDataBroker(); + private DataBroker dataBroker = this.getDataBroker(); @Before public void setUp() throws Exception { // PceTestUtils.writeTopologyIntoDataStore( -// dataBroker, dataStoreContext, "./topologyData/basePceTopology.json"); +// dataBroker, dataStoreContext, "./topologyData/NW-simple-topology.xml"); + PceTestUtils.writeNetworkIntoDataStore(dataBroker, dataStoreContext, TransactionUtils.getNetworkForSpanLoss()); networkTransaction = new NetworkTransactionImpl(new RequestProcessor(dataBroker)); pceSendingPceRPCs = new PceSendingPceRPCs(); pceSendingPceRPCs = - new PceSendingPceRPCs(PceTestData.getPCERequest(), networkTransaction - ); + new PceSendingPceRPCs(PceTestData.getPCE_test1_request_54(), networkTransaction); } @Test @@ -73,5 +72,4 @@ public class PceSendingPceRPCsTest extends AbstractTest { Assert.assertNull(pceSendingPceRPCs.getGnpyZtoA()); } - } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java index f3d815266..b6881c131 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java @@ -10,18 +10,27 @@ package org.opendaylight.transportpce.pce.constraints; import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.transportpce.common.DataStoreContext; +import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.NetworkTransactionService; +import org.opendaylight.transportpce.common.network.RequestProcessor; 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; public class PceConstraintsCalcTest extends AbstractTest { private static PceConstraintsCalc pceConstraintsCalc = null; private static NetworkTransactionService networkTransactionService = null; + private DataStoreContext dataStoreContext = this.getDataStoreContextUtil(); + private DataBroker dataBroker = this.getDataBroker(); @Before - public void setup() { - networkTransactionService = Mockito.mock(NetworkTransactionService.class); + public void setup() throws Exception { + // networkTransactionService = Mockito.mock(NetworkTransactionService.class); + networkTransactionService = new NetworkTransactionImpl(new RequestProcessor(dataBroker)); + PceTestUtils.writeNetworkIntoDataStore(dataBroker, dataStoreContext, TransactionUtils.getNetworkForSpanLoss()); } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImplTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImplTest.java new file mode 100644 index 000000000..574cc2cff --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImplTest.java @@ -0,0 +1,35 @@ +/* + * Copyright © 2020 Orange Labs, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.transportpce.pce.gnpy; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; +import org.opendaylight.transportpce.test.AbstractTest; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice; + +public class ServiceDataStoreOperationsImplTest extends AbstractTest { + + ServiceDataStoreOperationsImpl serviceDataStoreOperations; + NetworkTransactionImpl networkTransaction = Mockito.mock(NetworkTransactionImpl.class); + OrgOpenroadmDevice orgOpenroadmDevice = Mockito.mock(OrgOpenroadmDevice.class); + + @Before + public void setUp() { + serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(networkTransaction); + } + + // TODO: fix augmentation issue + @Test + public void createXMLFromDeviceTest() throws GnpyException { + serviceDataStoreOperations.createXMLFromDevice(this.getDataStoreContextUtil(), + orgOpenroadmDevice, "some-output"); + } +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceResultTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceResultTest.java new file mode 100644 index 000000000..522e34376 --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceResultTest.java @@ -0,0 +1,57 @@ +/* + * Copyright © 2020 Orange Labs, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.transportpce.pce.networkanalyzer; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.transportpce.test.AbstractTest; + +public class PceResultTest extends AbstractTest { + + private PceResult pceResult = null; + + @Before + public void setUp() { + pceResult = new PceResult(); + } + + @Test + public void serviceTypeTest() { + String serviceType = "some-service"; + pceResult.setServiceType(serviceType); + Assert.assertEquals(pceResult.getServiceType(), serviceType); + } + + @Test + public void setResultTribSlotNbTest() { + int nb = 10; + pceResult.setResultTribSlotNb(nb); + Assert.assertEquals(pceResult.getResultTribSlotNb(), nb); + } + + @Test + public void calcMessageTest() { + pceResult.setCalcMessage("some-message"); + pceResult.setRC("200"); + Assert.assertEquals(pceResult.getMessage(), "Path is calculated by PCE"); + } + + @Test + public void waveLengthTest() { + Assert.assertEquals(pceResult.getResultWavelength(), -1); + pceResult.setResultWavelength(12); + Assert.assertEquals(pceResult.getResultWavelength(), 12); + } + + @Test + public void localCause() { + pceResult.setLocalCause(PceResult.LocalCause.INT_PROBLEM); + Assert.assertEquals(pceResult.getLocalCause(), PceResult.LocalCause.INT_PROBLEM); + } +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java index b7ccf9183..62de9fb3f 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java @@ -11,21 +11,35 @@ import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.transportpce.common.DataStoreContext; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; +import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.common.network.RequestProcessor; import org.opendaylight.transportpce.pce.gnpy.GnpyResult; import org.opendaylight.transportpce.pce.gnpy.GnpyTopoImpl; 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; public class PathComputationServiceImplTest extends AbstractTest { private PathComputationServiceImpl pathComputationServiceImpl; + private static NetworkTransactionService networkTransactionService = null; + private static GnpyTopoImpl gnpyTopoImpl = null; + private static GnpyResult gnpyResult = null; + private DataStoreContext dataStoreContext = this.getDataStoreContextUtil(); + private DataBroker dataBroker = this.getDataBroker(); @Before public void setUp() { + networkTransactionService = Mockito.mock(NetworkTransactionService.class); + gnpyTopoImpl = Mockito.mock(GnpyTopoImpl.class); + gnpyResult = Mockito.mock(GnpyResult.class); pathComputationServiceImpl = new PathComputationServiceImpl( - new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker())), + networkTransactionService, this.getNotificationPublishService()); pathComputationServiceImpl.init(); } @@ -33,18 +47,18 @@ public class PathComputationServiceImplTest extends AbstractTest { @Test public void pathComputationRequestTest() { Assert.assertNotNull( - pathComputationServiceImpl.pathComputationRequest(PceTestData.getEmptyPCERequest())); + pathComputationServiceImpl.pathComputationRequest(PceTestData.getPCE_simpletopology_test1_request())); } @Test(expected = Exception.class) public void generateGnpyResponse() throws Exception { - - GnpyResult gnpyResult = + PceTestUtils.writeNetworkIntoDataStore(dataBroker, dataStoreContext, TransactionUtils.getNetworkForSpanLoss()); + GnpyResult gnpyResult2 = new GnpyResult("A-to-Z", new GnpyTopoImpl(new NetworkTransactionImpl( - new RequestProcessor(this.getNewDataBroker())))); - pathComputationServiceImpl.generateGnpyResponse(gnpyResult.getResponse(), "A-to-Z"); + new RequestProcessor(dataBroker)))); + pathComputationServiceImpl.generateGnpyResponse(gnpyResult2.getResponse(), "A-to-Z"); } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java index 6fffc8e14..ab1eeef0d 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java @@ -48,6 +48,7 @@ public final class PceTestUtils { public static void writeTopologyIntoDataStore(DataBroker dataBroker, DataStoreContext dataStoreContext, String topologyDataPath) throws ExecutionException, InterruptedException { + DataObjectConverter dataObjectConverter = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContext); InputStream resourceAsStream = PceTestUtils.class.getClassLoader().getResourceAsStream(topologyDataPath); Optional> normalizedNode @@ -57,13 +58,25 @@ public final class PceTestUtils { MapEntryNode mapNode = ((MapNode) next).getValue().iterator().next(); Optional dataObject = dataObjectConverter.getDataObject(mapNode, Network.QNAME); InstanceIdentifier nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) - .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) - .build(); + .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) + .build(); WriteTransaction dataWriteTransaction = dataBroker.newWriteOnlyTransaction(); dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, (Network) dataObject.get()); dataWriteTransaction.commit().get(); } + public static void writeNetworkIntoDataStore(DataBroker dataBroker, + DataStoreContext dataStoreContext, Network network) + throws ExecutionException, InterruptedException { + + InstanceIdentifier nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) + .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) + .build(); + WriteTransaction dataWriteTransaction = dataBroker.newWriteOnlyTransaction(); + dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network); + dataWriteTransaction.commit().get(); + } + public static void checkConfigurationResponse(PathComputationRequestOutput output, PathComputationRequestOutput expectedOutput) { Assert.assertNotNull(output); @@ -91,46 +104,46 @@ public final class PceTestUtils { Assert.assertEquals(atozSize, ztoaSize); Long actualAToZWavel = output.getResponseParameters().getPathDescription().getAToZDirection() - .getAToZWavelengthNumber().toJava(); + .getAToZWavelengthNumber().toJava(); Long expectedAToZWavel = expectedOutput.getResponseParameters().getPathDescription().getAToZDirection() - .getAToZWavelengthNumber().toJava(); + .getAToZWavelengthNumber().toJava(); Assert.assertEquals(actualAToZWavel, expectedAToZWavel); Long actualZtoAWavel = output.getResponseParameters().getPathDescription().getZToADirection() - .getZToAWavelengthNumber().toJava(); + .getZToAWavelengthNumber().toJava(); Long expectedZtoAWavel = expectedOutput.getResponseParameters().getPathDescription().getZToADirection() - .getZToAWavelengthNumber().toJava(); + .getZToAWavelengthNumber().toJava(); Assert.assertEquals(actualZtoAWavel, expectedZtoAWavel); Long actualAToZRate = output.getResponseParameters().getPathDescription().getAToZDirection().getRate().toJava(); Long expectedAToZRate = expectedOutput.getResponseParameters().getPathDescription().getAToZDirection() - .getRate().toJava(); + .getRate().toJava(); Assert.assertEquals(expectedAToZRate, actualAToZRate); Long actualZToARate = output.getResponseParameters().getPathDescription().getZToADirection().getRate().toJava(); Long expectedZToARate = expectedOutput.getResponseParameters().getPathDescription().getZToADirection() - .getRate().toJava(); + .getRate().toJava(); Assert.assertEquals(actualZToARate, expectedZToARate); } private static List getNodesFromPath(PathComputationRequestOutput output) { List atozList = output.getResponseParameters().getPathDescription().getAToZDirection().getAToZ(); return atozList.stream() - .filter(aToZ -> { - if ((aToZ.getResource() == null) || (aToZ.getResource().getResource() == null)) { - LOG.debug("Diversity constraint: Resource of AToZ node {} is null! Skipping this node!", - aToZ.getId()); - return false; - } - return aToZ.getResource().getResource() instanceof Node; - }).map(aToZ -> { - Node node = (Node) aToZ.getResource().getResource(); - if (node.getNodeId() == null) { - LOG.warn("Node in AToZ node {} contains null! Skipping this node!", aToZ.getId()); - return null; - } - return node.getNodeId().toString(); - }).collect(Collectors.toList()); + .filter(aToZ -> { + if ((aToZ.getResource() == null) || (aToZ.getResource().getResource() == null)) { + LOG.debug("Diversity constraint: Resource of AToZ node {} is null! Skipping this node!", + aToZ.getId()); + return false; + } + return aToZ.getResource().getResource() instanceof Node; + }).map(aToZ -> { + Node node = (Node) aToZ.getResource().getResource(); + if (node.getNodeId() == null) { + LOG.warn("Node in AToZ node {} contains null! Skipping this node!", aToZ.getId()); + return null; + } + return node.getNodeId().toString(); + }).collect(Collectors.toList()); } public static boolean comparePath(PathComputationRequestOutput output1, PathComputationRequestOutput output2) { diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/TransactionUtils.java b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/TransactionUtils.java new file mode 100644 index 000000000..f423c38a9 --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/TransactionUtils.java @@ -0,0 +1,292 @@ +/* + * Copyright © 2020 Orange Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + + +package org.opendaylight.transportpce.pce.utils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.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.state.types.rev181130.State; +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.equipment.states.types.rev181130.AdminStates; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder; +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.types.rev181130.OpenroadmLinkType; +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.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.group.CurrentPmBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.list.CurrentPmEntry; +import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.list.CurrentPmEntryBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.val.group.Measurement; +import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.val.group.MeasurementBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmDataType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.Validity; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime; +import org.opendaylight.yangtools.yang.binding.Augmentation; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +public final class TransactionUtils { + + private TransactionUtils() { + } + + @SuppressWarnings("unchecked") + public static void writeTransaction(DataBroker dataBroker, InstanceIdentifier instanceIdentifier, + DataObject object) { + @NonNull + WriteTransaction transaction = dataBroker.newWriteOnlyTransaction(); + transaction.put(LogicalDatastoreType.CONFIGURATION, instanceIdentifier, object); + transaction.commit(); + } + + public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks + .Network getNetworkForSpanLoss() { + + List linkConcentationValues = new ArrayList<>(); + LinkConcatenation linkConcatenation = new LinkConcatenationBuilder() + .setFiberType(LinkConcatenation.FiberType.Truewave) + .setPmd(new FiberPmd(BigDecimal.ONE)) + .setSRLGId(Long.valueOf(1)) + .setSRLGLength(Long.valueOf(1)) + .build(); + LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder() + .setFiberType(LinkConcatenation.FiberType.Truewave) + .setPmd(new FiberPmd(BigDecimal.ONE)) + .setSRLGId(Long.valueOf(1)) + .setSRLGLength(Long.valueOf(1)) + .build(); + linkConcentationValues.add(linkConcatenation); + linkConcentationValues.add(linkConcatenation2); + // create 2 openroadm-topology degree nodes, end points of the link to be + // measured + List supportingNodeListA = new ArrayList<>(); + 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(); + List supportingNodeListC = new ArrayList<>(); + supportingNodeListC.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network")) + .setNodeRef(new NodeId("ROADM-C1")).build()); + Node ietfNodeC = new NodeBuilder().setNodeId(new NodeId("ROADM-C1-DEG1")).setSupportingNode(supportingNodeListC) + .build(); + List ietfNodeList = new ArrayList<>(); + ietfNodeList.add(ietfNodeA); + ietfNodeList.add(ietfNodeC); + + List + amplifiedLinkValues = new ArrayList<>(); + org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al = + new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes + .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder() + .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130 + .amplified.link.attributes.amplified.link.section.element.section.element + .SpanBuilder() + .setSpan( + new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified + .link.attributes.amplified.link.section.element.section + .element.span.SpanBuilder() + .setAdministrativeState(AdminStates.InService) + .setAutoSpanloss(true) + .setClfi("clfi") + .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE)) + .setLinkConcatenation(linkConcentationValues) + .setSpanlossBase(new RatioDB(BigDecimal.ONE)) + .setSpanlossCurrent(new RatioDB(BigDecimal.ONE)) + .build()) + .build()) + .build()) + .setSectionEltNumber(Integer.valueOf(1)).build(); + org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 = + new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes + .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder() + .setSectionElement( + new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link + .attributes.amplified.link.section.element.section.element.SpanBuilder() + .setSpan( + new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130 + .amplified.link + .attributes.amplified.link.section.element.section.element.span + .SpanBuilder() + .setAdministrativeState(AdminStates.InService) + .setAutoSpanloss(true) + .setClfi("clfi") + .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE)) + .setLinkConcatenation(linkConcentationValues) + .setSpanlossBase(new RatioDB(BigDecimal.ONE)) + .setSpanlossCurrent(new RatioDB(BigDecimal.ONE)) + .build()) + .build()) + .build()) + .setSectionEltNumber(Integer.valueOf(1)).build(); + amplifiedLinkValues.add(al); + amplifiedLinkValues.add(al2); + Map>, Augmentation> map = Collections.emptyMap(); + Augmentation aug11 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123)) + .setAdministrativeState(State.InService) + .setAmplified(true) + .setLinkLatency(Long.valueOf(123)) + .setLinkLength(BigDecimal.valueOf(123)) + .setOMSAttributes(new OMSAttributesBuilder() + .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build()) + .setOppositeLink(new LinkId("link 1")) + .setSpan(new SpanBuilder().build()) + .setTEMetric(Long.valueOf(123)).build()) + .setOperationalState(State.InService).build(); + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1 aug12 = + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder() + .setLinkType(OpenroadmLinkType.ROADMTOROADM).build(); + Augmentation aug21 = new Link1Builder() + .setAdministrativeGroup(Long.valueOf(123)) + .setAdministrativeState(State.InService) + .setAmplified(true) + .setLinkLatency(Long.valueOf(123)) + .setLinkLength(BigDecimal.valueOf(123)) + .setOMSAttributes(new OMSAttributesBuilder() + .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build()) + .setOppositeLink(new LinkId("link 1")) + .setSpan(new SpanBuilder().build()) + .setTEMetric(Long.valueOf(123)).build()) + .setOperationalState(State.InService).build(); + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1 aug22 = + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder() + .setLinkType(OpenroadmLinkType.ROADMTOROADM).build(); + // create the roadm-to-roadm link to be measured + List ietfLinkList = new ArrayList<>(); + Link roadm2roadmLink = new LinkBuilder().setLinkId(new LinkId("ROADM-A1-to-ROADM-C1")) + .setSource(new SourceBuilder().setSourceNode(ietfNodeA.getNodeId()) + .setSourceTp("DEG2-TTP-TXRX").build()) + .setDestination( + new DestinationBuilder().setDestNode(ietfNodeC.getNodeId()).setDestTp("DEG1-TTP-TXRX").build()) + .addAugmentation(Link1.class, aug11) + .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, + aug12) + .addAugmentation(Link1.class, aug21) + .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, + aug22) + .build(); + ietfLinkList.add(roadm2roadmLink); + // create the ietf network + Network1 openroadmAugmToIetfNetwork = new Network1Builder().setLink(ietfLinkList).build(); + // openroadm Topology builder + NetworkBuilder ietfNetworkBldr = new NetworkBuilder() + .setNetworkId(new NetworkId("openroadm-topology")) + .setNode(ietfNodeList) + .addAugmentation(Network1.class, openroadmAugmToIetfNetwork); + + return ietfNetworkBldr.build(); + } + + public static Mapping getMapping1() { + return new MappingBuilder().setLogicalConnectionPoint("DEG2-TTP-TXRX").setSupportingOts("OTS-DEG2-TTP-TXRX") + .build(); + } + + public static Mapping getMapping2() { + return new MappingBuilder().setLogicalConnectionPoint("DEG1-TTP-TXRX").setSupportingOts("OTS-DEG1-TTP-TXRX") + .build(); + } + + public static Optional getCurrentPmListA() { + Measurement measurementA = new MeasurementBuilder() + .setGranularity(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmGranularity._15min) + .setPmParameterValue(new PmDataType(new BigDecimal("-3.5"))) + .setValidity(Validity.Complete) + .build(); + List measurementListA = new ArrayList<>(); + measurementListA.add(measurementA); + CurrentPm cpA = new CurrentPmBuilder() + .setType(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmNamesEnum + .OpticalPowerOutput) + .setMeasurement(measurementListA) + .build(); + List currentPmListA = new ArrayList<>(); + currentPmListA.add(cpA); + InstanceIdentifier interfaceIIDA = InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey("OTS-DEG2-TTP-TXRX")); + CurrentPmEntry currentPmEntryA = new CurrentPmEntryBuilder() + .setCurrentPm(currentPmListA) + .setPmResourceInstance(interfaceIIDA) + .setPmResourceType( + org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev181019.ResourceTypeEnum + .Interface) + .setPmResourceTypeExtension("") + .setRetrievalTime(new DateAndTime("2018-06-07T13:22:58+00:00")) + .build(); + List currentPmEntryListA = new ArrayList<>(); + currentPmEntryListA.add(currentPmEntryA); + return Optional.of(new CurrentPmListBuilder().setCurrentPmEntry(currentPmEntryListA).build()); + } + + public static Optional getCurrentPmListC() { + Measurement measurementC = new MeasurementBuilder() + .setGranularity(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmGranularity._15min) + .setPmParameterValue(new PmDataType(new BigDecimal("-18.1"))) + .setValidity(Validity.Complete) + .build(); + List measurementListC = new ArrayList<>(); + measurementListC.add(measurementC); + CurrentPm cpC = new CurrentPmBuilder() + .setType(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmNamesEnum + .OpticalPowerInput) + .setMeasurement(measurementListC) + .build(); + List currentPmListC = new ArrayList<>(); + currentPmListC.add(cpC); + InstanceIdentifier interfaceIIDC = InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey("OTS-DEG1-TTP-TXRX")); + CurrentPmEntry currentPmEntryC = new CurrentPmEntryBuilder() + .setCurrentPm(currentPmListC) + .setPmResourceInstance(interfaceIIDC) + .setPmResourceType( + org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev181019.ResourceTypeEnum + .Interface) + .setPmResourceTypeExtension("") + .setRetrievalTime(new DateAndTime("2018-06-07T13:22:58+00:00")) + .build(); + List currentPmEntryListC = new ArrayList<>(); + currentPmEntryListC.add(currentPmEntryC); + return Optional.of(new CurrentPmListBuilder().setCurrentPmEntry(currentPmEntryListC).build()); + } +} -- 2.36.6