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;
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;
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
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) {
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);
}
}
}
@Override
- public boolean isHostRefreshEnabled() {
- return true;
+ public Property createProperty(String propName, String propValue) {
+ return null;
+ }
+
+ @Override
+ public String getNodeDescription(Node node) {
+ return null;
+ }
+
+ @Override
+ public Status removeControllerProperty(String propertyName){
+ return null;
}
@Override
- public int getHostRetryCount() {
- return 1;
+ public Set<Switch> getConfiguredNotConnectedSwitches() {
+ // TODO Auto-generated method stub
+ return null;
}
@Override
- public Property createProperty(String propName, String propValue) {
+ public Map<String, Property> getControllerProperties() {
+ // TODO Auto-generated method stub
return null;
}
@Override
- public String getNodeDescription(Node node) {
+ 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;
}
}
@Test
public void testAddDeleteUserLink() {
TopologyUserLinkConfig link1 = new TopologyUserLinkConfig("default1",
- "OF|1@OF|2", "OF|1@OF|2");
+ "OF|1@OF|2", "OF|1@OF|3");
TopologyUserLinkConfig link2 = new TopologyUserLinkConfig("default1",
- "OF|10@OF|20", "OF|10@OF|20");
+ "OF|10@OF|20", "OF|10@OF|30");
TopologyUserLinkConfig link3 = new TopologyUserLinkConfig("default2",
- "OF|1@OF|2", "OF|1@OF|2");
+ "OF|1@OF|2", "OF|1@OF|3");
TopologyUserLinkConfig link4 = new TopologyUserLinkConfig("default20",
- "OF|10@OF|20", "OF|10@OF|20");
+ "OF|10@OF|20", "OF|10@OF|30");
TopologyManagerImpl topoManagerImpl = new TopologyManagerImpl();
TestSwitchManager swMgr = new TestSwitchManager();
Assert.assertTrue(topoManagerImpl.getUserLinks().isEmpty());
TopologyUserLinkConfig badlink1 =
- new TopologyUserLinkConfig("bad1", "OF|1@OF|2", "OF|1@OF|3");
+ new TopologyUserLinkConfig("bad1", "OF|1@OF|4", "OF|1@OF|5");
TopologyUserLinkConfig badlink2 =
- new TopologyUserLinkConfig("bad2", "OF|10@OF|21", "OF|10@OF|20");
+ 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
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());
}
for (int i = 0; i < 5; i++) {
Host host = topoManagerImpl.getHostAttachedToNodeConnector(nc[i]);
- if (i == 4)
+ if (i == 4) {
Assert.assertTrue(host == null);
- else
+ } else {
Assert.assertTrue(host.equals(h[i]));
+ }
}
Set<NodeConnector> ncSet = topoManagerImpl.getNodeConnectorWithHost();
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));
+ }
}