From d32dea562b78d5f397c45c299cd5bfebdd796178 Mon Sep 17 00:00:00 2001
From: Srinivasan Ramasubramanian <srini@bigswitch.com>
Date: Fri, 30 Dec 2011 01:03:41 -0800
Subject: [PATCH] Adding more debug messages through OFMessageFilterManager's
 functions (for packet-in, packet-out, and flow-mods.).

---
 .../core/OFMessageFilterManager.java          | 11 +++++---
 .../core/internal/Controller.java             | 26 +++++++++++--------
 .../core/internal/ControllerTest.java         |  2 +-
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java b/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
index d1e835de1..d9ab24d7a 100644
--- a/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
+++ b/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
@@ -475,7 +475,7 @@ public class OFMessageFilterManager implements IOFMessageListener {
         }
     }
 
-    private byte[] getData(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
+    public String getDataAsString(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
 
         Ethernet eth;
         StringBuffer sb =  new StringBuffer("");
@@ -490,7 +490,7 @@ public class OFMessageFilterManager implements IOFMessageListener {
             case PACKET_IN:
                 OFPacketIn pktIn = (OFPacketIn) msg;
                 sb.append("packet_in          [ ");
-                sb.append(HexString.toHexString(sw.getId()));
+                sb.append(sw.getStringId());
                 sb.append(" -> Controller");
                 sb.append(" ]");
 
@@ -560,7 +560,12 @@ public class OFMessageFilterManager implements IOFMessageListener {
         }
 
         sb.append("\n\n");
-        return sb.toString().getBytes();
+        return sb.toString();
+
+    }
+
+    public byte[] getData(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
+        return this.getDataAsString(sw, msg, cntx).getBytes();
     }
 
     public String getStringFromEthernetPacket(Ethernet eth) {
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 14e02f66d..a94ef0f6f 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -723,8 +723,6 @@ public class Controller
             throws IOException {
         Ethernet eth = null;
 
-        long startTime = System.nanoTime();
-
         switch (m.getType()) {
             case PACKET_IN:
                 OFPacketIn pi = (OFPacketIn)m;
@@ -758,6 +756,16 @@ public class Controller
                                 eth);
                     }
                     
+                    // Print the packet-in for debugging purposes at this point
+                    // The context would have the necessary information for
+                    // the OFMessageFilterManager's getDataToString to work
+                    // for packet-ins.
+                    if (log.isDebugEnabled()) {
+                        String str = messageFilterManager.getDataAsString(sw, m, bc);
+                        log.debug("{}", str);
+                    }
+
+
                     // Get the starting time (overall and per-component) of 
                     // the processing chain for this packet if performance
                     // monitoring is turned on
@@ -787,16 +795,7 @@ public class Controller
                 } else {
                     log.error("Unhandled OF Message: {} from {}", m, sw);
                 }
-
-                long processingTime = System.nanoTime() - startTime;
-                if (processingTime > (long)500000000) {  // processing takes more than half a second
-                    log.info("--**--**-- Time to process packet-in: {} ns", processingTime);
-                    if (eth!= null)
-                        log.info("{}", messageFilterManager.getStringFromEthernetPacket(eth));
-                    log.info("--**--**-- ");
-                }
         }
-
     }
     
     /**
@@ -1011,6 +1010,11 @@ public class Controller
     @Override
     public void handleOutgoingMessage(IOFSwitch sw, OFMessage m,
                                       FloodlightContext bc) {
+        if (log.isDebugEnabled()) {
+            String str = messageFilterManager.getDataAsString(sw, m, bc);
+            log.debug("{}", str);
+        }
+
         List<IOFMessageListener> listeners = null;
         if (messageListeners.containsKey(m.getType())) {
             listeners = 
diff --git a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
index 516454aca..42ed09396 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
@@ -153,7 +153,7 @@ public class ControllerTest extends FloodlightTestCase {
         reset(test1, test2, sw);
         expect(test1.receive(eq(sw), eq(pi), isA(FloodlightContext.class))).andReturn(Command.STOP);       
         expect(test1.getId()).andReturn(0).anyTimes();
-        expect(sw.getStringId()).andReturn("00:00:00:00:00:00:00");
+        expect(sw.getStringId()).andReturn("00:00:00:00:00:00:00").anyTimes();
         expect(sw.getFeaturesReply()).andReturn(new OFFeaturesReply()).anyTimes();
         replay(test1, test2, sw);
         controller.handleMessage(sw, pi, null);
-- 
GitLab