Skip to content

Commit 35a02dc

Browse files
author
Zhen Li
committed
Fixed BoltKit tests due to server version
1 parent c8e0317 commit 35a02dc

25 files changed

+61
-51
lines changed

driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelTracker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void channelReleased( Channel channel )
7171
@Override
7272
public void channelAcquired( Channel channel )
7373
{
74-
log.debug( "Channel [%s] acquired from the pool. Local address: %s, remote address: %s",
74+
log.debug( "Channel [0x%s] acquired from the pool. Local address: %s, remote address: %s",
7575
channel.id(), channel.localAddress(), channel.remoteAddress() );
7676

7777
incrementInUse( channel );
@@ -87,7 +87,7 @@ public void channelCreated( Channel channel )
8787

8888
public void channelCreated( Channel channel, ListenerEvent creatingEvent )
8989
{
90-
log.debug( "Channel [%s] created. Local address: %s, remote address: %s",
90+
log.debug( "Channel [0x%s] created. Local address: %s, remote address: %s",
9191
channel.id(), channel.localAddress(), channel.remoteAddress() );
9292

9393
incrementInUse( channel );

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public CompletionStage<RoutingProcedureResponse> run( CompletionStage<Connection
6161
{
6262
ServerVersion serverVersion = connection.serverVersion();
6363
// As the connection can connect to any router (a.k.a. any core members), this connection strictly speaking is a read connection.
64-
DirectConnection delegate = new DirectConnection( connection, SYSTEM_DB_NAME, AccessMode.READ );
64+
DirectConnection delegate = connection( serverVersion, connection );
6565
Statement procedure = procedureStatement( serverVersion, databaseName );
6666
return runProcedure( delegate, procedure )
6767
.thenCompose( records -> releaseConnection( delegate, records ) )
@@ -76,6 +76,18 @@ CompletionStage<List<Record>> runProcedure( Connection connection, Statement pro
7676
.asyncResult().thenCompose( StatementResultCursor::listAsync );
7777
}
7878

79+
private DirectConnection connection( ServerVersion serverVersion, Connection connection )
80+
{
81+
if ( serverVersion.greaterThanOrEqual( v4_0_0 ))
82+
{
83+
return new DirectConnection( connection, SYSTEM_DB_NAME, AccessMode.READ );
84+
}
85+
else
86+
{
87+
return new DirectConnection( connection, ABSENT_DB_NAME, AccessMode.WRITE );
88+
}
89+
}
90+
7991
private Statement procedureStatement( ServerVersion serverVersion, String databaseName )
8092
{
8193
/*

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public RoutingTableHandler( RoutingTable routingTable, Rediscovery rediscovery,
5454
@Override
5555
public void onConnectionFailure( BoltServerAddress address )
5656
{
57-
// remove from the routing table, to prevent concurrent threads from making connections to this address
57+
// remove server from the routing table, to prevent concurrent threads from making connections to this address
5858
routingTable.forget( address );
5959
}
6060

@@ -130,7 +130,7 @@ private synchronized void clusterCompositionLookupFailed( Throwable error )
130130
routingTableFuture.completeExceptionally( error );
131131
}
132132

133-
// This method cannot be synchronized as it will visited by all routing table's threads concurrently
133+
// This method cannot be synchronized as it will be visited by all routing table's threads concurrently
134134
public Set<BoltServerAddress> servers()
135135
{
136136
return routingTable.servers();

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,13 @@ public interface RoutingTables
4444
Set<BoltServerAddress> allServers();
4545

4646
/**
47-
* The routing error handler removes stale servers from routing table.
47+
* The routing error handler used to remove stale servers from routing table.
4848
* @return the routing error handler of the given database
4949
*/
5050
RoutingErrorHandler routingErrorHandler( String databaseName );
5151

52+
/**
53+
* Removes a routing table of the given database from all tables.
54+
*/
5255
void remove( String databaseName );
5356
}

driver/src/test/java/org/neo4j/driver/integration/ChannelConnectorImplIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package org.neo4j.driver.integration.async;
19+
package org.neo4j.driver.integration;
2020

2121
import io.netty.bootstrap.Bootstrap;
2222
import io.netty.channel.Channel;

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

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@
2828
import java.util.concurrent.atomic.AtomicBoolean;
2929
import java.util.concurrent.atomic.AtomicInteger;
3030

31-
import org.neo4j.driver.internal.DriverFactory;
32-
import org.neo4j.driver.internal.cluster.RoutingSettings;
33-
import org.neo4j.driver.internal.retry.RetrySettings;
34-
import org.neo4j.driver.internal.util.DriverFactoryWithClock;
35-
import org.neo4j.driver.internal.util.DriverFactoryWithFixedRetryLogic;
36-
import org.neo4j.driver.internal.util.SleeplessClock;
3731
import org.neo4j.driver.AccessMode;
3832
import org.neo4j.driver.AuthToken;
3933
import org.neo4j.driver.AuthTokens;
@@ -50,6 +44,12 @@
5044
import org.neo4j.driver.exceptions.ServiceUnavailableException;
5145
import org.neo4j.driver.exceptions.SessionExpiredException;
5246
import org.neo4j.driver.exceptions.TransientException;
47+
import org.neo4j.driver.internal.DriverFactory;
48+
import org.neo4j.driver.internal.cluster.RoutingSettings;
49+
import org.neo4j.driver.internal.retry.RetrySettings;
50+
import org.neo4j.driver.internal.util.DriverFactoryWithClock;
51+
import org.neo4j.driver.internal.util.DriverFactoryWithFixedRetryLogic;
52+
import org.neo4j.driver.internal.util.SleeplessClock;
5353
import org.neo4j.driver.net.ServerAddress;
5454
import org.neo4j.driver.net.ServerAddressResolver;
5555
import org.neo4j.driver.util.StubServer;
@@ -723,7 +723,7 @@ void shouldRetryWriteTransactionUntilSuccessWithWhenLeaderIsRemoved() throws Exc
723723

724724
Logger logger = mock( Logger.class );
725725
Config config = Config.builder().withoutEncryption().withLogging( mockedLogging( logger ) ).build();
726-
try ( Driver driver = newDriverWithSleeplessClock( "bolt+routing://127.0.0.1:9001", config );
726+
try ( Driver driver = newDriverWithSleeplessClock( "neo4j://127.0.0.1:9001", config );
727727
Session session = driver.session() )
728728
{
729729
AtomicInteger invocations = new AtomicInteger();
@@ -757,7 +757,7 @@ void shouldRetryWriteTransactionUntilSuccessWithWhenLeaderIsRemovedV3() throws E
757757

758758
Logger logger = mock( Logger.class );
759759
Config config = Config.builder().withoutEncryption().withLogging( mockedLogging( logger ) ).build();
760-
try ( Driver driver = newDriverWithSleeplessClock( "bolt+routing://127.0.0.1:9001", config );
760+
try ( Driver driver = newDriverWithSleeplessClock( "neo4j://127.0.0.1:9001", config );
761761
Session session = driver.session() )
762762
{
763763
AtomicInteger invocations = new AtomicInteger();
@@ -943,27 +943,6 @@ void shouldSendRoutingContextToServer() throws Exception
943943
}
944944
}
945945

946-
@Test
947-
void shouldIgnoreRoutingContextWhenServerDoesNotSupportIt() throws Exception
948-
{
949-
// stub server is both a router and reader
950-
StubServer server = StubServer.start( "rediscover_and_read_with_init.script", 9001 );
951-
952-
URI uri = URI.create( "neo4j://127.0.0.1:9001/?policy=my_policy" );
953-
try ( Driver driver = GraphDatabase.driver( uri, config );
954-
Session session = driver.session() )
955-
{
956-
List<Record> records = session.run( "MATCH (n) RETURN n.name" ).list();
957-
assertEquals( 2, records.size() );
958-
assertEquals( "Bob", records.get( 0 ).get( 0 ).asString() );
959-
assertEquals( "Tina", records.get( 1 ).get( 0 ).asString() );
960-
}
961-
finally
962-
{
963-
assertEquals( 0, server.exitStatus() );
964-
}
965-
}
966-
967946
@Test
968947
void shouldServeReadsButFailWritesWhenNoWritersAvailable() throws Exception
969948
{

driver/src/test/java/org/neo4j/driver/integration/async/AsyncSessionIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package org.neo4j.driver.integration;
19+
package org.neo4j.driver.integration.async;
2020

2121
import org.junit.jupiter.api.AfterEach;
2222
import org.junit.jupiter.api.BeforeEach;

driver/src/test/java/org/neo4j/driver/integration/async/AsyncTransactionIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package org.neo4j.driver.integration;
19+
package org.neo4j.driver.integration.async;
2020

2121
import org.junit.jupiter.api.AfterEach;
2222
import org.junit.jupiter.api.BeforeEach;

driver/src/test/java/org/neo4j/driver/stress/CausalClusteringIT.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package org.neo4j.driver;
19+
package org.neo4j.driver.stress;
2020

2121
import io.netty.channel.Channel;
2222
import org.junit.jupiter.api.AfterEach;
@@ -39,6 +39,17 @@
3939
import java.util.concurrent.atomic.AtomicBoolean;
4040
import java.util.function.Function;
4141

42+
import org.neo4j.driver.AccessMode;
43+
import org.neo4j.driver.AuthToken;
44+
import org.neo4j.driver.Config;
45+
import org.neo4j.driver.Driver;
46+
import org.neo4j.driver.GraphDatabase;
47+
import org.neo4j.driver.Record;
48+
import org.neo4j.driver.Session;
49+
import org.neo4j.driver.StatementResult;
50+
import org.neo4j.driver.StatementRunner;
51+
import org.neo4j.driver.Transaction;
52+
import org.neo4j.driver.Values;
4253
import org.neo4j.driver.async.AsyncSession;
4354
import org.neo4j.driver.async.StatementResultCursor;
4455
import org.neo4j.driver.exceptions.ClientException;

driver/src/test/resources/acquire_endpoints.script

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
!: AUTO RESET
33
!: AUTO PULL_ALL
44

5+
S: SUCCESS {"server": "Neo4j/3.2.2"}
56
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}}
67
PULL_ALL
78
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/acquire_endpoints_v3.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
55
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
6-
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} {"mode": "r"}
6+
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} {}
77
PULL_ALL
88
S: SUCCESS {"fields": ["ttl", "servers"]}
99
RECORD [9223372036854775807, [{"addresses": ["127.0.0.1:9007","127.0.0.1:9008"],"role": "WRITE"}, {"addresses": ["127.0.0.1:9005","127.0.0.1:9006"], "role": "READ"},{"addresses": ["127.0.0.1:9001","127.0.0.1:9002","127.0.0.1:9003"], "role": "ROUTE"}]]

driver/src/test/resources/acquire_endpoints_v3_leader_killed.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}} {}
77
PULL_ALL
88
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/database_shutdown.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
!: BOLT 3
22

33
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
4-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
4+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
55
C: RESET
66
S: SUCCESS {}
77
C: BEGIN {"bookmarks": ["neo4j:bookmark:v1:tx0"]}

driver/src/test/resources/database_shutdown_at_commit.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: BEGIN {}
77
RUN "CREATE (n {name:'Bob'})" {} {}
88
PULL_ALL

driver/src/test/resources/discover_no_writers.script

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
!: AUTO INIT
21
!: AUTO RESET
32
!: AUTO PULL_ALL
43

4+
C: INIT "neo4j-java/dev" {"scheme": "none"}
5+
S: SUCCESS {"server": "Neo4j/3.2.2"}
56
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}}
67
PULL_ALL
78
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/discover_one_router.script

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
!: AUTO RESET
33
!: AUTO PULL_ALL
44

5+
S: SUCCESS {"server": "Neo4j/3.2.2"}
56
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}}
67
PULL_ALL
78
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/discover_servers.script

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
!: AUTO RESET
33
!: AUTO PULL_ALL
44

