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