diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureClusterCompositionProvider.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureClusterCompositionProvider.java index 1f3bcbcdaf..b5e0211b63 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureClusterCompositionProvider.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureClusterCompositionProvider.java @@ -33,17 +33,16 @@ public class GetServersProcedureClusterCompositionProvider implements ClusterCompositionProvider { - private final String GET_SERVERS = "dbms.cluster.routing.getServers"; - private final String PROTOCOL_ERROR_MESSAGE = "Failed to parse '" + GET_SERVERS + - "' result received from server due to "; + + private final String PROTOCOL_ERROR_MESSAGE = "Failed to parse `%s' result received from server due to "; private final Clock clock; private final Logger log; private final GetServersProcedureRunner getServersRunner; - public GetServersProcedureClusterCompositionProvider( Clock clock, Logger log ) + public GetServersProcedureClusterCompositionProvider( Clock clock, Logger log, RoutingSettings settings ) { - this( clock, log, new GetServersProcedureRunner() ); + this( clock, log, new GetServersProcedureRunner( settings.routingParameters ) ); } GetServersProcedureClusterCompositionProvider( Clock clock, Logger log, GetServersProcedureRunner getServersRunner ) @@ -66,8 +65,10 @@ public ClusterCompositionResponse getClusterComposition( Connection connection ) catch ( ClientException e ) { return new ClusterCompositionResponse.Failure( new ServiceUnavailableException( format( - "Failed to call '%s' procedure on server. " + - "Please make sure that there is a Neo4j 3.1+ causal cluster up running.", GET_SERVERS ), e ) ); + "Failed to run '%s' on server. " + + "Please make sure that there is a Neo4j 3.1+ causal cluster up running.", + getServersRunner.procedureCalled() ), e + ) ); } log.info( "Got getServers response: %s", records ); @@ -77,7 +78,8 @@ public ClusterCompositionResponse getClusterComposition( Connection connection ) if ( records.size() != 1 ) { return new ClusterCompositionResponse.Failure( new ProtocolException( format( - "%srecords received '%s' is too few or too many.", PROTOCOL_ERROR_MESSAGE, + PROTOCOL_ERROR_MESSAGE + + "records received '%s' is too few or too many.", getServersRunner.procedureCalled(), records.size() ) ) ); } @@ -90,14 +92,16 @@ public ClusterCompositionResponse getClusterComposition( Connection connection ) catch ( ValueException e ) { return new ClusterCompositionResponse.Failure( new ProtocolException( format( - "%sunparsable record received.", PROTOCOL_ERROR_MESSAGE ), e ) ); + PROTOCOL_ERROR_MESSAGE + + "unparsable record received.", getServersRunner.procedureCalled() ), e ) ); } // the cluster result is not a legal reply if ( !cluster.hasRoutersAndReaders() ) { return new ClusterCompositionResponse.Failure( new ProtocolException( format( - "%sno router or reader found in response.", PROTOCOL_ERROR_MESSAGE ) ) ); + PROTOCOL_ERROR_MESSAGE + + "no router or reader found in response.", getServersRunner.procedureCalled() ) ) ); } // all good diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunner.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunner.java index 06230b6943..924e4fd0c3 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunner.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunner.java @@ -22,17 +22,49 @@ import java.util.List; import org.neo4j.driver.internal.NetworkSession; -import org.neo4j.driver.internal.SessionResourcesHandler; import org.neo4j.driver.internal.spi.Connection; import org.neo4j.driver.v1.Record; import org.neo4j.driver.v1.Statement; +import org.neo4j.driver.v1.Value; + +import static org.neo4j.driver.internal.SessionResourcesHandler.NO_OP; +import static org.neo4j.driver.internal.util.ServerVersion.v3_2_0; +import static org.neo4j.driver.internal.util.ServerVersion.version; public class GetServersProcedureRunner { - private static final String CALL_GET_SERVERS = "CALL dbms.cluster.routing.getServers"; + static final String GET_SERVERS = "dbms.cluster.routing.getServers"; + static final String GET_ROUTING_TABLE = "dbms.cluster.routing.getRoutingTable"; + + private final Value routingContext; + private Statement procedureCalled; + + public GetServersProcedureRunner( Value context ) + { + this.routingContext = context; + } public List run( Connection connection ) { - return NetworkSession.run( connection, new Statement( CALL_GET_SERVERS ), SessionResourcesHandler.NO_OP ).list(); + if( version( connection.server().version() ).greaterThanOrEqual( v3_2_0 ) ) + { + procedureCalled = new Statement( "CALL " + GET_ROUTING_TABLE, routingContext ); + } + else + { + procedureCalled = new Statement("CALL " + GET_SERVERS ); + } + + return runProcedure( connection, procedureCalled ); + } + + List runProcedure( Connection connection, Statement procedure ) + { + return NetworkSession.run( connection, procedure, NO_OP ).list(); + } + + Statement procedureCalled() + { + return procedureCalled; } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/LoadBalancer.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/LoadBalancer.java index 395e55e629..48a0e99829 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/LoadBalancer.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/LoadBalancer.java @@ -156,7 +156,8 @@ private RoundRobinAddressSet addressSetFor( AccessMode mode ) private static Rediscovery createRediscovery( BoltServerAddress initialRouter, RoutingSettings settings, Clock clock, Logger log ) { - ClusterCompositionProvider clusterComposition = new GetServersProcedureClusterCompositionProvider( clock, log ); + ClusterCompositionProvider clusterComposition = + new GetServersProcedureClusterCompositionProvider( clock, log, settings ); return new Rediscovery( initialRouter, settings, clock, log, clusterComposition ); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingSettings.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingSettings.java index 9bf5716197..defa237c22 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingSettings.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingSettings.java @@ -18,14 +18,21 @@ */ package org.neo4j.driver.internal.cluster; +import java.util.Map; + +import org.neo4j.driver.v1.Value; +import org.neo4j.driver.v1.Values; + public class RoutingSettings { final int maxRoutingFailures; final long retryTimeoutDelay; + final Value routingParameters; - public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay ) + public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay, Map routingParameters ) { this.maxRoutingFailures = maxRoutingFailures; this.retryTimeoutDelay = retryTimeoutDelay; + this.routingParameters = Values.value( routingParameters ); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalServerInfo.java b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalServerInfo.java index 84f566b93b..a965ffce65 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalServerInfo.java +++ b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalServerInfo.java @@ -26,7 +26,7 @@ public class InternalServerInfo implements ServerInfo private final BoltServerAddress address; private final String version; - public InternalServerInfo(BoltServerAddress address, String version) + public InternalServerInfo( BoltServerAddress address, String version ) { this.address = address; this.version = version; diff --git a/driver/src/test/java/org/neo4j/driver/v1/util/ServerVersion.java b/driver/src/main/java/org/neo4j/driver/internal/util/ServerVersion.java similarity index 99% rename from driver/src/test/java/org/neo4j/driver/v1/util/ServerVersion.java rename to driver/src/main/java/org/neo4j/driver/internal/util/ServerVersion.java index 881e24ab1d..936a97747e 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/util/ServerVersion.java +++ b/driver/src/main/java/org/neo4j/driver/internal/util/ServerVersion.java @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.neo4j.driver.v1.util; +package org.neo4j.driver.internal.util; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/driver/src/main/java/org/neo4j/driver/v1/Config.java b/driver/src/main/java/org/neo4j/driver/v1/Config.java index 2eea9f359f..72dab7d313 100644 --- a/driver/src/main/java/org/neo4j/driver/v1/Config.java +++ b/driver/src/main/java/org/neo4j/driver/v1/Config.java @@ -19,6 +19,7 @@ package org.neo4j.driver.v1; import java.io.File; +import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.logging.Level; @@ -74,6 +75,8 @@ public class Config private final int connectionTimeoutMillis; private final RetrySettings retrySettings; + private final Map routingContext; + private Config( ConfigBuilder builder) { this.logging = builder.logging; @@ -88,6 +91,8 @@ private Config( ConfigBuilder builder) this.routingRetryDelayMillis = builder.routingRetryDelayMillis; this.connectionTimeoutMillis = builder.connectionTimeoutMillis; this.retrySettings = builder.retrySettings; + + this.routingContext = builder.routingContext; } /** @@ -182,7 +187,7 @@ public static Config defaultConfig() RoutingSettings routingSettings() { - return new RoutingSettings( routingFailureLimit, routingRetryDelayMillis ); + return new RoutingSettings( routingFailureLimit, routingRetryDelayMillis, routingContext ); } RetrySettings retrySettings() @@ -205,6 +210,7 @@ public static class ConfigBuilder private long routingRetryDelayMillis = TimeUnit.SECONDS.toMillis( 5 ); private int connectionTimeoutMillis = (int) TimeUnit.SECONDS.toMillis( 5 ); private RetrySettings retrySettings = RetrySettings.DEFAULT; + private Map routingContext = null; private ConfigBuilder() {} @@ -473,6 +479,21 @@ public ConfigBuilder withMaxTransactionRetryTime( long value, TimeUnit unit ) return this; } + /** + * Specify routing context that would be passed to server in getRoutingTable Procedure call for customized + * routing table reply. + * This parameter is only valid for the routing driver, a.k.a. the driver created use bolt+routing in URI + * scheme with 3.2+ Neo4j Casual Cluster servers. + * @param context The routing context to pass to getRoutingTable Procedure + * @since 1.3 + * @return this builder + */ + public ConfigBuilder withRoutingContext( Map context ) + { + this.routingContext = context; + return this; + } + /** * Create a config instance from this builder. * @return a {@link Config} instance diff --git a/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java b/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java index 8cc056d309..a86af9227d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java @@ -139,7 +139,7 @@ private Driver createDriver( DriverFactory driverFactory ) private Driver createDriver( DriverFactory driverFactory, Config config ) { AuthToken auth = AuthTokens.none(); - RoutingSettings routingSettings = new RoutingSettings( 42, 42 ); + RoutingSettings routingSettings = new RoutingSettings( 42, 42, null ); return driverFactory.newInstance( uri, auth, routingSettings, RetrySettings.DEFAULT, config ); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverBoltKitTest.java b/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverBoltKitTest.java index be1d6ebf8c..086e974b05 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverBoltKitTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverBoltKitTest.java @@ -873,7 +873,7 @@ private static Driver newDriverWithFixedRetries( String uriString, int retries ) private static Driver newDriver( String uriString, DriverFactory driverFactory ) { URI uri = URI.create( uriString ); - RoutingSettings routingConf = new RoutingSettings( 1, 1 ); + RoutingSettings routingConf = new RoutingSettings( 1, 1, null ); AuthToken auth = AuthTokens.none(); return driverFactory.newInstance( uri, auth, routingConf, RetrySettings.DEFAULT, config ); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java b/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java index 28ae33d3b7..2f7d7ea05e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java @@ -36,6 +36,7 @@ import org.neo4j.driver.internal.spi.ConnectionPool; import org.neo4j.driver.internal.spi.ConnectionProvider; import org.neo4j.driver.internal.spi.PooledConnection; +import org.neo4j.driver.internal.summary.InternalServerInfo; import org.neo4j.driver.internal.util.FakeClock; import org.neo4j.driver.v1.AccessMode; import org.neo4j.driver.v1.Config; @@ -148,8 +149,8 @@ public void shouldFailIfNoRouting() // Then catch ( ServiceUnavailableException e ) { - assertThat( e.getMessage(), - containsString( "Failed to call 'dbms.cluster.routing.getServers' procedure on server" ) ); + assertThat( e.getMessage(), containsString( "Failed to run " + + "'Statement{text='CALL dbms.cluster.routing.getServers', parameters={}}' on server." ) ); } } @@ -344,7 +345,7 @@ private final Driver driverWithServers( long ttl, Map... serverIn private Driver driverWithPool( ConnectionPool pool ) { - RoutingSettings settings = new RoutingSettings( 10, 5_000 ); + RoutingSettings settings = new RoutingSettings( 10, 5_000, null ); ConnectionProvider connectionProvider = new LoadBalancer( SEED, settings, pool, clock, logging ); Config config = Config.build().withLogging( logging ).toConfig(); SessionFactory sessionFactory = new NetworkSessionWithAddressFactory( connectionProvider, config ); @@ -383,6 +384,7 @@ public PooledConnection answer( InvocationOnMock invocationOnMock ) throws Throw PooledConnection connection = mock( PooledConnection.class ); when( connection.isOpen() ).thenReturn( true ); when( connection.boltServerAddress() ).thenReturn( address ); + when( connection.server() ).thenReturn( new InternalServerInfo( address, "Neo4j/3.1.0" ) ); doAnswer( withKeys( "ttl", "servers" ) ).when( connection ).run( eq( GET_SERVERS ), eq( Collections.emptyMap() ), diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionProviderTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionProviderTest.java index 55af73bd37..f1ac12dcc5 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionProviderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterCompositionProviderTest.java @@ -27,7 +27,6 @@ import org.neo4j.driver.internal.InternalRecord; import org.neo4j.driver.internal.net.BoltServerAddress; -import org.neo4j.driver.internal.spi.Collector; import org.neo4j.driver.internal.spi.PooledConnection; import org.neo4j.driver.internal.util.Clock; import org.neo4j.driver.internal.value.StringValue; @@ -42,8 +41,6 @@ import static org.hamcrest.Matchers.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyMap; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -216,7 +213,7 @@ public void shouldPropagateConnectionFailureExceptions() throws Exception // Given GetServersProcedureRunner mockedRunner = mock( GetServersProcedureRunner.class ); ClusterCompositionProvider provider = new GetServersProcedureClusterCompositionProvider( mock( Clock.class ), - DEV_NULL_LOGGER ); + DEV_NULL_LOGGER, mockedRunner ); PooledConnection mockedConn = mock( PooledConnection.class ); Record record = new InternalRecord( asList( "ttl", "servers" ), new Value[]{ @@ -225,7 +222,7 @@ public void shouldPropagateConnectionFailureExceptions() throws Exception serverInfo( "ROUTE", "one:1337", "two:1337" ) ) ) } ); doThrow( new ServiceUnavailableException( "Connection breaks during cypher execution" ) ) - .when( mockedConn ).run( any( String.class ), anyMap(), any( Collector.class ) ); + .when( mockedRunner ).run( mockedConn ); // When & Then try diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunnerTest.java new file mode 100644 index 0000000000..d35a2f2093 --- /dev/null +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/GetServersProcedureRunnerTest.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2002-2017 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.neo4j.driver.internal.cluster; + +import org.junit.Test; + +import java.util.HashMap; +import java.util.List; + +import org.neo4j.driver.internal.net.BoltServerAddress; +import org.neo4j.driver.internal.spi.Connection; +import org.neo4j.driver.internal.summary.InternalServerInfo; +import org.neo4j.driver.v1.Record; +import org.neo4j.driver.v1.Statement; +import org.neo4j.driver.v1.Value; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.neo4j.driver.internal.cluster.GetServersProcedureRunner.GET_SERVERS; +import static org.neo4j.driver.internal.cluster.GetServersProcedureRunner.GET_ROUTING_TABLE; +import static org.neo4j.driver.v1.Values.value; + +public class GetServersProcedureRunnerTest +{ + @Test + public void shouldCallGetServersV2WithNull() throws Throwable + { + // Given + GetServersProcedureRunner runner = new TestGetServersProcedureRunner( value( (Object)null ) ); + Connection mock = mock( Connection.class ); + when( mock.server() ).thenReturn( + new InternalServerInfo( new BoltServerAddress( "123:45" ), "Neo4j/3.2.1" ) ); + // When + runner.run( mock ); + + // Then + assertThat( runner.procedureCalled(), equalTo( + new Statement( "CALL " + GET_ROUTING_TABLE, value( (Object) null) ) ) ); + } + + @Test + public void shouldCallGetServersV2WithParam() throws Throwable + { + // Given + HashMap param = new HashMap<>(); + param.put( "key1", "value1" ); + param.put( "key2", "value2" ); + GetServersProcedureRunner runner = new TestGetServersProcedureRunner( value( param ) ); + Connection mock = mock( Connection.class ); + when( mock.server() ).thenReturn( + new InternalServerInfo( new BoltServerAddress( "123:45" ), "Neo4j/3.2.1" ) ); + // When + runner.run( mock ); + + // Then + assertThat( runner.procedureCalled(), equalTo( + new Statement( "CALL " + GET_ROUTING_TABLE, value( param ) ) ) ); + } + + @Test + public void shouldCallGetServerV1() throws Throwable + { + // Given + HashMap param = new HashMap<>(); + param.put( "key1", "value1" ); + param.put( "key2", "value2" ); + GetServersProcedureRunner runner = new TestGetServersProcedureRunner( value( param ) ); + Connection mock = mock( Connection.class ); + when( mock.server() ).thenReturn( + new InternalServerInfo( new BoltServerAddress( "123:45" ), "Neo4j/3.1.8" ) ); + // When + runner.run( mock ); + + // Then + assertThat( runner.procedureCalled(), equalTo( + new Statement( "CALL " + GET_SERVERS ) ) ); + } + + private static class TestGetServersProcedureRunner extends GetServersProcedureRunner + { + + TestGetServersProcedureRunner( Value parameters ) + { + super( parameters ); + } + + @Override + List runProcedure( Connection connection, Statement procedure ) + { + // I do not want any network traffic + return null; + } + } + +} diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java index 3bcd5bd104..0695f81609 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java @@ -84,7 +84,7 @@ public void shouldTryConfiguredMaxRoutingFailures() throws Exception { // given int maxRoutingFailures = 7; - RoutingSettings settings = new RoutingSettings( maxRoutingFailures, 10 ); + RoutingSettings settings = new RoutingSettings( maxRoutingFailures, 10, null ); Clock clock = mock( Clock.class ); RoutingTable routingTable = new TestRoutingTable( A ); @@ -450,7 +450,7 @@ private static ClusterComposition rediscover( ConnectionPool connections, Routin private static ClusterComposition rediscover( BoltServerAddress initialRouter, ConnectionPool connections, RoutingTable routingTable, ClusterCompositionProvider provider ) { - RoutingSettings settings = new RoutingSettings( 1, 0 ); + RoutingSettings settings = new RoutingSettings( 1, 0, null ); Clock mockedClock = mock( Clock.class ); Logger mockedLogger = mock( Logger.class ); diff --git a/driver/src/test/java/org/neo4j/driver/v1/integration/BookmarkIT.java b/driver/src/test/java/org/neo4j/driver/v1/integration/BookmarkIT.java index 7957952a67..8edd3e079e 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/integration/BookmarkIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/integration/BookmarkIT.java @@ -31,7 +31,7 @@ import org.neo4j.driver.v1.Transaction; import org.neo4j.driver.v1.exceptions.ClientException; import org.neo4j.driver.v1.exceptions.TransientException; -import org.neo4j.driver.v1.util.ServerVersion; +import org.neo4j.driver.internal.util.ServerVersion; import org.neo4j.driver.v1.util.TestNeo4jSession; import static java.util.Arrays.asList; @@ -43,7 +43,7 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.junit.Assume.assumeTrue; -import static org.neo4j.driver.v1.util.ServerVersion.v3_1_0; +import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0; public class BookmarkIT { diff --git a/driver/src/test/java/org/neo4j/driver/v1/integration/CausalClusteringIT.java b/driver/src/test/java/org/neo4j/driver/v1/integration/CausalClusteringIT.java index caf910c634..57ba1c03ed 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/integration/CausalClusteringIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/integration/CausalClusteringIT.java @@ -105,7 +105,8 @@ public void sessionCreationShouldFailIfCallingDiscoveryProcedureOnEdgeServer() t } catch ( ServiceUnavailableException ex ) { - assertThat( ex.getMessage(), containsString( "Failed to call 'dbms.cluster.routing.getServers'" ) ); + assertThat( ex.getMessage(), containsString( + "Failed to run 'Statement{text='CALL dbms.cluster.routing.getServers', parameters={}}' on server." ) ); } } @@ -218,7 +219,7 @@ public void shouldDropBrokenOldSessions() throws Exception URI routingUri = cluster.leader().getRoutingUri(); AuthToken auth = clusterRule.getDefaultAuthToken(); - RoutingSettings routingSettings = new RoutingSettings( 1, TimeUnit.SECONDS.toMillis( 5 ) ); + RoutingSettings routingSettings = new RoutingSettings( 1, TimeUnit.SECONDS.toMillis( 5 ), null ); RetrySettings retrySettings = RetrySettings.DEFAULT; try ( Driver driver = driverFactory.newInstance( routingUri, auth, routingSettings, retrySettings, config ) ) diff --git a/driver/src/test/java/org/neo4j/driver/v1/integration/ConnectionHandlingIT.java b/driver/src/test/java/org/neo4j/driver/v1/integration/ConnectionHandlingIT.java index 0e10a28b50..700b157acc 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/integration/ConnectionHandlingIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/integration/ConnectionHandlingIT.java @@ -81,7 +81,7 @@ public void createDriver() { DriverFactoryWithConnector driverFactory = new DriverFactoryWithConnector(); AuthToken auth = AuthTokens.none(); - RoutingSettings routingSettings = new RoutingSettings( 1, 1 ); + RoutingSettings routingSettings = new RoutingSettings( 1, 1, null ); RetrySettings retrySettings = RetrySettings.DEFAULT; driver = driverFactory.newInstance( neo4j.uri(), auth, routingSettings, retrySettings, defaultConfig() ); connectionPool = driverFactory.connectionPool; diff --git a/driver/src/test/java/org/neo4j/driver/v1/integration/ServerKilledIT.java b/driver/src/test/java/org/neo4j/driver/v1/integration/ServerKilledIT.java index 1af89af366..b59732e68e 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/integration/ServerKilledIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/integration/ServerKilledIT.java @@ -159,7 +159,7 @@ private static Driver createDriver( Clock clock, Config config ) { DriverFactory factory = new DriverFactoryWithClock( clock ); AuthToken auth = AuthTokens.none(); - RoutingSettings routingSettings = new RoutingSettings( 1, 1 ); + RoutingSettings routingSettings = new RoutingSettings( 1, 1, null ); RetrySettings retrySettings = RetrySettings.DEFAULT; return factory.newInstance( Neo4jRunner.DEFAULT_URI, auth, routingSettings, retrySettings, config ); } diff --git a/driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java b/driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java index ad39c848ac..d82e3f1807 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java @@ -44,7 +44,7 @@ import org.neo4j.driver.v1.exceptions.ClientException; import org.neo4j.driver.v1.exceptions.Neo4jException; import org.neo4j.driver.v1.exceptions.ServiceUnavailableException; -import org.neo4j.driver.v1.util.ServerVersion; +import org.neo4j.driver.internal.util.ServerVersion; import org.neo4j.driver.v1.util.TestNeo4j; import static org.hamcrest.CoreMatchers.containsString; @@ -68,7 +68,7 @@ import static org.mockito.Mockito.verify; import static org.neo4j.driver.v1.Config.defaultConfig; import static org.neo4j.driver.v1.Values.parameters; -import static org.neo4j.driver.v1.util.ServerVersion.v3_1_0; +import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0; public class SessionIT { @@ -955,7 +955,7 @@ private Driver newDriverWithoutRetries() private Driver newDriverWithFixedRetries( int maxRetriesCount ) { DriverFactory driverFactory = new DriverFactoryWithFixedRetryLogic( maxRetriesCount ); - RoutingSettings routingConf = new RoutingSettings( 1, 1 ); + RoutingSettings routingConf = new RoutingSettings( 1, 1, null ); AuthToken auth = AuthTokens.none(); return driverFactory.newInstance( neo4j.uri(), auth, routingConf, RetrySettings.DEFAULT, defaultConfig() ); } diff --git a/driver/src/test/java/org/neo4j/driver/v1/integration/SummaryIT.java b/driver/src/test/java/org/neo4j/driver/v1/integration/SummaryIT.java index 72951cf23f..8086f992e3 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/integration/SummaryIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/integration/SummaryIT.java @@ -43,8 +43,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import static org.neo4j.driver.v1.util.ServerVersion.v3_1_0; -import static org.neo4j.driver.v1.util.ServerVersion.version; +import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0; +import static org.neo4j.driver.internal.util.ServerVersion.version; public class SummaryIT { diff --git a/driver/src/test/java/org/neo4j/driver/v1/tck/DriverComplianceIT.java b/driver/src/test/java/org/neo4j/driver/v1/tck/DriverComplianceIT.java index cd4399b291..fd1eec2efb 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/tck/DriverComplianceIT.java +++ b/driver/src/test/java/org/neo4j/driver/v1/tck/DriverComplianceIT.java @@ -27,12 +27,12 @@ import java.io.IOException; +import org.neo4j.driver.internal.util.ServerVersion; import org.neo4j.driver.v1.Driver; -import org.neo4j.driver.v1.util.ServerVersion; import org.neo4j.driver.v1.util.TestNeo4j; import static org.junit.Assume.assumeTrue; -import static org.neo4j.driver.v1.util.ServerVersion.v3_2_0; +import static org.neo4j.driver.internal.util.ServerVersion.v3_2_0; /** * The base class to run all cucumber tests diff --git a/driver/src/test/java/org/neo4j/driver/v1/util/cc/ClusterRule.java b/driver/src/test/java/org/neo4j/driver/v1/util/cc/ClusterRule.java index 325d61c65e..b9d18bd80a 100644 --- a/driver/src/test/java/org/neo4j/driver/v1/util/cc/ClusterRule.java +++ b/driver/src/test/java/org/neo4j/driver/v1/util/cc/ClusterRule.java @@ -28,10 +28,10 @@ import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; +import org.neo4j.driver.internal.util.ServerVersion; import org.neo4j.driver.v1.AuthToken; import org.neo4j.driver.v1.AuthTokens; import org.neo4j.driver.v1.util.Neo4jRunner; -import org.neo4j.driver.v1.util.ServerVersion; import static org.junit.Assume.assumeTrue; import static org.neo4j.driver.v1.util.Neo4jRunner.TARGET_DIR;