Bug 2177 - Updated SwitchConnectionProviderImpl 90/11690/3
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Tue, 16 Sep 2014 12:28:54 +0000 (14:28 +0200)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 13 Oct 2014 11:52:32 +0000 (13:52 +0200)
 - added test packaging - to be able to use ConnectionConfigurationImpl in both
   spi and impl

SwitchConnectionProviderImpl:
 - skipped checks for null and already running serverFacade as those are no longer
   needed when using ConfigSubsystem (startup())
 - added check for unknown transport protocol received (createAndConfigureServer())
ExperimenterMessageFactory:
 - fixed EXPERIMENTER_ID_INDEX constant
MessageFactoryInitializer:
 - added Experimenter message deserializers registration

Change-Id: I382d7fed0b626050847dafd47e691b7c9c902285
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
openflow-protocol-impl/pom.xml
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ExperimenterMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MessageFactoryInitializer.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionConfigurationImpl.java [moved from openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/ConnectionConfigurationImpl.java with 97% similarity]
openflow-protocol-it/pom.xml
openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/IntegrationTest.java

index 38c414b68284e883386a8995975cadb54dbcfe11..0fd8d42ed298cae86e4c6bda5df2845d9773e13e 100644 (file)
                     </dependency>
                 </dependencies>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.5</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
     
index c2072ba51535c387c4397370192c5c1418ffc30a..75f698c44085bf9605e8e04fa6c1b11e00c21dca 100644 (file)
@@ -105,19 +105,11 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
     @Override
     public ListenableFuture<Boolean> startup() {
         LOGGER.debug("Startup summoned");
-        serverFacade = createAndConfigureServer();
-        
-        LOGGER.debug("Starting ..");
         ListenableFuture<Boolean> result = null;
         try {
-            if (serverFacade == null) {
-                throw new IllegalStateException("No server configured");
-            }
-            if (serverFacade.getIsOnlineFuture().isDone()) {
-                throw new IllegalStateException("Server already running");
-            }
+            serverFacade = createAndConfigureServer();
             if (switchConnectionHandler == null) {
-                throw new IllegalStateException("switchConnectionHandler is not set");
+                throw new IllegalStateException("SwitchConnectionHandler is not set");
             }
             new Thread(serverFacade).start();
             result = serverFacade.getIsOnlineFuture();
@@ -145,9 +137,11 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
         if (transportProtocol.equals(TransportProtocol.TCP) || transportProtocol.equals(TransportProtocol.TLS)) {
             server = new TcpHandler(connConfig.getAddress(), connConfig.getPort());
             ((TcpHandler) server).setChannelInitializer(factory.createPublishingChannelInitializer());
-        } else {
+        } else if (transportProtocol.equals(TransportProtocol.UDP)){
             server = new UdpHandler(connConfig.getAddress(), connConfig.getPort());
             ((UdpHandler) server).setChannelInitializer(factory.createUdpChannelInitializer());
+        } else {
+            throw new IllegalStateException("Unknown transport protocol received: " + transportProtocol);
         }
         server.setThreadConfig(connConfig.getThreadConfiguration());
         return server;
index effe69230369d5a9dca61b77ca6e4efd1beb6fb2..97db922ac2c37331899db41c26a64763a1c62093 100644 (file)
@@ -24,7 +24,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 public class ExperimenterMessageFactory implements OFDeserializer<ExperimenterMessage>,\r
         DeserializerRegistryInjector {\r
 \r
-    private static final byte EXPERIMENTER_ID_INDEX = 8;\r
+    /** Experimenter ID index after version, message type and length were read */\r
+    private static final byte EXPERIMENTER_ID_INDEX = 4;\r
     private DeserializerRegistry deserializerRegistry;\r
 \r
     @Override\r
index 452a8c16d6a435b125d00a58b8a348ed5620be62..094b4fde7ea25c21397117cbf6f622e4f60de3d8 100644 (file)
@@ -8,9 +8,11 @@
 package org.opendaylight.openflowjava.protocol.impl.serialization;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.BarrierInputMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EchoInputMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EchoReplyInputMessageFactory;\r
+import org.opendaylight.openflowjava.protocol.impl.serialization.factories.ExperimenterInputMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.FlowModInputMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetAsyncRequestMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetConfigInputMessageFactory;\r
@@ -34,10 +36,10 @@ import org.opendaylight.openflowjava.protocol.impl.serialization.factories.SetAs
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.SetConfigMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.TableModInputMessageFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.util.CommonMessageRegistryHelper;\r
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoReplyInput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput;\r
@@ -71,6 +73,7 @@ public class MessageFactoryInitializer {
         registryHelper.registerSerializer(BarrierInput.class, new OF10BarrierInputMessageFactory());\r
         registryHelper.registerSerializer(EchoInput.class, new EchoInputMessageFactory());\r
         registryHelper.registerSerializer(EchoReplyInput.class, new EchoReplyInputMessageFactory());\r
+        registryHelper.registerSerializer(ExperimenterInput.class, new ExperimenterInputMessageFactory());\r
         registryHelper.registerSerializer(FlowModInput.class, new OF10FlowModInputMessageFactory());\r
         registryHelper.registerSerializer(GetConfigInput.class, new GetConfigInputMessageFactory());\r
         registryHelper.registerSerializer(GetFeaturesInput.class, new GetFeaturesInputMessageFactory());\r
@@ -86,6 +89,7 @@ public class MessageFactoryInitializer {
         registryHelper.registerSerializer(BarrierInput.class, new BarrierInputMessageFactory());\r
         registryHelper.registerSerializer(EchoInput.class, new EchoInputMessageFactory());\r
         registryHelper.registerSerializer(EchoReplyInput.class, new EchoReplyInputMessageFactory());\r
+        registryHelper.registerSerializer(ExperimenterInput.class, new ExperimenterInputMessageFactory());\r
         registryHelper.registerSerializer(FlowModInput.class, new FlowModInputMessageFactory());\r
         registryHelper.registerSerializer(GetAsyncInput.class, new GetAsyncRequestMessageFactory());\r
         registryHelper.registerSerializer(GetConfigInput.class, new GetConfigInputMessageFactory());\r
index 91b2a845951f3d338f50678cbb5267274f7ef4f7..9aaa1c7e22a1a9ad75dece4259be2b3755ec8d3e 100644 (file)
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>openflow-protocol-impl</artifactId>
+            <type>test-jar</type>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>simple-client</artifactId>
index 8a94cd0556d8897467570b0c81136aa544cc9bc2..89d5677a2eac47d834c4ca811ab6003ac25c57f4 100644 (file)
@@ -28,6 +28,7 @@ import org.opendaylight.openflowjava.protocol.impl.clients.SimpleClient;
 import org.opendaylight.openflowjava.protocol.impl.clients.SleepEvent;
 import org.opendaylight.openflowjava.protocol.impl.clients.UdpSimpleClient;
 import org.opendaylight.openflowjava.protocol.impl.clients.WaitForMessageEvent;
+import org.opendaylight.openflowjava.protocol.impl.connection.ConnectionConfigurationImpl;
 import org.opendaylight.openflowjava.protocol.impl.connection.SwitchConnectionProviderImpl;
 import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler;
 import org.opendaylight.openflowjava.protocol.impl.core.UdpHandler;