*/
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:";
//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));
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());
//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
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() {
// 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);
}
}