Skip to content

Commit bf6b57b

Browse files
committed
Added unit test for connection release
1 parent 60ef87d commit bf6b57b

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

driver/src/test/java/org/neo4j/driver/internal/async/NettyConnectionTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.junit.Test;
2929

3030
import java.util.Set;
31+
import java.util.concurrent.CompletionStage;
3132
import java.util.concurrent.ExecutorService;
3233
import java.util.concurrent.Executors;
3334
import java.util.concurrent.TimeUnit;
@@ -227,6 +228,30 @@ public void shouldReturnServerVersionWhenReleased()
227228
assertEquals( version, connection.serverVersion() );
228229
}
229230

231+
@Test
232+
public void shouldReturnSameCompletionStageFromRelease()
233+
{
234+
EmbeddedChannel channel = new EmbeddedChannel();
235+
InboundMessageDispatcher messageDispatcher = new InboundMessageDispatcher( channel, DEV_NULL_LOGGING );
236+
ChannelAttributes.setMessageDispatcher( channel, messageDispatcher );
237+
238+
NettyConnection connection = newConnection( channel );
239+
240+
CompletionStage<Void> releaseStage1 = connection.release();
241+
CompletionStage<Void> releaseStage2 = connection.release();
242+
CompletionStage<Void> releaseStage3 = connection.release();
243+
244+
channel.runPendingTasks();
245+
246+
// RESET should be send only once
247+
assertEquals( 1, channel.outboundMessages().size() );
248+
assertEquals( RESET, channel.outboundMessages().poll() );
249+
250+
// all returned stages should be the same
251+
assertEquals( releaseStage1, releaseStage2 );
252+
assertEquals( releaseStage2, releaseStage3 );
253+
}
254+
230255
private void testWriteInEventLoop( String threadName, Consumer<NettyConnection> action ) throws Exception
231256
{
232257
EmbeddedChannel channel = spy( new EmbeddedChannel() );

driver/src/test/java/org/neo4j/driver/v1/util/TestUtil.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ private TestUtil()
5252
{
5353
}
5454

55+
@SafeVarargs
56+
public static <T> List<T> awaitAll( CompletionStage<T>... stages )
57+
{
58+
return awaitAll( Arrays.asList( stages ) );
59+
}
60+
5561
public static <T> List<T> awaitAll( List<CompletionStage<T>> stages )
5662
{
5763
List<T> result = new ArrayList<>();

0 commit comments

Comments
 (0)