initial olm unit testing commit
[transportpce.git] / olm / src / test / java / org / opendaylight / transportpce / olm / util / TransactionUtils.java
diff --git a/olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java b/olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java
new file mode 100644 (file)
index 0000000..4ae7f82
--- /dev/null
@@ -0,0 +1,376 @@
+/*
+ * Copyright © 2018 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.olm.util;
+
+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.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.FiberPmd;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.RatioDB;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.amplified.link.SectionElementBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.span.attributes.LinkConcatenation;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.span.attributes.LinkConcatenationBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Link1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.OMSAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.oms.attributes.AmplifiedLinkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.oms.attributes.SpanBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.LinkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Network1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Network1Builder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.Link;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.DestinationBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.SourceBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.SupportingLink;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.SupportingLinkBuilder;
+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() {
+
+    }
+
+    public static boolean writeTransaction(DataBroker dataBroker, InstanceIdentifier instanceIdentifier,
+        DataObject object) {
+        ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+        transaction.put(LogicalDatastoreType.CONFIGURATION, instanceIdentifier, object, true);
+        transaction.commit();// submit(Timeouts.DATASTORE_WRITE, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT).get();
+        return true;
+    }
+
+//
+//    public static boolean writeTransaction(DataBroker dataBroker, LogicalDatastoreType logicalDatastoreType,
+//        InstanceIdentifier instanceIdentifier,
+//        DataObject object)
+
+//    public static DataObject readTransaction(DeviceTransactionManager deviceTransactionManager,
+//                                  String nodeId,
+//                                  LogicalDatastoreType logicalDatastoreType,
+//                                  InstanceIdentifier<? extends DataObject> instanceIdentifier)
+//            throws ExecutionException, InterruptedException {
+//        Future<Optional<DeviceTransaction>> deviceTxFuture =
+//                deviceTransactionManager.getDeviceTransaction(nodeId);
+//        if (!deviceTxFuture.get().isPresent()) {
+//            return null;
+//        }
+//        DeviceTransaction deviceTx = deviceTxFuture.get().get();
+//        com.google.common.base.Optional<? extends DataObject> readOpt
+//                = deviceTx.read(logicalDatastoreType, instanceIdentifier).get();
+//        if (!readOpt.isPresent()) {
+//            return null;
+//        }
+//        return readOpt.get();
+//    }
+
+    public static Network1 getNullNetwork() {
+        Network1 network = new Network1Builder().setLink(null).build();
+        Optional.of(network);
+        return network;
+    }
+
+    public static Network1 getEmptyNetwork() {
+        Network1 network = new Network1Builder().setLink(new ArrayList<>()).build();
+        Optional.of(network);
+        return network;
+    }
+
+    public static Network1 getNetwork() {
+        List<SupportingLink> supportingLinks = new ArrayList<>();
+        SupportingLink supportingLink1 = new SupportingLinkBuilder().setLinkRef("ref1")
+            .setNetworkRef(new NetworkId("net1")).build();
+        SupportingLink supportingLink2 = new SupportingLinkBuilder().setLinkRef("ref2")
+            .setNetworkRef(new NetworkId("net2")).build();
+        supportingLinks.add(supportingLink1);
+        supportingLinks.add(supportingLink2);
+        List<Link> links = new ArrayList<>();
+        Link link1 = new LinkBuilder().setLinkId(new LinkId("link 1"))
+            .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 1"))
+                .setDestTp("dest tp").build())
+            .setSource(new SourceBuilder().setSourceNode(new NodeId("node 2"))
+                .setSourceTp("src tp").build())
+            .setSupportingLink(supportingLinks).build();
+
+        Link link2 = new LinkBuilder().setLinkId(new LinkId("link 2"))
+            .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 3"))
+                .setDestTp("dest tp").build())
+            .setSource(new SourceBuilder().setSourceNode(new NodeId("node 4"))
+                .setSourceTp("src tp").build())
+            .setSupportingLink(supportingLinks).build();
+        links.add(link1);
+        links.add(link2);
+        Network1 network = new Network1Builder().setLink(links).build();
+        Optional.of(network);
+        return network;
+    }
+
+    public static Network1 getNetwork2() {
+        List<LinkConcatenation> 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);
+        List<org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.AmplifiedLink>
+            amplifiedLinkValues = new ArrayList<>();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.AmplifiedLink al = new
+            org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes
+                .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
+                .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                    .attributes.amplified.link.section.element.section.element.SpanBuilder()
+                        .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                                .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
+                                    .setAdministrativeState(State.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.rev170929.amplified.link.attributes.AmplifiedLink al2 = new
+            org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes
+                .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
+                .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                     .attributes.amplified.link.section.element.section.element.SpanBuilder()
+                        .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                                .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
+                                    .setAdministrativeState(State.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<Class<? extends Augmentation<Link>>, Augmentation<Link>> map = Collections.emptyMap();
+        Augmentation<Link> aug1 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+            .setAdministrativeState(State.InService)
+            .setAmplified(true)
+            .setLinkLatency(Long.valueOf(123))
+            .setLinkLength(BigDecimal.valueOf(123))
+            .setLinkType(OpenroadmLinkType.ROADMTOROADM)
+            .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();
+        Augmentation<Link> aug2 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+            .setAdministrativeState(State.InService)
+            .setAmplified(true)
+            .setLinkLatency(Long.valueOf(123))
+            .setLinkLength(BigDecimal.valueOf(123))
+            .setLinkType(OpenroadmLinkType.ROADMTOROADM)
+            .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();
+
+        List<SupportingLink> supportingLinks = new ArrayList<>();
+        SupportingLink supportingLink = new SupportingLinkBuilder().setLinkRef("ref1")
+            .setNetworkRef(new NetworkId("net1")).build();
+        SupportingLink supportingLink2 = new SupportingLinkBuilder().setLinkRef("ref2")
+            .setNetworkRef(new NetworkId("net1")).build();
+        supportingLinks.add(supportingLink);
+        supportingLinks.add(supportingLink2);
+        List<Link> links = new ArrayList<>();
+        Link link1 = new LinkBuilder().setLinkId(new LinkId("link 1"))
+            .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 1"))
+                .setDestTp("dest tp").build())
+            .setSource(new SourceBuilder().setSourceNode(new NodeId("node 2"))
+                .setSourceTp("src tp").build())
+            .setSupportingLink(supportingLinks)
+            .addAugmentation(Link1.class, aug1)
+            .addAugmentation(Link1.class, aug2).build();
+
+        Link link2 = new LinkBuilder().setLinkId(new LinkId("link 2"))
+            .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 3"))
+                .setDestTp("dest tp").build())
+            .setSource(new SourceBuilder().setSourceNode(new NodeId("node 4"))
+                .setSourceTp("src tp").build())
+            .setSupportingLink(supportingLinks).build();
+        links.add(link1);
+        links.add(link2);
+        Network1 network = new Network1Builder().setLink(links).build();
+        Optional.of(network);
+        return network;
+    }
+
+    public static List<NodeId> getNodeIds() {
+        List<NodeId> nodes = new ArrayList<>();
+        NodeId node = new NodeId("node 1");
+        NodeId node2 = new NodeId("node 1");
+        NodeId node3 = new NodeId("node 1");
+        NodeId node4 = new NodeId("node 1");
+        nodes.add(node);
+        nodes.add(node2);
+        nodes.add(node3);
+        nodes.add(node4);
+        return nodes;
+    }
+
+    public static Nodes getNodes(String nodeId, String mappingKey) {
+        List<CpToDegree> cpList = new ArrayList<>();
+        CpToDegree cp1 = new CpToDegreeBuilder()
+            .setCircuitPackName("circuit name")
+            .setDegreeNumber(Long.valueOf(123))
+            .build();
+        CpToDegree cp2 = new CpToDegreeBuilder()
+            .setCircuitPackName("circuit name")
+            .setDegreeNumber(Long.valueOf(123))
+            .build();
+        cpList.add(cp1);
+        cpList.add(cp2);
+        List<Mapping> mappingList = new ArrayList<>();
+        Mapping map1 = new MappingBuilder()
+            .setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
+            .build();
+        mappingList.add(map1);
+        Nodes nodes = new NodesBuilder()
+            .setNodeId(nodeId)
+            .setNodeType(NodeTypes.Xpdr)
+            .setCpToDegree(cpList)
+            .setMapping(mappingList)
+            .build();
+        return nodes;
+    }
+
+    public static Nodes getNodes2(String nodeId, String mappingKey) {
+        List<CpToDegree> cpList = new ArrayList<>();
+        CpToDegree cp1 = new CpToDegreeBuilder()
+            .setCircuitPackName("circuit name")
+            .setDegreeNumber(Long.valueOf(123))
+            .build();
+        CpToDegree cp2 = new CpToDegreeBuilder()
+            .setCircuitPackName("circuit name")
+            .setDegreeNumber(Long.valueOf(123))
+            .build();
+        cpList.add(cp1);
+        cpList.add(cp2);
+        List<Mapping> mappingList = new ArrayList<>();
+        Mapping map1 = new MappingBuilder()
+            .setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
+            .build();
+        mappingList.add(map1);
+        Nodes nodes = new NodesBuilder()
+            .setNodeId(nodeId)
+            .setNodeType(null)
+            .setCpToDegree(cpList)
+            .setMapping(mappingList)
+            .build();
+        return nodes;
+    }
+
+    public static Nodes getNodes3(String nodeId, String mappingKey) {
+        List<CpToDegree> cpList = new ArrayList<>();
+        CpToDegree cp1 = new CpToDegreeBuilder()
+            .setCircuitPackName("circuit name")
+            .setDegreeNumber(Long.valueOf(123))
+            .build();
+        CpToDegree cp2 = new CpToDegreeBuilder()
+            .setCircuitPackName("circuit name")
+            .setDegreeNumber(Long.valueOf(123))
+            .build();
+        cpList.add(cp1);
+        cpList.add(cp2);
+        List<Mapping> mappingList = new ArrayList<>();
+        Mapping map1 = new MappingBuilder()
+            .setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
+            .build();
+        mappingList.add(map1);
+        Nodes nodes = new NodesBuilder()
+            .setNodeId(nodeId)
+            .setNodeType(NodeTypes.Rdm)
+            .setCpToDegree(cpList)
+            .setMapping(mappingList)
+            .build();
+        return nodes;
+    }
+
+    public static void writeNodeTransaction(String nodeId, DataBroker dataBroker, String mappingKey) {
+        InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
+            .child(Nodes.class, new NodesKey(nodeId));
+        Nodes nodes = getNodes(nodeId, mappingKey);
+        writeTransaction(dataBroker, nodesIID, nodes);
+    }
+
+    public static void writeNodeTransaction2(String nodeId, DataBroker dataBroker, String mappingKey) {
+        InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
+            .child(Nodes.class, new NodesKey(nodeId));
+        Nodes nodes = getNodes2(nodeId, mappingKey);
+        writeTransaction(dataBroker, nodesIID, nodes);
+    }
+
+    public static void writeNodeTransaction3(String nodeId, DataBroker dataBroker, String mappingKey) {
+        InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
+            .child(Nodes.class, new NodesKey(nodeId));
+        Nodes nodes = getNodes3(nodeId, mappingKey);
+        writeTransaction(dataBroker, nodesIID, nodes);
+    }
+
+}