5+
S: SUCCESS {"server": "Neo4j/3.2.2"}
56
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}}
67
PULL_ALL
78
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/get_routing_table_with_context.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33
!: AUTO PULL_ALL
44

5-
S: SUCCESS {"server": "Neo4j/3.2.3"}
5+
S: SUCCESS {"server": "Neo4j/3.2.2"}
66
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {"policy": "my_policy", "region": "china"}}
77
PULL_ALL
88
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/hello_run_exit.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: RUN "MATCH (n) RETURN n.name" {} {}
77
PULL_ALL
88
S: SUCCESS {"fields": ["n.name"]}

driver/src/test/resources/hello_run_exit_read.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: RUN "MATCH (n) RETURN n.name" {} {"mode": "r"}
77
PULL_ALL
88
S: SUCCESS {"fields": ["n.name"]}

driver/src/test/resources/read_server_v3_read.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: RUN "MATCH (n) RETURN n.name" {} { "mode": "r" }
77
PULL_ALL
88
S: SUCCESS {"fields": ["n.name"]}

driver/src/test/resources/read_server_v3_read_tx.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: BEGIN { "mode": "r" }
77
S: SUCCESS {}
88
C: RUN "MATCH (n) RETURN n.name" {} {}

driver/src/test/resources/rediscover_using_initial_router.script

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
!: AUTO RUN "COMMIT" {}
66
!: AUTO RUN "ROLLBACK" {}
77

8+
S: SUCCESS {"server": "Neo4j/3.2.2"}
89
C: RUN "CALL dbms.cluster.routing.getRoutingTable({context})" {"context": {}}
910
PULL_ALL
1011
S: SUCCESS {"fields": ["ttl", "servers"]}

driver/src/test/resources/write_server_v3_write.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: RUN "CREATE (n {name:'Bob'})" {} {}
77
PULL_ALL
88
S: SUCCESS {}

driver/src/test/resources/write_server_v3_write_tx.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
!: AUTO RESET
33

44
C: HELLO {"scheme": "none", "user_agent": "neo4j-java/dev"}
5-
S: SUCCESS {"server": "Neo4j/9.9.9", "connection_id": "bolt-123456789"}
5+
S: SUCCESS {"server": "Neo4j/3.9.9", "connection_id": "bolt-123456789"}
66
C: BEGIN {}
77
S: SUCCESS {}
88
C: RUN "CREATE (n {name:'Bob'})" {} {}

0 commit comments

Comments
 (0)