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