Skip to content

Commit 465c105

Browse files
author
Zhen Li
authored
Merge pull request #339 from zhenlineo/1.3-fix-routing-context
Fix routing context requirement
2 parents 47deff5 + 01e3dec commit 465c105

File tree

11 files changed

+62
-16
lines changed

11 files changed

+62
-16
lines changed

driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingSettings.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@
2323
import org.neo4j.driver.v1.Value;
2424
import org.neo4j.driver.v1.Values;
2525

26+
import static java.util.Collections.emptyMap;
27+
import static java.util.Collections.singletonMap;
28+
2629
public class RoutingSettings
2730
{
2831
final int maxRoutingFailures;
2932
final long retryTimeoutDelay;
3033
final Value routingParameters;
3134

32-
public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay, Map<String, String> routingParameters )
35+
public RoutingSettings( int maxRoutingFailures, long retryTimeoutDelay, Map<String, Object> routingParameters )
3336
{
3437
this.maxRoutingFailures = maxRoutingFailures;
3538
this.retryTimeoutDelay = retryTimeoutDelay;

driver/src/main/java/org/neo4j/driver/v1/Config.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import org.neo4j.driver.v1.util.Immutable;
3434
import org.neo4j.driver.v1.util.Resource;
3535

36+
import static java.util.Collections.emptyMap;
37+
import static java.util.Collections.singletonMap;
3638
import static org.neo4j.driver.v1.Config.TrustStrategy.trustAllCertificates;
3739

3840
/**
@@ -75,7 +77,7 @@ public class Config
7577
private final int connectionTimeoutMillis;
7678
private final RetrySettings retrySettings;
7779

78-
private final Map<String, String> routingContext;
80+
private final Map<String, Object> routingContext;
7981

8082
private Config( ConfigBuilder builder)
8183
{
@@ -210,7 +212,7 @@ public static class ConfigBuilder
210212
private long routingRetryDelayMillis = TimeUnit.SECONDS.toMillis( 5 );
211213
private int connectionTimeoutMillis = (int) TimeUnit.SECONDS.toMillis( 5 );
212214
private RetrySettings retrySettings = RetrySettings.DEFAULT;
213-
private Map<String,String> routingContext = null;
215+
private Map<String,Object> routingContext = singletonMap( "context", (Object) emptyMap() );
214216

215217
private ConfigBuilder() {}
216218

@@ -488,7 +490,7 @@ public ConfigBuilder withMaxTransactionRetryTime( long value, TimeUnit unit )
488490
* @since 1.3
489491
* @return this builder
490492
*/
491-
public ConfigBuilder withRoutingContext( Map<String, String> context )
493+
public ConfigBuilder withRoutingContext( Map<String, Object> context )
492494
{
493495
this.routingContext = context;
494496
return this;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.neo4j.driver.v1.AuthTokens;
4242
import org.neo4j.driver.v1.Config;
4343
import org.neo4j.driver.v1.Driver;
44+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
4445

4546
import static org.hamcrest.Matchers.instanceOf;
4647
import static org.junit.Assert.assertArrayEquals;
@@ -139,7 +140,7 @@ private Driver createDriver( DriverFactory driverFactory )
139140
private Driver createDriver( DriverFactory driverFactory, Config config )
140141
{
141142
AuthToken auth = AuthTokens.none();
142-
RoutingSettings routingSettings = new RoutingSettings( 42, 42, null );
143+
RoutingSettings routingSettings = new TestRoutingSettings( 42, 42 );
143144
return driverFactory.newInstance( uri, auth, routingSettings, RetrySettings.DEFAULT, config );
144145
}
145146

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.neo4j.driver.v1.exceptions.SessionExpiredException;
5050
import org.neo4j.driver.v1.util.Function;
5151
import org.neo4j.driver.v1.util.StubServer;
52+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
5253

5354
import static org.hamcrest.Matchers.instanceOf;
5455
import static org.hamcrest.core.IsEqual.equalTo;
@@ -873,7 +874,7 @@ private static Driver newDriverWithFixedRetries( String uriString, int retries )
873874
private static Driver newDriver( String uriString, DriverFactory driverFactory )
874875
{
875876
URI uri = URI.create( uriString );
876-
RoutingSettings routingConf = new RoutingSettings( 1, 1, null );
877+
RoutingSettings routingConf = new TestRoutingSettings( 1, 1 );
877878
AuthToken auth = AuthTokens.none();
878879
return driverFactory.newInstance( uri, auth, routingConf, RetrySettings.DEFAULT, config );
879880
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.neo4j.driver.v1.exceptions.ClientException;
5050
import org.neo4j.driver.v1.exceptions.ProtocolException;
5151
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
52+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
5253

5354
import static java.util.Arrays.asList;
5455
import static junit.framework.TestCase.fail;
@@ -345,7 +346,7 @@ private final Driver driverWithServers( long ttl, Map<String,Object>... serverIn
345346

346347
private Driver driverWithPool( ConnectionPool pool )
347348
{
348-
RoutingSettings settings = new RoutingSettings( 10, 5_000, null );
349+
RoutingSettings settings = new TestRoutingSettings( 10, 5_000 );
349350
ConnectionProvider connectionProvider = new LoadBalancer( SEED, settings, pool, clock, logging );
350351
Config config = Config.build().withLogging( logging ).toConfig();
351352
SessionFactory sessionFactory = new NetworkSessionWithAddressFactory( connectionProvider, config );

driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.neo4j.driver.v1.Logger;
3737
import org.neo4j.driver.v1.exceptions.ProtocolException;
3838
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
39+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
3940

4041
import static java.util.Arrays.asList;
4142
import static org.hamcrest.Matchers.containsString;
@@ -84,7 +85,7 @@ public void shouldTryConfiguredMaxRoutingFailures() throws Exception
8485
{
8586
// given
8687
int maxRoutingFailures = 7;
87-
RoutingSettings settings = new RoutingSettings( maxRoutingFailures, 10, null );
88+
RoutingSettings settings = new TestRoutingSettings( maxRoutingFailures, 10 );
8889
Clock clock = mock( Clock.class );
8990
RoutingTable routingTable = new TestRoutingTable( A );
9091

@@ -450,7 +451,7 @@ private static ClusterComposition rediscover( ConnectionPool connections, Routin
450451
private static ClusterComposition rediscover( BoltServerAddress initialRouter, ConnectionPool connections,
451452
RoutingTable routingTable, ClusterCompositionProvider provider )
452453
{
453-
RoutingSettings settings = new RoutingSettings( 1, 0, null );
454+
RoutingSettings settings = new TestRoutingSettings( 1, 0 );
454455
Clock mockedClock = mock( Clock.class );
455456
Logger mockedLogger = mock( Logger.class );
456457

driver/src/test/java/org/neo4j/driver/v1/integration/CausalClusteringIT.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.neo4j.driver.v1.util.cc.Cluster;
5555
import org.neo4j.driver.v1.util.cc.ClusterMember;
5656
import org.neo4j.driver.v1.util.cc.ClusterRule;
57+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
5758

5859
import static org.hamcrest.Matchers.containsString;
5960
import static org.hamcrest.Matchers.instanceOf;
@@ -106,7 +107,7 @@ public void sessionCreationShouldFailIfCallingDiscoveryProcedureOnEdgeServer() t
106107
catch ( ServiceUnavailableException ex )
107108
{
108109
assertThat( ex.getMessage(), containsString(
109-
"Failed to run 'Statement{text='CALL dbms.cluster.routing.getServers', parameters={}}' on server." ) );
110+
"Failed to run 'Statement{text='CALL dbms.cluster.routing" ) );
110111
}
111112
}
112113

@@ -219,7 +220,8 @@ public void shouldDropBrokenOldSessions() throws Exception
219220

220221
URI routingUri = cluster.leader().getRoutingUri();
221222
AuthToken auth = clusterRule.getDefaultAuthToken();
222-
RoutingSettings routingSettings = new RoutingSettings( 1, TimeUnit.SECONDS.toMillis( 5 ), null );
223+
RoutingSettings routingSettings = new TestRoutingSettings( 1,
224+
TimeUnit.SECONDS.toMillis( 5 ) );
223225
RetrySettings retrySettings = RetrySettings.DEFAULT;
224226

225227
try ( Driver driver = driverFactory.newInstance( routingUri, auth, routingSettings, retrySettings, config ) )

driver/src/test/java/org/neo4j/driver/v1/integration/ConnectionHandlingIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.neo4j.driver.v1.exceptions.ClientException;
5353
import org.neo4j.driver.v1.summary.ResultSummary;
5454
import org.neo4j.driver.v1.util.TestNeo4j;
55+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
5556

5657
import static org.hamcrest.Matchers.instanceOf;
5758
import static org.junit.Assert.assertEquals;
@@ -81,7 +82,7 @@ public void createDriver()
8182
{
8283
DriverFactoryWithConnector driverFactory = new DriverFactoryWithConnector();
8384
AuthToken auth = AuthTokens.none();
84-
RoutingSettings routingSettings = new RoutingSettings( 1, 1, null );
85+
RoutingSettings routingSettings = new TestRoutingSettings( 1, 1 );
8586
RetrySettings retrySettings = RetrySettings.DEFAULT;
8687
driver = driverFactory.newInstance( neo4j.uri(), auth, routingSettings, retrySettings, defaultConfig() );
8788
connectionPool = driverFactory.connectionPool;

driver/src/test/java/org/neo4j/driver/v1/integration/ServerKilledIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
4646
import org.neo4j.driver.v1.util.Neo4jRunner;
4747
import org.neo4j.driver.v1.util.TestNeo4j;
48+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
4849

4950
import static org.junit.Assert.assertEquals;
5051
import static org.junit.Assert.fail;
@@ -159,7 +160,7 @@ private static Driver createDriver( Clock clock, Config config )
159160
{
160161
DriverFactory factory = new DriverFactoryWithClock( clock );
161162
AuthToken auth = AuthTokens.none();
162-
RoutingSettings routingSettings = new RoutingSettings( 1, 1, null );
163+
RoutingSettings routingSettings = new TestRoutingSettings( 1, 1 );
163164
RetrySettings retrySettings = RetrySettings.DEFAULT;
164165
return factory.newInstance( Neo4jRunner.DEFAULT_URI, auth, routingSettings, retrySettings, config );
165166
}

driver/src/test/java/org/neo4j/driver/v1/integration/SessionIT.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.neo4j.driver.internal.cluster.RoutingSettings;
3232
import org.neo4j.driver.internal.retry.RetrySettings;
3333
import org.neo4j.driver.internal.util.DriverFactoryWithFixedRetryLogic;
34+
import org.neo4j.driver.internal.util.ServerVersion;
3435
import org.neo4j.driver.v1.AccessMode;
3536
import org.neo4j.driver.v1.AuthToken;
3637
import org.neo4j.driver.v1.AuthTokens;
@@ -44,8 +45,8 @@
4445
import org.neo4j.driver.v1.exceptions.ClientException;
4546
import org.neo4j.driver.v1.exceptions.Neo4jException;
4647
import org.neo4j.driver.v1.exceptions.ServiceUnavailableException;
47-
import org.neo4j.driver.internal.util.ServerVersion;
4848
import org.neo4j.driver.v1.util.TestNeo4j;
49+
import org.neo4j.driver.v1.util.cc.TestRoutingSettings;
4950

5051
import static java.lang.String.format;
5152
import static org.hamcrest.CoreMatchers.containsString;
@@ -67,9 +68,9 @@
6768
import static org.mockito.Mockito.spy;
6869
import static org.mockito.Mockito.times;
6970
import static org.mockito.Mockito.verify;
71+
import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0;
7072
import static org.neo4j.driver.v1.Config.defaultConfig;
7173
import static org.neo4j.driver.v1.Values.parameters;
72-
import static org.neo4j.driver.internal.util.ServerVersion.v3_1_0;
7374

7475
public class SessionIT
7576
{
@@ -956,7 +957,7 @@ private Driver newDriverWithoutRetries()
956957
private Driver newDriverWithFixedRetries( int maxRetriesCount )
957958
{
958959
DriverFactory driverFactory = new DriverFactoryWithFixedRetryLogic( maxRetriesCount );
959-
RoutingSettings routingConf = new RoutingSettings( 1, 1, null );
960+
RoutingSettings routingConf = new TestRoutingSettings( 1, 1 );
960961
AuthToken auth = AuthTokens.none();
961962
return driverFactory.newInstance( neo4j.uri(), auth, routingConf, RetrySettings.DEFAULT, defaultConfig() );
962963
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright (c) 2002-2017 "Neo Technology,"
3+
* Network Engine for Objects in Lund AB [http://neotechnology.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
*/
19+
package org.neo4j.driver.v1.util.cc;
20+
21+
import org.neo4j.driver.internal.cluster.RoutingSettings;
22+
23+
import static java.util.Collections.emptyMap;
24+
import static java.util.Collections.singletonMap;
25+
26+
public class TestRoutingSettings extends RoutingSettings
27+
{
28+
public TestRoutingSettings( int maxRoutingFailures, long retryTimeoutDelay )
29+
{
30+
super( maxRoutingFailures, retryTimeoutDelay, singletonMap( "context", (Object) emptyMap() ) );
31+
}
32+
}

0 commit comments

Comments
 (0)