From 4b0d144b54f1acea8b9ff1b7b0296828c836d362 Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Tue, 16 Sep 2014 14:28:54 +0200 Subject: [PATCH] Bug 2177 - Updated SwitchConnectionProviderImpl - 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 --- openflow-protocol-impl/pom.xml | 12 ++++++++++++ .../connection/SwitchConnectionProviderImpl.java | 16 +++++----------- .../factories/ExperimenterMessageFactory.java | 3 ++- .../serialization/MessageFactoryInitializer.java | 6 +++++- .../connection}/ConnectionConfigurationImpl.java | 2 +- openflow-protocol-it/pom.xml | 7 +++++++ .../protocol/it/integration/IntegrationTest.java | 1 + 7 files changed, 33 insertions(+), 14 deletions(-) rename {openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration => openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/connection}/ConnectionConfigurationImpl.java (97%) diff --git a/openflow-protocol-impl/pom.xml b/openflow-protocol-impl/pom.xml index 38c414b6..0fd8d42e 100644 --- a/openflow-protocol-impl/pom.xml +++ b/openflow-protocol-impl/pom.xml @@ -84,6 +84,18 @@ + + org.apache.maven.plugins + maven-jar-plugin + 2.5 + + + + test-jar + + + + diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java index c2072ba5..75f698c4 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java @@ -105,19 +105,11 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider { @Override public ListenableFuture startup() { LOGGER.debug("Startup summoned"); - serverFacade = createAndConfigureServer(); - - LOGGER.debug("Starting .."); ListenableFuture 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; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ExperimenterMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ExperimenterMessageFactory.java index effe6923..97db922a 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ExperimenterMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/ExperimenterMessageFactory.java @@ -24,7 +24,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 public class ExperimenterMessageFactory implements OFDeserializer, DeserializerRegistryInjector { - private static final byte EXPERIMENTER_ID_INDEX = 8; + /** Experimenter ID index after version, message type and length were read */ + private static final byte EXPERIMENTER_ID_INDEX = 4; private DeserializerRegistry deserializerRegistry; @Override diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MessageFactoryInitializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MessageFactoryInitializer.java index 452a8c16..094b4fde 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MessageFactoryInitializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MessageFactoryInitializer.java @@ -8,9 +8,11 @@ package org.opendaylight.openflowjava.protocol.impl.serialization; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; +import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.BarrierInputMessageFactory; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EchoInputMessageFactory; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EchoReplyInputMessageFactory; +import org.opendaylight.openflowjava.protocol.impl.serialization.factories.ExperimenterInputMessageFactory; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.FlowModInputMessageFactory; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetAsyncRequestMessageFactory; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetConfigInputMessageFactory; @@ -34,10 +36,10 @@ import org.opendaylight.openflowjava.protocol.impl.serialization.factories.SetAs import org.opendaylight.openflowjava.protocol.impl.serialization.factories.SetConfigMessageFactory; import org.opendaylight.openflowjava.protocol.impl.serialization.factories.TableModInputMessageFactory; import org.opendaylight.openflowjava.protocol.impl.util.CommonMessageRegistryHelper; -import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoReplyInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput; @@ -71,6 +73,7 @@ public class MessageFactoryInitializer { registryHelper.registerSerializer(BarrierInput.class, new OF10BarrierInputMessageFactory()); registryHelper.registerSerializer(EchoInput.class, new EchoInputMessageFactory()); registryHelper.registerSerializer(EchoReplyInput.class, new EchoReplyInputMessageFactory()); + registryHelper.registerSerializer(ExperimenterInput.class, new ExperimenterInputMessageFactory()); registryHelper.registerSerializer(FlowModInput.class, new OF10FlowModInputMessageFactory()); registryHelper.registerSerializer(GetConfigInput.class, new GetConfigInputMessageFactory()); registryHelper.registerSerializer(GetFeaturesInput.class, new GetFeaturesInputMessageFactory()); @@ -86,6 +89,7 @@ public class MessageFactoryInitializer { registryHelper.registerSerializer(BarrierInput.class, new BarrierInputMessageFactory()); registryHelper.registerSerializer(EchoInput.class, new EchoInputMessageFactory()); registryHelper.registerSerializer(EchoReplyInput.class, new EchoReplyInputMessageFactory()); + registryHelper.registerSerializer(ExperimenterInput.class, new ExperimenterInputMessageFactory()); registryHelper.registerSerializer(FlowModInput.class, new FlowModInputMessageFactory()); registryHelper.registerSerializer(GetAsyncInput.class, new GetAsyncRequestMessageFactory()); registryHelper.registerSerializer(GetConfigInput.class, new GetConfigInputMessageFactory()); diff --git a/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/ConnectionConfigurationImpl.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionConfigurationImpl.java similarity index 97% rename from openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/ConnectionConfigurationImpl.java rename to openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionConfigurationImpl.java index 47c1889b..21aa55ab 100644 --- a/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/ConnectionConfigurationImpl.java +++ b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/connection/ConnectionConfigurationImpl.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.openflowjava.protocol.it.integration; +package org.opendaylight.openflowjava.protocol.impl.connection; import java.net.InetAddress; diff --git a/openflow-protocol-it/pom.xml b/openflow-protocol-it/pom.xml index 91b2a845..9aaa1c7e 100644 --- a/openflow-protocol-it/pom.xml +++ b/openflow-protocol-it/pom.xml @@ -20,6 +20,13 @@ ${project.version} test + + ${project.groupId} + openflow-protocol-impl + test-jar + ${project.version} + test + ${project.groupId} simple-client diff --git a/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/IntegrationTest.java b/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/IntegrationTest.java index 8a94cd05..89d5677a 100644 --- a/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/IntegrationTest.java +++ b/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/IntegrationTest.java @@ -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; -- 2.36.6