@Test public void constructor_sets_fields_as_expected() { // when OpenChannelLimitHandler instance = new OpenChannelLimitHandler(channelGroupMock, maxOpenChannelsThreshold); // then assertThat((Object)instance.openChannelsGroup).isEqualTo(channelGroupMock); assertThat(instance.maxOpenChannelsThreshold).isEqualTo(maxOpenChannelsThreshold); }
@Test public void doChannelActive_adds_channel_to_channelGroup_if_open_channel_count_lower_than_max_threshold() throws Exception { // given setActualOpenChannels(maxOpenChannelsThreshold - 1); // when PipelineContinuationBehavior result = handler.doChannelActive(ctxMock); // then assertThat(result).isEqualTo(CONTINUE); verify(channelGroupMock).add(channelMock); }
PipelineContinuationBehavior result = null; try { result = handler.doChannelRead(ctxMock, msg);
@Test public void constructor_throws_IllegalArgumentException_if_ChannelGroup_is_null() { // when Throwable ex = catchThrowable(() -> new OpenChannelLimitHandler(null, maxOpenChannelsThreshold)); // then assertThat(ex).isInstanceOf(IllegalArgumentException.class); }
@DataProvider(value = { "0", "1" }) @Test public void doChannelActive_marks_and_schedules_double_check_timeout_if_too_many_open_channels( int numOpenChannelsGreaterThanMax ) throws Exception { // given int actualOpenChannels = maxOpenChannelsThreshold + numOpenChannelsGreaterThanMax; setActualOpenChannels(actualOpenChannels); // when PipelineContinuationBehavior result = handler.doChannelActive(ctxMock); // then assertThat(result).isEqualTo(CONTINUE); Pair<Runnable, GenericFutureListener> futureInfoPair = extractDoubleCheckRunnableAndCloseFutureListener(); verify(tooManyOpenConnectionsAttributeMock).set(actualOpenChannels); verifyDoubleCheckFuture(futureInfoPair.getLeft()); verifyCloseFutureListener(futureInfoPair.getRight()); verify(channelGroupMock, never()).add(channelMock); }
@Test public void constructor_throws_IllegalArgumentException_if_threshold_is_less_than_1() { // when Throwable ex = catchThrowable(() -> new OpenChannelLimitHandler(channelGroupMock, 0)); // then assertThat(ex).isInstanceOf(IllegalArgumentException.class); }
@Before public void beforeMethod() { channelMock = mock(Channel.class); ctxMock = mock(ChannelHandlerContext.class); tooManyOpenConnectionsAttributeMock = mock(Attribute.class); doReturn(channelMock).when(ctxMock).channel(); doReturn(tooManyOpenConnectionsAttributeMock).when(channelMock) .attr(TOO_MANY_OPEN_CONNECTIONS_THIS_CHANNEL_SHOULD_CLOSE); doReturn(true).when(channelMock).isOpen(); eventLoopMock = mock(EventLoop.class); closeFutureMock = mock(ChannelFuture.class); doReturn(eventLoopMock).when(channelMock).eventLoop(); doReturn(closeFutureMock).when(channelMock).closeFuture(); doubleCheckScheduledFutureMock = mock(ScheduledFuture.class); doubleCheckRunnableCaptor = ArgumentCaptor.forClass(Runnable.class); closeFutureListenerCaptor = ArgumentCaptor.forClass(GenericFutureListener.class); doReturn(doubleCheckScheduledFutureMock).when(eventLoopMock) .schedule(any(Runnable.class), anyLong(), any(TimeUnit.class)); doReturn(false).when(doubleCheckScheduledFutureMock).isDone(); channelGroupMock = mock(ChannelGroup.class); maxOpenChannelsThreshold = 42; handler = new OpenChannelLimitHandler(channelGroupMock, maxOpenChannelsThreshold); }
new OpenChannelLimitHandler(openChannelsGroup, maxOpenChannelsThreshold));
new OpenChannelLimitHandler(openChannelsGroup, maxOpenChannelsThreshold));