X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Fcore%2Fsession%2FMessageDispatchServiceImplTest.java;h=7636e919ab8ae8bc9bee0e7b315d0df7d6a0a8a6;hb=27aed9a50ceeffc36468ff9610d6183c3aed14df;hp=1dfa06d713f03d6721d3444ee4d2fc3d96915625;hpb=c9fc02e5d4345c99bfce40fd120e69566dc074ae;p=openflowplugin.git diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java index 1dfa06d713..7636e919ab 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/MessageDispatchServiceImplTest.java @@ -7,29 +7,77 @@ */ package org.opendaylight.openflowplugin.openflow.md.core.session; +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter; import org.opendaylight.openflowjava.protocol.api.connection.ConnectionReadyListener; -import org.opendaylight.openflowplugin.openflow.md.ModelDrivenSwitch; -import org.opendaylight.openflowplugin.openflow.md.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor; -import org.opendaylight.openflowplugin.openflow.md.core.ErrorHandler; -import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher; -import org.opendaylight.openflowplugin.openflow.md.queue.QueueProcessor; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.*; +import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; +import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF; +import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; +import org.opendaylight.openflowplugin.api.openflow.md.core.ErrorHandler; +import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer; +import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationQueueWrapper; +import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; +import org.opendaylight.openflowplugin.api.openflow.md.queue.QueueProcessor; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoOutput; +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.ExperimenterInputBuilder; +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.GetAsyncInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OpenflowProtocolListener; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener; import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; -import java.net.InetSocketAddress; -import java.util.*; -import java.util.Map.Entry; -import java.util.concurrent.Future; - /** * test for {@link MessageDispatchServiceImpl} */ @@ -60,6 +108,103 @@ public class MessageDispatchServiceImplTest { Assert.assertEquals(MessageType.BARRIER, session.getPrimaryConductor().getMessageType()); } + /** + * Test experimenter message for null cookie + */ + @Test + public void testExperimenter() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + ExperimenterInputBuilder experimenterInputBuilder = new ExperimenterInputBuilder(); + session.getMessageDispatchService().experimenter(experimenterInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test get async input with null cookie + */ + @Test + public void testGetAsync() throws ExecutionException, InterruptedException { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + GetAsyncInputBuilder getAsyncInputBuilder = new GetAsyncInputBuilder(); + session.getMessageDispatchService().getAsync(getAsyncInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test get async output with null cookie + */ + @Test + public void testGetConfig() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + GetConfigInputBuilder getConfigInputBuilder = new GetConfigInputBuilder(); + session.getMessageDispatchService().getConfig(getConfigInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test get features with null cookie + */ + @Test + public void testGetFeatures() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + GetFeaturesInputBuilder getFeaturesInputBuilder = new GetFeaturesInputBuilder(); + session.getMessageDispatchService().getFeatures(getFeaturesInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test get queue config with null cookie + */ + @Test + public void testGetQueueConfig() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + GetQueueConfigInputBuilder getQueueConfigInputBuilder = new GetQueueConfigInputBuilder(); + session.getMessageDispatchService().getQueueConfig(getQueueConfigInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test multipart request with null cookie + */ + @Test + public void testGetMultipart() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + MultipartRequestInputBuilder multipartRequestInputBuilder = new MultipartRequestInputBuilder(); + session.getMessageDispatchService().multipartRequest(multipartRequestInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test role request with null cookie + */ + @Test + public void testRoleRequest() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + RoleRequestInputBuilder roleRequestInputBuilder = new RoleRequestInputBuilder(); + session.getMessageDispatchService().roleRequest(roleRequestInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.NONE, session.getPrimaryConductor().getMessageType()); + } + + /** + * Test table mod with null cookie + */ + @Test + public void testTableMod() { + MockConnectionConductor conductor = new MockConnectionConductor(1); + SwitchConnectionDistinguisher cookie = conductor.getAuxiliaryKey(); + TableModInputBuilder tableModInputBuilder = new TableModInputBuilder(); + session.getMessageDispatchService().tableMod(tableModInputBuilder.build(), cookie); + Assert.assertEquals(MessageType.TABLEMOD, session.getPrimaryConductor().getMessageType()); + } + + /** * Test packet out message for primary connection * @@ -291,9 +436,14 @@ class MockSessionContext implements SessionContext { public void setSeed(int seed) { this.seed = seed; } + + @Override + public NotificationEnqueuer getNotificationEnqueuer() { + return conductor; + } } -class MockConnectionConductor implements ConnectionConductor { +class MockConnectionConductor implements ConnectionConductor, NotificationEnqueuer { private int conductorNum; private MockConnectionAdapter adapter; @@ -386,6 +536,11 @@ class MockConnectionConductor implements ConnectionConductor { public void setId(int conductorId) { // NOOP } + + @Override + public void enqueueNotification(NotificationQueueWrapper notification) { + // NOOP + } } enum MessageType {