multipoint decomposer + unit test improvements
[unimgr.git] / impl / src / test / java / org / opendaylight / unimgr / mef / nrp / impl / AbstractNodeHandlerTest.java
index 052a9f0032864d4002217e4f504df47de700ca16..e7e74455ba9a63719b064b14616878dc3fc0ca67 100644 (file)
@@ -7,54 +7,41 @@
  */
 package org.opendaylight.unimgr.mef.nrp.impl;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.function.BiConsumer;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
+import com.google.common.util.concurrent.CheckedFuture;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.unimgr.mef.nrp.api.TapiConstants;
 import org.opendaylight.unimgr.mef.nrp.common.NrpDao;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.common.rev171113.Context;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.common.rev171113.TerminationDirection;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.common.rev171113.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.Context1;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.node.OwnedNodeEdgePoint;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.node.OwnedNodeEdgePointBuilder;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.topology.context.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.topology.context.TopologyKey;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.topology.rev171113.topology.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-import com.google.common.base.Optional;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+import static org.junit.Assert.*;
 
 /**
  * @author marek.ryznar@amartus.com
  */
 public class AbstractNodeHandlerTest extends AbstractTestWithTopo {
 
-    private static final InstanceIdentifier NRP_ABSTRACT_NODE_IID = InstanceIdentifier
-            .create(Context.class)
-            .augmentation(Context1.class)
-            .child(Topology.class, new TopologyKey(new Uuid(TapiConstants.PRESTO_EXT_TOPO)))
-            .child(Node.class,new NodeKey(new Uuid(TapiConstants.PRESTO_ABSTRACT_NODE)));
+
     private AbstractNodeHandler abstractNodeHandler;
-    private NrpDao nrpDao;
     private static final String testSystemNodeName = "testSystemNode";
     private static final String testNepName = "testNep";
     private static final String sipPrefix = "sip:";
@@ -65,53 +52,68 @@ public class AbstractNodeHandlerTest extends AbstractTestWithTopo {
         //given
         dataBroker = getDataBroker();
 
-        NrpInitializer nrpInitializer = new NrpInitializer(dataBroker);
-        try {
-            nrpInitializer.init();
-        } catch (Exception e) {
-            fail("Could not initialize NRP topology.");
-        }
-
         abstractNodeHandler = new AbstractNodeHandler(dataBroker);
         abstractNodeHandler.init();
     }
 
+    @After
+    public void tearDown() throws Exception {
+
+        abstractNodeHandler.close();
+        removeContext();
+
+    }
+
+    private void removeContext() throws Exception {
+        ReadWriteTransaction tx = dataBroker.newReadWriteTransaction();
+
+        tx.delete(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier
+                .create(Context.class));
+        tx.submit().get();
+    }
+
     @Test
-    public void testNodeAddition() {
+    public void testNodeAddition() throws TransactionCommitFailedException {
         //when
-        performNrpDaoAction(addNode,null);
+        performNrpDaoAction(addNode,null).checkedGet();
 
         //then
-        Node node = getAbstractNode();
-        assertTrue(node.getOwnedNodeEdgePoint().containsAll(createTestOwnedNodeEdgePointList()));
+        Node node = getAbstractNodeNotNullNep();
+
+        assertEquals(
+                node.getOwnedNodeEdgePoint().stream().map(nep -> nep.getUuid().getValue()).collect(Collectors.toSet()),
+                new HashSet(Arrays.asList(testNepName+"0", testNepName+"1", testNepName+"2", testNepName+"3"))
+        );
+
     }
 
     @Test
-    public void testNepAddition() {
+    public void testNepAddition() throws TransactionCommitFailedException {
         //given
         String newNepName = "newNep";
-        performNrpDaoAction(addNode,null);
+        performNrpDaoAction(addNode,null).checkedGet();
 
         //when
         OwnedNodeEdgePoint newNep = createNep(newNepName,TerminationDirection.BIDIRECTIONAL);
-        performNrpDaoAction(update, newNep);
+        performNrpDaoAction(update, newNep).checkedGet();
 
         //then
-        Node node = getAbstractNode();
+        Node node = getAbstractNode(n -> n.getOwnedNodeEdgePoint().size() == init_neps_count + 1);
+
         assertTrue(node.getOwnedNodeEdgePoint().contains(newNep));
     }
 
     @Test
-    public void testNepUpdate() {
+    public void testNepUpdate() throws TransactionCommitFailedException {
         //given
-        performNrpDaoAction(addNode,null);
+        performNrpDaoAction(addNode, null).checkedGet();
 
         //when changing not sip related attribute
         OwnedNodeEdgePoint toUpdateNep = createNep(testNepName + "1", TerminationDirection.UNDEFINEDORUNKNOWN);
-        performNrpDaoAction(update, toUpdateNep);
+        performNrpDaoAction(update, toUpdateNep).checkedGet();
 
 
-        Node node = getAbstractNode();
+        Node node = getAbstractNodeNotNullNep();
         //There could be more neps if our node was added insted of updated
         assertEquals(init_neps_count,node.getOwnedNodeEdgePoint().size());
         assertTrue(node.getOwnedNodeEdgePoint().contains(toUpdateNep));
@@ -137,7 +139,7 @@ public class AbstractNodeHandlerTest extends AbstractTestWithTopo {
         tx.submit().checkedGet();
 
         //then
-        node = getAbstractNode();
+        node = getAbstractNodeNotNullNep();
         //There could be more neps if our node was added instead of updated
         assertEquals(1,node.getOwnedNodeEdgePoint().size());
 
@@ -148,10 +150,10 @@ public class AbstractNodeHandlerTest extends AbstractTestWithTopo {
         //given we have sips
         ReadWriteTransaction tx = dataBroker.newReadWriteTransaction();
         Node n1 = n(tx, true, "n1", "n1:1", "n1:2");
-        tx.submit().get();
+        tx.submit().checkedGet();
 
         //assert
-        Node node = getAbstractNode();
+        Node node = getAbstractNodeNotNullNep();
         assertEquals(2,node.getOwnedNodeEdgePoint().size());
 
         //when
@@ -162,52 +164,49 @@ public class AbstractNodeHandlerTest extends AbstractTestWithTopo {
         new NrpDao(tx).updateNep("n1", n11);
         tx.submit().checkedGet();
 
-        //then
-        node = getAbstractNode();
-        //a nep was removed
-        assertEquals(1,node.getOwnedNodeEdgePoint().size());
-
+        //then a nep was removed
+        getAbstractNode(n -> n.getOwnedNodeEdgePoint().size() == 1);
     }
 
     @Test
-    public void testNodeRemoval() {
+    public void testNodeRemoval() throws TransactionCommitFailedException {
         //given
-        performNrpDaoAction(addNode,null);
+        performNrpDaoAction(addNode,null).checkedGet();
 
         //when
-        performNrpDaoAction(removeNode,null);
+        performNrpDaoAction(removeNode,null).checkedGet();
 
         //then
-        Node node = getAbstractNode();
-        assertEquals(0,node.getOwnedNodeEdgePoint().size());
+        Node node = getAbstractNode(n -> n.getOwnedNodeEdgePoint() != null && n.getOwnedNodeEdgePoint().isEmpty());
+        assertTrue(node.getOwnedNodeEdgePoint().isEmpty());
     }
 
     @Test
-    public void testNepRemoval() {
+    public void testNepRemoval() throws TransactionCommitFailedException {
         //given
-        performNrpDaoAction(addNode,null);
+        performNrpDaoAction(addNode,null).checkedGet();
         String nepNameToRemove = testNepName + "0";
 
         //when
-        performNrpDaoAction(removeNep,nepNameToRemove);
+        performNrpDaoAction(removeNep,nepNameToRemove).checkedGet();
 
         //then
-        Node node = getAbstractNode();
-        assertEquals(init_neps_count - 1, node.getOwnedNodeEdgePoint().size());
+        Node node = getAbstractNode(n -> n.getOwnedNodeEdgePoint().size() == init_neps_count - 1);
+
         assertFalse(node.getOwnedNodeEdgePoint().stream()
             .anyMatch(nep -> nep.getUuid().getValue().equals(nepNameToRemove)));
     }
 
-    BiConsumer<NrpDao,String> removeNep = (dao,nepId) -> dao.removeNep(testSystemNodeName,nepId,false);
-    BiConsumer<NrpDao,String> removeNode = (dao,nepId) -> dao.removeNode(testSystemNodeName,false);
-    BiConsumer<NrpDao,String> addNode = (dao,nepId) -> dao.createSystemNode(testSystemNodeName,createTestOwnedNodeEdgePointList());
-    BiConsumer<NrpDao,OwnedNodeEdgePoint> update = (dao,nep) -> dao.updateNep(testSystemNodeName,nep);
+    private BiConsumer<NrpDao,String> removeNep = (dao, nepId) -> dao.removeNep(testSystemNodeName,nepId,false);
+    private BiConsumer<NrpDao,String> removeNode = (dao, nepId) -> dao.removeNode(testSystemNodeName,false);
+    private BiConsumer<NrpDao,String> addNode = (dao, nepId) -> dao.createSystemNode(testSystemNodeName,createTestOwnedNodeEdgePointList());
+    private BiConsumer<NrpDao,OwnedNodeEdgePoint> update = (dao, nep) -> dao.updateNep(testSystemNodeName,nep);
 
-    private <T extends Object> void performNrpDaoAction(BiConsumer<NrpDao,T> action, T attr) {
+    private <T extends Object> CheckedFuture<Void, TransactionCommitFailedException> performNrpDaoAction(BiConsumer<NrpDao,T> action, T attr) {
         ReadWriteTransaction tx = dataBroker.newReadWriteTransaction();
-        nrpDao = new NrpDao(tx);
+        NrpDao nrpDao = new NrpDao(tx);
         action.accept(nrpDao,attr);
-        tx.submit();
+        return tx.submit();
     }
 
     private List<OwnedNodeEdgePoint> createTestOwnedNodeEdgePointList() {
@@ -228,25 +227,15 @@ public class AbstractNodeHandlerTest extends AbstractTestWithTopo {
                 // TODO donaldh .setTerminationDirection(td);
 
         if (associateSip) {
-            builder.setMappedServiceInterfacePoint(Arrays.asList(new Uuid(sipPrefix + nepName)));
+            builder.setMappedServiceInterfacePoint(Collections.singletonList(new Uuid(sipPrefix + nepName)));
         }
 
         return builder.build();
     }
 
-    private Node getAbstractNode() {
-        ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction();
-        try {
-            Optional<Node> opt =
-                    (Optional<Node>) tx.read(LogicalDatastoreType.OPERATIONAL,NRP_ABSTRACT_NODE_IID).checkedGet();
-            if (opt.isPresent()) {
-                return opt.get();
-            } else {
-                return null;
-            }
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
-        return null;
+
+    private Node getAbstractNodeNotNullNep() {
+
+        return getAbstractNode(n -> n.getOwnedNodeEdgePoint() != null);
     }
 }