Centralized pipeline creation 48/2348/2
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 4 Nov 2013 08:53:57 +0000 (09:53 +0100)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 4 Nov 2013 09:04:27 +0000 (10:04 +0100)
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
Change-Id: I801781d536bc34a5113bf1b5083505eb969daa92

openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFFrameDecoder.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFVersionDetector.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/TlsDetector.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/OFFrameDecoderTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/OFVersionDetectorTest.java

index c9937e3bbde415946a295fbd777d35ac5b4dee06..f187b72511eb7d70578d9310a03f3d7a168953b9 100644 (file)
@@ -14,15 +14,13 @@ import org.slf4j.LoggerFactory;
 
 public class IdleHandler extends IdleStateHandler{
     
+    private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);
+
     public IdleHandler(long readerIdleTime, long writerIdleTime,
             long allIdleTime, TimeUnit unit) {
         super(readerIdleTime, writerIdleTime, allIdleTime, unit);
     }
 
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);
-
-    
     @Override
     protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt)
             throws Exception {
index db7181d3473b3faf31eec76ca9c8e360beb6f728..677bab0c327da24285e0403b89b88a6e89aff902 100644 (file)
@@ -10,7 +10,6 @@ import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;
 
 /**
  * Class for decoding incoming messages into message frames.
@@ -50,27 +49,12 @@ public class OFFrameDecoder extends ByteToMessageDecoder {
                     bb.readableBytes() + " < " + length);
             return;
         }
-
         LOGGER.info("OF Protocol message received");
 
-        enableOFVersionDetector(chc);
-
-        List<String> componentList = chc.pipeline().names();
-        LOGGER.debug(componentList.toString());
-
         ByteBuf messageBuffer = bb.slice(bb.readerIndex(), length);
         list.add(messageBuffer);
         messageBuffer.retain();
         bb.skipBytes(length);
     }
 
-    private static void enableOFVersionDetector(ChannelHandlerContext ctx) {
-        if (ctx.pipeline().get(COMPONENT_NAMES.OF_VERSION_DETECTOR.name()) == null) {
-            LOGGER.info("Adding OFVD");
-            ctx.pipeline().addAfter(COMPONENT_NAMES.OF_FRAME_DECODER.name(), 
-                    COMPONENT_NAMES.OF_VERSION_DETECTOR.name(), new OFVersionDetector());
-        } else {
-            LOGGER.debug("OFVD already in pipeline");
-        }
-    }
 }
index 6999b57417e7e501b5944e4c7182ffd2fcd9795a..fa419b92c11a2789687fee6b567ef59f99f138de 100644 (file)
@@ -9,7 +9,6 @@ import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;
 
 /**
  * Class that detects version of used OpenFlow Protocol and engages right OFCodec into
@@ -44,8 +43,6 @@ public class OFVersionDetector extends ByteToMessageDecoder {
 
         if (version == OF13_VERSION_ID) {
             LOGGER.debug("detected version: " + version);
-            enableOF13Decoder(chc);
-            enableOF13Encoder(chc);
         } else {
             LOGGER.warn("detected version: " + version + " - currently not supported");
             return;
@@ -57,25 +54,4 @@ public class OFVersionDetector extends ByteToMessageDecoder {
         bb.skipBytes(bb.readableBytes());
     }
 
-    private static void enableOF13Encoder(ChannelHandlerContext chc) {
-        if (chc.pipeline().get(COMPONENT_NAMES.OF_ENCODER.name()) == null) {
-            LOGGER.info("Engaging OF13Encoder");
-            chc.pipeline().addBefore(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(),
-                    COMPONENT_NAMES.OF_ENCODER.name(), new OF13Encoder());
-        } else {
-            LOGGER.debug("OF13Encoder already in pipeline");
-        }
-        
-    }
-    
-    private static void enableOF13Decoder(ChannelHandlerContext chc) {
-        if (chc.pipeline().get(COMPONENT_NAMES.OF_DECODER.name()) == null) {
-            LOGGER.info("Engaging OF13Decoder");
-            chc.pipeline().addBefore(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(),
-                    COMPONENT_NAMES.OF_DECODER.name(), new OF13Decoder());
-        } else {
-            LOGGER.debug("OF13Decoder already in pipeline");
-        }
-        
-    }
 }
index 29aa2e41c11cf39239f1465d0cfcf30517a79a60..646a997f5b9a97beb70df85c1962f44b8582e331 100644 (file)
@@ -55,6 +55,10 @@ public class PublishingChannelInitializer extends ChannelInitializer<SocketChann
             connectionAdapter.checkListeners();
             ch.pipeline().addLast(COMPONENT_NAMES.IDLE_HANDLER.name(), new IdleHandler(switchIdleTimeout, 0, 0, TimeUnit.MILLISECONDS));
             ch.pipeline().addLast(COMPONENT_NAMES.TLS_DETECTOR.name(), new TlsDetector());
+            ch.pipeline().addLast(COMPONENT_NAMES.OF_FRAME_DECODER.name(), new OFFrameDecoder());
+            ch.pipeline().addLast(COMPONENT_NAMES.OF_VERSION_DETECTOR.name(), new OFVersionDetector());
+            ch.pipeline().addLast(COMPONENT_NAMES.OF_DECODER.name(), new OF13Decoder());
+            ch.pipeline().addLast(COMPONENT_NAMES.OF_ENCODER.name(), new OF13Encoder());
             ch.pipeline().addLast(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(), new DelegatingInboundHandler(connectionAdapter));
         } catch (Exception e) {
             LOGGER.error(e.getMessage(), e);
index 3edf5068f91621dc0767863096f172aedcadf1a7..6c4dbebb9030f3a742310d2dd5a96ade753bd9b6 100644 (file)
@@ -59,21 +59,11 @@ public class TlsDetector extends ByteToMessageDecoder {
             SSLEngine engine = SslContextFactory.getServerContext()
                     .createSSLEngine();
             engine.setUseClientMode(false);
-            p.addBefore(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(), COMPONENT_NAMES.SSL_HANDLER.name(),
+            p.addAfter(COMPONENT_NAMES.TLS_DETECTOR.name(), COMPONENT_NAMES.SSL_HANDLER.name(),
                     new SslHandler(engine));
         }
     }
 
-    private static void enableOFFrameDecoder(ChannelHandlerContext ctx) {
-        ChannelPipeline p = ctx.channel().pipeline();
-        if (p.get(COMPONENT_NAMES.OF_FRAME_DECODER.name()) == null) {
-            LOGGER.debug("Engaging OFFrameDecoder");
-            p.addBefore(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(), COMPONENT_NAMES.OF_FRAME_DECODER.name(), new OFFrameDecoder());
-        } else {
-            LOGGER.debug("OFFD already in pipeline");
-        }
-    }
-
     @Override
     protected void decode(ChannelHandlerContext ctx, ByteBuf bb,
             List<Object> list) throws Exception {
@@ -89,7 +79,6 @@ public class TlsDetector extends ByteToMessageDecoder {
         } else {
             LOGGER.info("Connection is not encrypted");
         }
-        enableOFFrameDecoder(ctx);
         ctx.pipeline().remove(COMPONENT_NAMES.TLS_DETECTOR.name());
     }
 }
index 85cd1c5e386c0e2be1f00e3cdf39aa6331a5f179..723ce1c92efccaca14e9f55c71bce13a5f7eae82 100644 (file)
@@ -3,7 +3,6 @@ package org.opendaylight.openflowjava.protocol.impl.core;
 \r
 import io.netty.buffer.ByteBuf;\r
 import io.netty.channel.ChannelHandlerContext;\r
-import io.netty.channel.ChannelPipeline;\r
 \r
 import java.util.ArrayList;\r
 import java.util.List;\r
@@ -12,15 +11,10 @@ import org.junit.Assert;
 import org.junit.Before;\r
 import org.junit.Test;\r
 import org.junit.runner.RunWith;\r
-import org.mockito.Matchers;\r
 import org.mockito.Mock;\r
-import org.mockito.Mockito;\r
 import org.mockito.runners.MockitoJUnitRunner;\r
-import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;\r
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
 \r
-import com.google.common.collect.Lists;\r
-\r
 /**\r
  * Testing class of {@link OFFrameDecoder}\r
  * \r
@@ -32,9 +26,6 @@ public class OFFrameDecoderTest {
     @Mock\r
     ChannelHandlerContext channelHandlerContext;\r
 \r
-    @Mock\r
-    ChannelPipeline channelPipeline;\r
-\r
     private OFFrameDecoder decoder;\r
     private List<Object> list = new ArrayList<>();\r
 \r
@@ -43,12 +34,6 @@ public class OFFrameDecoderTest {
      */\r
     @Before\r
     public void setUp() {\r
-        Mockito.when(channelHandlerContext.pipeline()).thenReturn(\r
-                channelPipeline);\r
-        Mockito.when(channelPipeline.get(Matchers.anyString()))\r
-                .thenReturn(null);\r
-        Mockito.when(channelPipeline.names()).thenReturn(\r
-                Lists.newArrayList("xx"));\r
         list.clear();\r
         decoder = new OFFrameDecoder();\r
     }\r
@@ -66,7 +51,6 @@ public class OFFrameDecoderTest {
                 list);\r
 \r
         Assert.assertEquals(8, ((ByteBuf) list.get(0)).readableBytes());\r
-        verifyMockCalls(1);\r
     }\r
 \r
     /**\r
@@ -82,7 +66,6 @@ public class OFFrameDecoderTest {
                 list);\r
 \r
         Assert.assertEquals(16, ((ByteBuf) list.get(0)).readableBytes());\r
-        verifyMockCalls(1);\r
     }\r
 \r
     /**\r
@@ -98,7 +81,6 @@ public class OFFrameDecoderTest {
                 list);\r
 \r
         Assert.assertEquals("List is not empty", 0, list.size());\r
-        verifyMockCalls(0);\r
     }\r
 \r
     /**\r
@@ -115,26 +97,6 @@ public class OFFrameDecoderTest {
 \r
         Assert.assertEquals(8, ((ByteBuf) list.get(0)).readableBytes());\r
         Assert.assertEquals(1, list.size());\r
-        verifyMockCalls(1);\r
     }\r
     \r
-    private void verifyMockCalls(int numberOfCalls) {\r
-        if (numberOfCalls > 0) {\r
-            Mockito.verify(channelPipeline, Mockito.times(numberOfCalls)).get(\r
-                    COMPONENT_NAMES.OF_VERSION_DETECTOR.name());\r
-            Mockito.verify(channelPipeline, Mockito.times(numberOfCalls)).addAfter(\r
-                    Matchers.eq(COMPONENT_NAMES.OF_FRAME_DECODER.name()),\r
-                    Matchers.eq(COMPONENT_NAMES.OF_VERSION_DETECTOR.name()),\r
-                    Matchers.isA(OFVersionDetector.class));\r
-            Mockito.verify(channelPipeline, Mockito.times(numberOfCalls)).names();\r
-        } else {\r
-            Mockito.verify(channelPipeline, Mockito.never()).get(\r
-                    COMPONENT_NAMES.OF_VERSION_DETECTOR.name());\r
-            Mockito.verify(channelPipeline, Mockito.never()).addAfter(\r
-                    Matchers.eq(COMPONENT_NAMES.OF_FRAME_DECODER.name()),\r
-                    Matchers.eq(COMPONENT_NAMES.OF_VERSION_DETECTOR.name()),\r
-                    Matchers.isA(OFVersionDetector.class));\r
-            Mockito.verify(channelPipeline, Mockito.never()).names();\r
-        }\r
-    }\r
 }
\ No newline at end of file
index 6f549334d04c2ad51f9d1b4d00d52d1942519fef..6bcb4244fd2aefa8cf4f06f39f5f990d159344ca 100644 (file)
@@ -2,7 +2,6 @@
 package org.opendaylight.openflowjava.protocol.impl.core;\r
 \r
 import io.netty.channel.ChannelHandlerContext;\r
-import io.netty.channel.ChannelPipeline;\r
 \r
 import java.util.ArrayList;\r
 import java.util.List;\r
@@ -11,11 +10,8 @@ import org.junit.Assert;
 import org.junit.Before;\r
 import org.junit.Test;\r
 import org.junit.runner.RunWith;\r
-import org.mockito.Matchers;\r
 import org.mockito.Mock;\r
-import org.mockito.Mockito;\r
 import org.mockito.runners.MockitoJUnitRunner;\r
-import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;\r
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
 \r
 /**\r
@@ -28,9 +24,6 @@ public class OFVersionDetectorTest {
     @Mock\r
     ChannelHandlerContext channelHandlerContext;\r
 \r
-    @Mock\r
-    ChannelPipeline channelPipeline;\r
-\r
     private OFVersionDetector detector;\r
     private List<Object> list = new ArrayList<>();\r
 \r
@@ -39,10 +32,6 @@ public class OFVersionDetectorTest {
      */\r
     @Before\r
     public void setUp() {\r
-        Mockito.when(channelHandlerContext.pipeline()).thenReturn(\r
-                channelPipeline);\r
-        Mockito.when(channelPipeline.get(Matchers.anyString()))\r
-                .thenReturn(null);\r
         list.clear();\r
         detector = new OFVersionDetector();\r
     }\r
