From 7a794b74a1024f3238f3b5b4f66f11c657b800dd Mon Sep 17 00:00:00 2001 From: kwanggithub <kwang@clemson.edu> Date: Tue, 18 Sep 2012 21:33:49 -0700 Subject: [PATCH] Add VNF unit tests for added REST API Minor code fix in VNF Add logback.xml back for developer use to control logging level Fix git problem for compile problem due to missing file in previous pull request --- .gitignore | 1 - logback.xml | 14 ++++++++ .../virtualnetwork/VirtualNetwork.java | 13 +++++--- .../virtualnetwork/VirtualNetworkFilter.java | 5 ++- .../VirtualNetworkFilterTest.java | 32 ++++++++++++++++++- 5 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 logback.xml diff --git a/.gitignore b/.gitignore index ad6e64ae7..638f2ea66 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,5 @@ .DS_Store target thrift -logback.xml *.swp *.pyc diff --git a/logback.xml b/logback.xml new file mode 100644 index 000000000..b85b463f5 --- /dev/null +++ b/logback.xml @@ -0,0 +1,14 @@ +<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> diff --git a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java index 51cd4dd1e..f5dfb21d4 100644 --- a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java +++ b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java @@ -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 diff --git a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java index 121108ff0..012dfb6bc 100644 --- a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java +++ b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java @@ -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)) { diff --git a/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java index 8a66f2af2..32afe4e16 100644 --- a/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java +++ b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java @@ -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 -- GitLab