Skip to content

Commit b0f546d

Browse files
committed
Added unit tests for connectivity verification
1 parent 5458c82 commit b0f546d

File tree

3 files changed

+86
-3
lines changed

3 files changed

+86
-3
lines changed

driver/src/main/java/org/neo4j/driver/internal/InternalDriver.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ public CompletionStage<Void> closeAsync()
119119
return completedFuture( null );
120120
}
121121

122-
// todo: test this method and it's usage in DriverFactory
123122
public CompletionStage<Void> verifyConnectivity()
124123
{
125124
return sessionFactory.verifyConnectivity();

driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.Arrays;
3131
import java.util.List;
3232

33+
import org.neo4j.driver.internal.async.BootstrapFactory;
3334
import org.neo4j.driver.internal.cluster.RoutingSettings;
3435
import org.neo4j.driver.internal.cluster.loadbalancing.LoadBalancer;
3536
import org.neo4j.driver.internal.retry.RetryLogic;
@@ -38,21 +39,24 @@
3839
import org.neo4j.driver.internal.spi.Connection;
3940
import org.neo4j.driver.internal.spi.ConnectionPool;
4041
import org.neo4j.driver.internal.spi.ConnectionProvider;
41-
import org.neo4j.driver.internal.util.Futures;
4242
import org.neo4j.driver.v1.AuthToken;
4343
import org.neo4j.driver.v1.AuthTokens;
4444
import org.neo4j.driver.v1.Config;
4545
import org.neo4j.driver.v1.Driver;
46+
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
4647

4748
import static java.util.concurrent.CompletableFuture.completedFuture;
4849
import static org.hamcrest.Matchers.instanceOf;
4950
import static org.junit.Assert.assertArrayEquals;
51+
import static org.junit.Assert.assertEquals;
52+
import static org.junit.Assert.assertNotNull;
5053
import static org.junit.Assert.assertThat;
5154
import static org.junit.Assert.fail;
5255
import static org.mockito.Mockito.any;
5356
import static org.mockito.Mockito.mock;
5457
import static org.mockito.Mockito.verify;
5558
import static org.mockito.Mockito.when;
59+
import static org.neo4j.driver.internal.util.Futures.failedFuture;
5660
import static org.neo4j.driver.v1.AccessMode.READ;
5761
import static org.neo4j.driver.v1.Config.defaultConfig;
5862

@@ -94,7 +98,7 @@ public void connectionPoolCloseExceptionIsSuppressedWhenDriverCreationFails() th
9498
{
9599
ConnectionPool connectionPool = connectionPoolMock();
96100
RuntimeException poolCloseError = new RuntimeException( "Pool close error" );
97-
when( connectionPool.close() ).thenReturn( Futures.failedFuture( poolCloseError ) );
101+
when( connectionPool.close() ).thenReturn( failedFuture( poolCloseError ) );
98102

99103
DriverFactory factory = new ThrowingDriverFactory( connectionPool );
100104

@@ -135,6 +139,41 @@ public void usesLeakLoggingSessionFactoryWhenConfigured()
135139
assertThat( capturedFactory.newInstance( READ, null ), instanceOf( LeakLoggingNetworkSession.class ) );
136140
}
137141

142+
@Test
143+
public void shouldVerifyConnectivity()
144+
{
145+
SessionFactory sessionFactory = mock( SessionFactory.class );
146+
when( sessionFactory.verifyConnectivity() ).thenReturn( completedFuture( null ) );
147+
when( sessionFactory.close() ).thenReturn( completedFuture( null ) );
148+
DriverFactoryWithSessions driverFactory = new DriverFactoryWithSessions( sessionFactory );
149+
150+
try ( Driver driver = createDriver( driverFactory ) )
151+
{
152+
assertNotNull( driver );
153+
verify( sessionFactory ).verifyConnectivity();
154+
}
155+
}
156+
157+
@Test
158+
public void shouldThrowWhenUnableToVerifyConnectivity()
159+
{
160+
SessionFactory sessionFactory = mock( SessionFactory.class );
161+
ServiceUnavailableException error = new ServiceUnavailableException( "Hello" );
162+
when( sessionFactory.verifyConnectivity() ).thenReturn( failedFuture( error ) );
163+
when( sessionFactory.close() ).thenReturn( completedFuture( null ) );
164+
DriverFactoryWithSessions driverFactory = new DriverFactoryWithSessions( sessionFactory );
165+
166+
try
167+
{
168+
createDriver( driverFactory );
169+
fail( "Exception expected" );
170+
}
171+
catch ( ServiceUnavailableException e )
172+
{
173+
assertEquals( "Hello", e.getMessage() );
174+
}
175+
}
176+
138177
private Driver createDriver( DriverFactory driverFactory )
139178
{
140179
return createDriver( driverFactory, defaultConfig() );
@@ -222,4 +261,34 @@ protected ConnectionPool createConnectionPool( AuthToken authToken, SecurityPlan
222261
return connectionPoolMock();
223262
}
224263
}
264+
265+
private static class DriverFactoryWithSessions extends DriverFactory
266+
{
267+
final SessionFactory sessionFactory;
268+
269+
DriverFactoryWithSessions( SessionFactory sessionFactory )
270+
{
271+
this.sessionFactory = sessionFactory;
272+
}
273+
274+
@Override
275+
protected Bootstrap createBootstrap()
276+
{
277+
return BootstrapFactory.newBootstrap( 1 );
278+
}
279+
280+
@Override
281+
protected ConnectionPool createConnectionPool( AuthToken authToken, SecurityPlan securityPlan,
282+
Bootstrap bootstrap, Config config )
283+
{
284+
return connectionPoolMock();
285+
}
286+
287+
@Override
288+
protected SessionFactory createSessionFactory( ConnectionProvider connectionProvider, RetryLogic retryLogic,
289+
Config config )
290+
{
291+
return sessionFactory;
292+
}
293+
}
225294
}

driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020

2121
import org.junit.Test;
2222

23+
import java.util.concurrent.CompletableFuture;
24+
2325
import org.neo4j.driver.internal.security.SecurityPlan;
2426

2527
import static java.util.concurrent.CompletableFuture.completedFuture;
28+
import static org.junit.Assert.assertEquals;
2629
import static org.junit.Assert.assertNull;
2730
import static org.mockito.Mockito.mock;
2831
import static org.mockito.Mockito.verify;
@@ -55,6 +58,18 @@ public void shouldNotCloseSessionFactoryMultipleTimes()
5558
verify( sessionFactory ).close();
5659
}
5760

61+
@Test
62+
public void shouldVerifyConnectivity()
63+
{
64+
SessionFactory sessionFactory = sessionFactoryMock();
65+
CompletableFuture<Void> connectivityStage = completedFuture( null );
66+
when( sessionFactory.verifyConnectivity() ).thenReturn( connectivityStage );
67+
68+
InternalDriver driver = newDriver( sessionFactory );
69+
70+
assertEquals( connectivityStage, driver.verifyConnectivity() );
71+
}
72+
5873
private static InternalDriver newDriver( SessionFactory sessionFactory )
5974
{
6075
return new InternalDriver( SecurityPlan.insecure(), sessionFactory, DEV_NULL_LOGGING );

0 commit comments

Comments
 (0)