@@ -62,7 +51,6 @@ public class OFVersionDetectorTest {
 \r
         Assert.assertEquals(7, ((VersionMessageWrapper) list.get(0))\r
                 .getMessageBuffer().readableBytes());\r
-        verifyMockCalls(1);\r
     }\r
 \r
     /**\r
@@ -79,27 +67,6 @@ public class OFVersionDetectorTest {
                 list);\r
 \r
         Assert.assertEquals("List is not empty", 0, list.size());\r
-        verifyMockCalls(0);\r
     }\r
 \r
-    private void verifyMockCalls(int numberOfCalls) {\r
-        if (numberOfCalls > 0) {\r
-            Mockito.verify(channelPipeline, Mockito.times(numberOfCalls)).get(\r
-                    COMPONENT_NAMES.OF_DECODER.name());\r
-            Mockito.verify(channelPipeline, Mockito.times(numberOfCalls))\r
-                    .addBefore(\r
-                            Matchers.eq(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER\r
-                                    .name()),\r
-                            Matchers.eq(COMPONENT_NAMES.OF_DECODER.name()),\r
-                            Matchers.isA(OF13Decoder.class));\r
-        } else {\r
-            Mockito.verify(channelPipeline, Mockito.never()).get(\r
-                    COMPONENT_NAMES.OF_DECODER.name());\r
-            Mockito.verify(channelPipeline, Mockito.never()).addBefore(\r
-                    Matchers.eq(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER\r
-                            .name()),\r
-                    Matchers.eq(COMPONENT_NAMES.OF_DECODER.name()),\r
-                    Matchers.isA(OF13Decoder.class));\r
-        }\r
-    }\r
 }
\ No newline at end of file