Skip to content

Commit f7fc39e

Browse files
committed
Couple more unit tests for ACK_FAILURE handling
1 parent 5caabcb commit f7fc39e

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

driver/src/test/java/org/neo4j/driver/internal/async/inbound/InboundMessageDispatcherTest.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import static org.mockito.Matchers.eq;
4242
import static org.mockito.Mockito.inOrder;
4343
import static org.mockito.Mockito.mock;
44+
import static org.mockito.Mockito.never;
45+
import static org.mockito.Mockito.times;
4446
import static org.mockito.Mockito.verify;
4547
import static org.mockito.Mockito.verifyZeroInteractions;
4648
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
@@ -130,6 +132,59 @@ public void shouldSendAckFailureOnFailure()
130132
verify( channel ).writeAndFlush( eq( ACK_FAILURE ), any() );
131133
}
132134

135+
@Test
136+
public void shouldNotSendAckFailureOnFailureWhenMuted()
137+
{
138+
Channel channel = mock( Channel.class );
139+
InboundMessageDispatcher dispatcher = newDispatcher( channel );
140+
dispatcher.muteAckFailure();
141+
142+
dispatcher.queue( mock( ResponseHandler.class ) );
143+
assertEquals( 1, dispatcher.queuedHandlersCount() );
144+
145+
dispatcher.handleFailureMessage( FAILURE_CODE, FAILURE_MESSAGE );
146+
147+
verify( channel, never() ).writeAndFlush( eq( ACK_FAILURE ), any() );
148+
}
149+
150+
@Test
151+
public void shouldFailToUnMuteAckFailureWhenNotMuted()
152+
{
153+
InboundMessageDispatcher dispatcher = newDispatcher( mock( Channel.class ) );
154+
155+
try
156+
{
157+
dispatcher.unMuteAckFailure();
158+
fail( "Exception expected" );
159+
}
160+
catch ( IllegalStateException e )
161+
{
162+
assertEquals( "Can't un-mute ACK_FAILURE because it's not muted", e.getMessage() );
163+
}
164+
}
165+
166+
@Test
167+
public void shouldSendAckFailureAfterUnMute()
168+
{
169+
Channel channel = mock( Channel.class );
170+
InboundMessageDispatcher dispatcher = newDispatcher( channel );
171+
dispatcher.muteAckFailure();
172+
173+
dispatcher.queue( mock( ResponseHandler.class ) );
174+
assertEquals( 1, dispatcher.queuedHandlersCount() );
175+
176+
dispatcher.handleFailureMessage( FAILURE_CODE, FAILURE_MESSAGE );
177+
verify( channel, never() ).writeAndFlush( eq( ACK_FAILURE ), any() );
178+
179+
dispatcher.unMuteAckFailure();
180+
181+
dispatcher.queue( mock( ResponseHandler.class ) );
182+
assertEquals( 1, dispatcher.queuedHandlersCount() );
183+
184+
dispatcher.handleFailureMessage( FAILURE_CODE, FAILURE_MESSAGE );
185+
verify( channel, times( 1 ) ).writeAndFlush( eq( ACK_FAILURE ), any() );
186+
}
187+
133188
@Test
134189
public void shouldClearFailureOnAckFailureSuccess()
135190
{

0 commit comments

Comments
 (0)