Merge "Bug#1854 - Exit command in console causing OOM."
[controller.git] / opendaylight / topologymanager / implementation / src / test / java / org / opendaylight / controller / topologymanager / internal / TopologyManagerImplTest.java
index 97966255a03db0b91b60a899764cd1de3b8e432b..d1338bf6953909aff8ff1c4bea274001f9135e5c 100644 (file)
@@ -8,21 +8,11 @@
 
 package org.opendaylight.controller.topologymanager.internal;
 
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-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.Set;
-import java.util.concurrent.ConcurrentMap;
-
 import org.junit.Assert;
 import org.junit.Test;
 import org.opendaylight.controller.sal.core.Bandwidth;
 import org.opendaylight.controller.sal.core.ConstructionException;
+import org.opendaylight.controller.sal.core.Description;
 import org.opendaylight.controller.sal.core.Edge;
 import org.opendaylight.controller.sal.core.Host;
 import org.opendaylight.controller.sal.core.Latency;
@@ -32,13 +22,14 @@ import org.opendaylight.controller.sal.core.NodeConnector;
 import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType;
 import org.opendaylight.controller.sal.core.Property;
 import org.opendaylight.controller.sal.core.State;
+import org.opendaylight.controller.sal.core.TimeStamp;
 import org.opendaylight.controller.sal.core.UpdateType;
 import org.opendaylight.controller.sal.packet.address.EthernetAddress;
 import org.opendaylight.controller.sal.topology.TopoEdgeUpdate;
-import org.opendaylight.controller.sal.utils.Status;
-import org.opendaylight.controller.sal.utils.StatusCode;
 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
 import org.opendaylight.controller.sal.utils.NodeCreator;
+import org.opendaylight.controller.sal.utils.Status;
+import org.opendaylight.controller.sal.utils.StatusCode;
 import org.opendaylight.controller.switchmanager.ISwitchManager;
 import org.opendaylight.controller.switchmanager.SpanConfig;
 import org.opendaylight.controller.switchmanager.Subnet;
@@ -47,6 +38,17 @@ import org.opendaylight.controller.switchmanager.Switch;
 import org.opendaylight.controller.switchmanager.SwitchConfig;
 import org.opendaylight.controller.topologymanager.TopologyUserLinkConfig;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+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.Set;
+import java.util.concurrent.ConcurrentMap;
+
 public class TopologyManagerImplTest {
     /**
      * Mockup of switch manager that only maintains existence of node
@@ -55,7 +57,7 @@ public class TopologyManagerImplTest {
     private final class TestSwitchManager implements ISwitchManager {
         private final Set<Node>  nodeSet = new HashSet<Node>();
         private final Set<NodeConnector> nodeConnectorSet =
-            new HashSet<NodeConnector>();
+                new HashSet<NodeConnector>();
 
         private void addNodeConnectors(NodeConnector ... connectors) {
             for (NodeConnector nc: connectors) {
@@ -69,9 +71,9 @@ public class TopologyManagerImplTest {
         private void addNodeConnectors(TopologyUserLinkConfig ... links) {
             for (TopologyUserLinkConfig link: links) {
                 NodeConnector src =
-                    NodeConnector.fromString(link.getSrcNodeConnector());
+                        NodeConnector.fromString(link.getSrcNodeConnector());
                 NodeConnector dst =
-                    NodeConnector.fromString(link.getDstNodeConnector());
+                        NodeConnector.fromString(link.getDstNodeConnector());
                 addNodeConnectors(src, dst);
             }
         }
@@ -292,6 +294,35 @@ public class TopologyManagerImplTest {
         public String getNodeDescription(Node node) {
             return null;
         }
+
+        @Override
+        public Status removeControllerProperty(String propertyName){
+            return null;
+        }
+
+        @Override
+        public Set<Switch> getConfiguredNotConnectedSwitches() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Map<String, Property> getControllerProperties() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Property getControllerProperty(String propertyName) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Status setControllerProperty(Property property) {
+            // TODO Auto-generated method stub
+            return null;
+        }
     }
 
     /*
@@ -485,13 +516,13 @@ public class TopologyManagerImplTest {
         Assert.assertTrue(topoManagerImpl.getUserLinks().isEmpty());
 
         TopologyUserLinkConfig badlink1 =
-            new TopologyUserLinkConfig("bad1", "OF|1@OF|4", "OF|1@OF|5");
+                new TopologyUserLinkConfig("bad1", "OF|1@OF|4", "OF|1@OF|5");
         TopologyUserLinkConfig badlink2 =
-            new TopologyUserLinkConfig("bad2", "OF|10@OF|7", "OF|7@OF|13");
+                new TopologyUserLinkConfig("bad2", "OF|10@OF|7", "OF|7@OF|13");
         Assert.assertEquals(StatusCode.NOTFOUND,
-                            topoManagerImpl.addUserLink(badlink1).getCode());
+                topoManagerImpl.addUserLink(badlink1).getCode());
         Assert.assertEquals(StatusCode.NOTFOUND,
-                            topoManagerImpl.addUserLink(badlink2).getCode());
+                topoManagerImpl.addUserLink(badlink2).getCode());
     }
 
     @Test
@@ -559,7 +590,7 @@ public class TopologyManagerImplTest {
             reverseLink[i] = new TopologyUserLinkConfig(name, dstNodeConnector, srcNodeConnector);
 
             Assert.assertEquals(StatusCode.NOTFOUND,
-                                topoManagerImpl.addUserLink(link[i]).getCode());
+                    topoManagerImpl.addUserLink(link[i]).getCode());
             swMgr.addNodeConnectors(link[i]);
             Assert.assertTrue(topoManagerImpl.addUserLink(link[i]).isSuccess());
         }
@@ -704,4 +735,35 @@ public class TopologyManagerImplTest {
 
         Assert.assertTrue(nodeNCmap.isEmpty());
     }
+
+    @Test
+    public void bug1348FixTest() throws ConstructionException {
+        TopologyManagerImpl topoManagerImpl = new TopologyManagerImpl();
+        TestSwitchManager swMgr = new TestSwitchManager();
+        topoManagerImpl.setSwitchManager(swMgr);
+        topoManagerImpl.nonClusterObjectCreate();
+
+        NodeConnector headnc1 = NodeConnectorCreator.createOFNodeConnector(
+                (short) 1, NodeCreator.createOFNode(1000L));
+        NodeConnector tailnc1 = NodeConnectorCreator.createOFNodeConnector(
+                (short) 2, NodeCreator.createOFNode(2000L));
+        Edge edge = new Edge(headnc1, tailnc1);
+        List<TopoEdgeUpdate> updatedEdges = new ArrayList<>();
+        Set<Property> edgeProps = new HashSet<>();
+        edgeProps.add(new TimeStamp(System.currentTimeMillis(), "creation"));
+        edgeProps.add(new Latency(Latency.LATENCY100ns));
+        edgeProps.add(new State(State.EDGE_UP));
+        edgeProps.add(new Bandwidth(Bandwidth.BW100Gbps));
+        edgeProps.add(new Description("Test edge"));
+        updatedEdges.add(new TopoEdgeUpdate(edge, edgeProps, UpdateType.CHANGED));
+
+        try {
+            topoManagerImpl.edgeUpdate(updatedEdges);
+        } catch (Exception e) {
+            Assert.fail("Exception was raised when trying to update edge properties: " + e.getMessage());
+        }
+
+        Assert.assertEquals(1, topoManagerImpl.getEdges().size());
+        Assert.assertNotNull(topoManagerImpl.getEdges().get(edge));
+    }
 }