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 defa237c22..ea49e4cb2c 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 @@ -23,13 +23,16 @@ import org.neo4j.driver.v1.Value; import org.neo4j.driver.v1.Values; +import static java.util.Collections.emptyMap; +import static java.util.Collections.singletonMap; + public class RoutingSettings { final int maxRoutingFailures; final long retryTimeoutDelay; final Value routingParameters; - public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay, Map routingParameters ) + public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay, Map routingParameters ) { this.maxRoutingFailures = maxRoutingFailures; this.retryTimeoutDelay = retryTimeoutDelay; 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 72dab7d313..1c072b108d 100644 --- a/driver/src/main/java/org/neo4j/driver/v1/Config.java +++ b/driver/src/main/java/org/neo4j/driver/v1/Config.java @@ -33,6 +33,8 @@ import org.neo4j.driver.v1.util.Immutable; import org.neo4j.driver.v1.util.Resource; +import static java.util.Collections.emptyMap; +import static java.util.Collections.singletonMap; import static org.neo4j.driver.v1.Config.TrustStrategy.trustAllCertificates; /** @@ -75,7 +77,7 @@ public class Config private final int connectionTimeoutMillis; private final RetrySettings retrySettings; - private final Map routingContext; + private final Map routingContext; private Config( ConfigBuilder builder) { @@ -210,7 +212,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 Map routingContext = singletonMap( "context", (Object) emptyMap() ); private ConfigBuilder() {} @@ -488,7 +490,7 @@ public ConfigBuilder withMaxTransactionRetryTime( long value, TimeUnit unit ) * @since 1.3 * @return this builder */ - public ConfigBuilder withRoutingContext( Map context ) + public ConfigBuilder withRoutingContext( Map context ) { this.routingContext = context; return this; 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 a86af9227d..2784b1360d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DriverFactoryTest.java @@ -41,6 +41,7 @@ import org.neo4j.driver.v1.AuthTokens; import org.neo4j.driver.v1.Config; import org.neo4j.driver.v1.Driver; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static org.hamcrest.Matchers.instanceOf; import static org.junit.Assert.assertArrayEquals; @@ -139,7 +140,7 @@ private Driver createDriver( DriverFactory driverFactory ) private Driver createDriver( DriverFactory driverFactory, Config config ) { AuthToken auth = AuthTokens.none(); - RoutingSettings routingSettings = new RoutingSettings( 42, 42, null ); + RoutingSettings routingSettings = new TestRoutingSettings( 42, 42 ); 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 086e974b05..3327ed6fa1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverBoltKitTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverBoltKitTest.java @@ -49,6 +49,7 @@ import org.neo4j.driver.v1.exceptions.SessionExpiredException; import org.neo4j.driver.v1.util.Function; import org.neo4j.driver.v1.util.StubServer; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.core.IsEqual.equalTo; @@ -873,7 +874,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, null ); + RoutingSettings routingConf = new TestRoutingSettings( 1, 1 ); 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 2f7d7ea05e..a7157f35ba 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/RoutingDriverTest.java @@ -49,6 +49,7 @@ import org.neo4j.driver.v1.exceptions.ClientException; import org.neo4j.driver.v1.exceptions.ProtocolException; import org.neo4j.driver.v1.exceptions.ServiceUnavailableException; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static java.util.Arrays.asList; import static junit.framework.TestCase.fail; @@ -345,7 +346,7 @@ private final Driver driverWithServers( long ttl, Map... serverIn private Driver driverWithPool( ConnectionPool pool ) { - RoutingSettings settings = new RoutingSettings( 10, 5_000, null ); + RoutingSettings settings = new TestRoutingSettings( 10, 5_000 ); ConnectionProvider connectionProvider = new LoadBalancer( SEED, settings, pool, clock, logging ); Config config = Config.build().withLogging( logging ).toConfig(); SessionFactory sessionFactory = new NetworkSessionWithAddressFactory( connectionProvider, config ); 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 0695f81609..143d612527 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 @@ -36,6 +36,7 @@ import org.neo4j.driver.v1.Logger; import org.neo4j.driver.v1.exceptions.ProtocolException; import org.neo4j.driver.v1.exceptions.ServiceUnavailableException; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static java.util.Arrays.asList; import static org.hamcrest.Matchers.containsString; @@ -84,7 +85,7 @@ public void shouldTryConfiguredMaxRoutingFailures() throws Exception { // given int maxRoutingFailures = 7; - RoutingSettings settings = new RoutingSettings( maxRoutingFailures, 10, null ); + RoutingSettings settings = new TestRoutingSettings( maxRoutingFailures, 10 ); Clock clock = mock( Clock.class ); RoutingTable routingTable = new TestRoutingTable( A ); @@ -450,7 +451,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, null ); + RoutingSettings settings = new TestRoutingSettings( 1, 0 ); Clock mockedClock = mock( Clock.class ); Logger mockedLogger = mock( Logger.class ); 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 57ba1c03ed..2c7f299ba5 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 @@ -54,6 +54,7 @@ import org.neo4j.driver.v1.util.cc.Cluster; import org.neo4j.driver.v1.util.cc.ClusterMember; import org.neo4j.driver.v1.util.cc.ClusterRule; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.instanceOf; @@ -106,7 +107,7 @@ public void sessionCreationShouldFailIfCallingDiscoveryProcedureOnEdgeServer() t catch ( ServiceUnavailableException ex ) { assertThat( ex.getMessage(), containsString( - "Failed to run 'Statement{text='CALL dbms.cluster.routing.getServers', parameters={}}' on server." ) ); + "Failed to run 'Statement{text='CALL dbms.cluster.routing" ) ); } } @@ -219,7 +220,8 @@ public void shouldDropBrokenOldSessions() throws Exception URI routingUri = cluster.leader().getRoutingUri(); AuthToken auth = clusterRule.getDefaultAuthToken(); - RoutingSettings routingSettings = new RoutingSettings( 1, TimeUnit.SECONDS.toMillis( 5 ), null ); + RoutingSettings routingSettings = new TestRoutingSettings( 1, + TimeUnit.SECONDS.toMillis( 5 ) ); 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 700b157acc..70e8547871 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 @@ -52,6 +52,7 @@ import org.neo4j.driver.v1.exceptions.ClientException; import org.neo4j.driver.v1.summary.ResultSummary; import org.neo4j.driver.v1.util.TestNeo4j; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static org.hamcrest.Matchers.instanceOf; import static org.junit.Assert.assertEquals; @@ -81,7 +82,7 @@ public void createDriver() { DriverFactoryWithConnector driverFactory = new DriverFactoryWithConnector(); AuthToken auth = AuthTokens.none(); - RoutingSettings routingSettings = new RoutingSettings( 1, 1, null ); + RoutingSettings routingSettings = new TestRoutingSettings( 1, 1 ); 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 b59732e68e..96ed75c8da 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 @@ -45,6 +45,7 @@ import org.neo4j.driver.v1.exceptions.ServiceUnavailableException; import org.neo4j.driver.v1.util.Neo4jRunner; import org.neo4j.driver.v1.util.TestNeo4j; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -159,7 +160,7 @@ private static Driver createDriver( Clock clock, Config config ) { DriverFactory factory = new DriverFactoryWithClock( clock ); AuthToken auth = AuthTokens.none(); - RoutingSettings routingSettings = new RoutingSettings( 1, 1, null ); + RoutingSettings routingSettings = new TestRoutingSettings( 1, 1 ); 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 8943b9a811..80cecd95c2 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 @@ -31,6 +31,7 @@ import org.neo4j.driver.internal.cluster.RoutingSettings; import org.neo4j.driver.internal.retry.RetrySettings; import org.neo4j.driver.internal.util.DriverFactoryWithFixedRetryLogic; +import org.neo4j.driver.internal.util.ServerVersion; import org.neo4j.driver.v1.AccessMode; import org.neo4j.driver.v1.AuthToken; import org.neo4j.driver.v1.AuthTokens; @@ -44,8 +45,8 @@ 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.internal.util.ServerVersion; import org.neo4j.driver.v1.util.TestNeo4j; +import org.neo4j.driver.v1.util.cc.TestRoutingSettings; import static java.lang.String.format; import static org.hamcrest.CoreMatchers.containsString; @@ -67,9 +68,9 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0; import static org.neo4j.driver.v1.Config.defaultConfig; import static org.neo4j.driver.v1.Values.parameters; -import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0; public class SessionIT { @@ -956,7 +957,7 @@ private Driver newDriverWithoutRetries() private Driver newDriverWithFixedRetries( int maxRetriesCount ) { DriverFactory driverFactory = new DriverFactoryWithFixedRetryLogic( maxRetriesCount ); - RoutingSettings routingConf = new RoutingSettings( 1, 1, null ); + RoutingSettings routingConf = new TestRoutingSettings( 1, 1 ); 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/util/cc/TestRoutingSettings.java b/driver/src/test/java/org/neo4j/driver/v1/util/cc/TestRoutingSettings.java new file mode 100644 index 0000000000..7fcd1d4828 --- /dev/null +++ b/driver/src/test/java/org/neo4j/driver/v1/util/cc/TestRoutingSettings.java @@ -0,0 +1,32 @@ +/* + * 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.v1.util.cc; + +import org.neo4j.driver.internal.cluster.RoutingSettings; + +import static java.util.Collections.emptyMap; +import static java.util.Collections.singletonMap; + +public class TestRoutingSettings extends RoutingSettings +{ + public TestRoutingSettings( int maxRoutingFailures, long retryTimeoutDelay ) + { + super( maxRoutingFailures, retryTimeoutDelay, singletonMap( "context", (Object) emptyMap() ) ); + } +}