Skip to content
Snippets Groups Projects
Commit 50f8f08e authored by abat's avatar abat
Browse files

Merge into master from pull request #309:

Add VNF unit tests for added REST API (https://github.com/floodlight/floodlight/pull/309)
parents fcabe683 7a794b74
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,5 @@
.DS_Store
target
thrift
logback.xml
*.swp
*.pyc
<configuration scan="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%level [%logger:%thread] %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<logger name="org" level="WARN"/>
<logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
<logger name="net.floodlightcontroller" level="INFO"/>
<logger name="net.floodlightcontroller.logging" level="WARN"/>
</configuration>
......@@ -2,11 +2,7 @@ package net.floodlightcontroller.virtualnetwork;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import net.floodlightcontroller.util.MACAddress;
......@@ -37,6 +33,15 @@ public class VirtualNetwork{
this.hosts = new ArrayList<MACAddress>();
return;
}
/**
* Sets network name
* @param gateway: IP address as String
*/
public void setName(String name){
this.name = name;
return;
}
/**
* Sets network gateway IP address
......
......@@ -140,7 +140,10 @@ public class VirtualNetworkFilter
}
}
nameToGuid.put(network, guid);
vNetsByGuid.put(guid, new VirtualNetwork(network, guid));
if (vNetsByGuid.containsKey(guid))
vNetsByGuid.get(guid).setName(network); //network already exists, just updating name
else
vNetsByGuid.put(guid, new VirtualNetwork(network, guid)); //new network
// If they don't specify a new gateway the old one will be preserved
if ((gateway != null) && (gateway != 0)) {
......
......@@ -214,12 +214,20 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase {
assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).contains(guid1));
assertTrue(vns.nameToGuid.get(net1).equals(guid1));
assertTrue(vns.guidToGateway.get(guid1).equals(IPv4.toIPv4Address(gw1)));
assertTrue(vns.vNetsByGuid.get(guid1).name.equals(net1));
assertTrue(vns.vNetsByGuid.get(guid1).guid.equals(guid1));
assertTrue(vns.vNetsByGuid.get(guid1).gateway.equals(gw1));
assertTrue(vns.vNetsByGuid.get(guid1).hosts.size()==0);
// Test creating network without a gateway
vns.createNetwork(guid2, net2, null);
assertTrue(vns.nameToGuid.get(net2).equals(guid2));
assertTrue(vns.guidToGateway.get(guid2) == null);
assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).size() == 1);
assertTrue(vns.vNetsByGuid.get(guid2).name.equals(net2));
assertTrue(vns.vNetsByGuid.get(guid2).guid.equals(guid2));
assertTrue(vns.vNetsByGuid.get(guid2).gateway == null);
assertTrue(vns.vNetsByGuid.get(guid2).hosts.size()==0);
// Test creating a network that shares the gateway with net1
vns.createNetwork(guid3, net3, IPv4.toIPv4Address(gw1));
......@@ -228,11 +236,17 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase {
assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).size() == 2);
assertTrue(vns.nameToGuid.get(net3).equals(guid3));
assertTrue(vns.guidToGateway.get(guid3).equals(IPv4.toIPv4Address(gw1)));
assertTrue(vns.vNetsByGuid.get(guid3).name.equals(net3));
assertTrue(vns.vNetsByGuid.get(guid3).guid.equals(guid3));
assertTrue(vns.vNetsByGuid.get(guid3).gateway.equals(gw1));
assertTrue(vns.vNetsByGuid.get(guid3).hosts.size()==0);
}
@Test
public void testModifyNetwork() {
// Create some networks
testCreateNetwork();
// Modify net2 to add a gateway
vns.createNetwork(guid2, net2, IPv4.toIPv4Address(gw1));
......@@ -246,8 +260,10 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase {
vns.createNetwork(guid2, "newnet2", null);
// Make sure the gateway is still there
assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).contains(guid2));
assertTrue(vns.vNetsByGuid.get(guid2).gateway.equals(gw1));
// make sure the new name mapping was learned
assertTrue(vns.nameToGuid.get("newnet2").equals(guid2));
assertTrue(vns.vNetsByGuid.get(guid2).name.equals("newnet2"));
// and the old one was deleted
assertFalse(vns.nameToGuid.containsKey(net2));
}
......@@ -262,6 +278,7 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase {
assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).size() == 2);
assertFalse(vns.nameToGuid.containsKey(net2));
assertFalse(vns.guidToGateway.containsKey(net2));
assertTrue(vns.vNetsByGuid.get(guid2)==null);
}
@Test
......@@ -270,25 +287,38 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase {
vns.addHost(mac1, guid1, hostPort1);
assertTrue(vns.macToGuid.get(mac1).equals(guid1));
assertTrue(vns.portToMac.get(hostPort1).equals(mac1));
assertTrue(vns.vNetsByGuid.get(guid1).hosts.contains(mac1));
vns.addHost(mac2, guid1, hostPort2);
assertTrue(vns.macToGuid.get(mac2).equals(guid1));
assertTrue(vns.portToMac.get(hostPort2).equals(mac2));
assertTrue(vns.vNetsByGuid.get(guid1).hosts.contains(mac2));
vns.addHost(mac3, guid3, hostPort3);
vns.addHost(mac4, guid3, hostPort4);
assertTrue(vns.vNetsByGuid.get(guid3).hosts.contains(mac4));
}
@Test
public void testDeleteHost() {
testAddHost();
String host1Guid = vns.macToGuid.get(mac1);
vns.deleteHost(mac1, null);
assertFalse(vns.macToGuid.containsKey(mac1));
assertFalse(vns.portToMac.containsKey(hostPort1));
assertFalse(vns.vNetsByGuid.get(host1Guid).hosts.contains(mac1));
String host2Guid = vns.macToGuid.get(vns.portToMac.get(hostPort2));
vns.deleteHost(null, hostPort2);
assertFalse(vns.macToGuid.containsKey(mac2));
assertFalse(vns.portToMac.containsKey(hostPort2));
assertFalse(vns.vNetsByGuid.get(host2Guid).hosts.contains(mac2));
String host3Guid = vns.macToGuid.get(mac3);
vns.deleteHost(mac3, hostPort3);
assertFalse(vns.macToGuid.containsKey(mac3));
assertFalse(vns.portToMac.containsKey(hostPort3));
assertFalse(vns.vNetsByGuid.get(host3Guid).hosts.contains(mac3));
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment