package vnet.sms.gateway.nettysupport.monitor.incoming; import static org.junit.Assert.assertEquals; import org.junit.Test; import vnet.sms.common.messages.LoginRequest; import vnet.sms.common.messages.LoginResponse; import vnet.sms.common.messages.Msisdn; import vnet.sms.common.messages.PingRequest; import vnet.sms.common.messages.PingResponse; import vnet.sms.common.messages.Sms; import vnet.sms.gateway.nettysupport.test.ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler; import vnet.sms.gateway.nettytest.embedded.ChannelPipelineEmbedder; import vnet.sms.gateway.nettytest.embedded.DefaultChannelPipelineEmbedder; import com.yammer.metrics.Metrics; public class IncomingMessagesMonitoringChannelHandlerTest { private final IncomingMessagesMonitoringChannelHandler<Integer> objectUnderTest = new IncomingMessagesMonitoringChannelHandler<Integer>( Metrics.defaultRegistry()); @Test public final void assertThatTransportProtocolAdapterCorrectlyUpdatesNumberOfReceivedLoginRequests() throws Throwable { final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder( new ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler(), this.objectUnderTest); embeddedPipeline.connectChannel(); embeddedPipeline .receive(new LoginRequest( "assertThatTransportProtocolAdapterCorrectlyUpdatesNumberOfReceivedLoginRequests", "secret")); assertEquals( "IncomingMessagesMonitoringChannelHandler did not correctly count number of received login requests", 1L, this.objectUnderTest.getNumberOfReceivedLoginRequests() .count()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyCountsNumberOfReceivedLoginResponses() throws Throwable { final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder( new ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler(), this.objectUnderTest); embeddedPipeline.connectChannel(); embeddedPipeline .receive(LoginResponse .accept(new LoginRequest( "assertThatTransportProtocolAdapterCorrectlyConvertsPduToLoginRequest", "secret"))); assertEquals( "IncomingMessagesMonitoringChannelHandler did not correctly count number of received login responses", 1L, this.objectUnderTest.getNumberOfReceivedLoginResponses() .count()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyCountsNumberOfReceivedPingRequests() throws Throwable { final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder( new ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler(), this.objectUnderTest); embeddedPipeline.connectChannel(); embeddedPipeline.receive(new PingRequest()); assertEquals( "IncomingMessagesMonitoringChannelHandler did not correctly count number of received ping requests", 1L, this.objectUnderTest.getNumberOfReceivedPingRequests() .count()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyCountsNumberOfReceivedPingResponses() throws Throwable { final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder( new ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler(), this.objectUnderTest); embeddedPipeline.connectChannel(); embeddedPipeline.receive(PingResponse.accept(new PingRequest())); assertEquals( "IncomingMessagesMonitoringChannelHandler did not correctly count number of received ping responses", 1L, this.objectUnderTest.getNumberOfReceivedPingResponses() .count()); } @Test public final void assertThatTransportProtocolAdapterCorrectlyCountsNumberOfReceivedSms() throws IllegalArgumentException, Throwable { final ChannelPipelineEmbedder embeddedPipeline = new DefaultChannelPipelineEmbedder( new ObjectSerializationTransportProtocolAdaptingUpstreamChannelHandler(), this.objectUnderTest); embeddedPipeline.connectChannel(); embeddedPipeline.receive(new Sms(new Msisdn("01686754432"), new Msisdn( "01686754432"), "assertThatTransportProtocolAdapterCorrectlyConvertsPduToSms")); assertEquals( "IncomingMessagesMonitoringChannelHandler did not correctly count number of received sms", 1L, this.objectUnderTest.getNumberOfReceivedSms().count()); } }