Skip to content

Commit 6ff57ac

Browse files
committed
Merge branch '5.0' into micrometer-metrics
2 parents 40db7b6 + 6cbfe71 commit 6ff57ac

File tree

13 files changed

+72
-61
lines changed

13 files changed

+72
-61
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,17 +155,17 @@ void shouldExplainConnectionError()
155155
void shouldHandleFailureAtRunTime()
156156
{
157157
String label = UUID.randomUUID().toString(); // avoid clashes with other tests
158-
158+
String query = "CREATE CONSTRAINT ON (a:`" + label + "`) ASSERT a.name IS UNIQUE";
159159
// given
160160
Transaction tx = session.beginTransaction();
161-
tx.run( "CREATE CONSTRAINT ON (a:`" + label + "`) ASSERT a.name IS UNIQUE" );
161+
tx.run( query );
162162
tx.commit();
163163

164164
// and
165165
Transaction anotherTx = session.beginTransaction();
166166

167167
// then expect
168-
ClientException e = assertThrows( ClientException.class, () -> anotherTx.run( "CREATE INDEX ON :`" + label + "`(name)" ) );
168+
ClientException e = assertThrows( ClientException.class, () -> anotherTx.run( query ) );
169169
anotherTx.rollback();
170170
assertThat( e.getMessage(), containsString( label ) );
171171
assertThat( e.getMessage(), containsString( "name" ) );

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -770,9 +770,9 @@ void shouldThrowRunFailureImmediatelyAndCloseSuccessfully()
770770
{
771771
try ( Session session = neo4j.driver().session() )
772772
{
773-
ClientException e = assertThrows( ClientException.class, () -> session.run( "RETURN 10 / 0" ) );
773+
ClientException e = assertThrows( ClientException.class, () -> session.run( "RETURN 1 * \"x\"" ) );
774774

775-
assertThat( e.getMessage(), containsString( "/ by zero" ) );
775+
assertThat( e.getMessage(), containsString( "Type mismatch" ) );
776776
}
777777
}
778778

@@ -804,9 +804,10 @@ void shouldThrowRunFailureImmediatelyAfterMultipleSuccessfulRunsAndCloseSuccessf
804804
{
805805
session.run( "CREATE ()" );
806806
session.run( "CREATE ()" );
807-
ClientException e = assertThrows( ClientException.class, () -> session.run( "RETURN 10 / 0" ) );
808807

809-
assertThat( e.getMessage(), containsString( "/ by zero" ) );
808+
ClientException e = assertThrows( ClientException.class, () -> session.run( "RETURN 1 * \"x\"" ) );
809+
810+
assertThat( e.getMessage(), containsString( "Type mismatch" ) );
810811
}
811812
}
812813

@@ -817,8 +818,8 @@ void shouldThrowRunFailureImmediatelyAndAcceptSubsequentRun()
817818
{
818819
session.run( "CREATE ()" );
819820
session.run( "CREATE ()" );
820-
ClientException e = assertThrows( ClientException.class, () -> session.run( "RETURN 10 / 0" ) );
821-
assertThat( e.getMessage(), containsString( "/ by zero" ) );
821+
ClientException e = assertThrows( ClientException.class, () -> session.run( "RETURN 1 * \"x\"" ) );
822+
assertThat( e.getMessage(), containsString( "Type mismatch" ) );
822823
session.run( "CREATE ()" );
823824
}
824825
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@
2626
import java.util.List;
2727
import java.util.concurrent.TimeUnit;
2828

29-
import org.neo4j.driver.Session;
3029
import org.neo4j.driver.Result;
30+
import org.neo4j.driver.Session;
3131
import org.neo4j.driver.Value;
3232
import org.neo4j.driver.Values;
3333
import org.neo4j.driver.internal.util.EnabledOnNeo4jWith;
3434
import org.neo4j.driver.internal.util.Neo4jFeature;
3535
import org.neo4j.driver.summary.Notification;
3636
import org.neo4j.driver.summary.Plan;
3737
import org.neo4j.driver.summary.ProfiledPlan;
38-
import org.neo4j.driver.summary.ResultSummary;
3938
import org.neo4j.driver.summary.QueryType;
39+
import org.neo4j.driver.summary.ResultSummary;
4040
import org.neo4j.driver.util.DatabaseExtension;
4141
import org.neo4j.driver.util.ParallelizableIT;
4242

@@ -125,12 +125,12 @@ void shouldContainCorrectStatistics()
125125
assertTrue( session.run( "CREATE (n {magic: 42})" ).consume().counters().containsUpdates() );
126126
assertThat( session.run( "MATCH (n:ALabel) REMOVE n:ALabel " ).consume().counters().labelsRemoved(), equalTo( 1 ) );
127127

128-
assertThat( session.run( "CREATE INDEX ON :ALabel(prop)" ).consume().counters().indexesAdded(), equalTo( 1 ) );
129-
assertThat( session.run( "DROP INDEX ON :ALabel(prop)" ).consume().counters().indexesRemoved(), equalTo( 1 ) );
128+
assertThat( session.run( "CREATE INDEX superIndex FOR (n:ALabel) ON (n.prop)" ).consume().counters().indexesAdded(), equalTo( 1 ) );
129+
assertThat( session.run( "DROP INDEX superIndex" ).consume().counters().indexesRemoved(), equalTo( 1 ) );
130130

131-
assertThat( session.run( "CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE" )
131+
assertThat( session.run( "CREATE CONSTRAINT restrictedConstraint ON (book:Book) ASSERT book.isbn IS UNIQUE" )
132132
.consume().counters().constraintsAdded(), equalTo( 1 ) );
133-
assertThat( session.run( "DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE" )
133+
assertThat( session.run( "DROP CONSTRAINT restrictedConstraint" )
134134
.consume().counters().constraintsRemoved(), equalTo( 1 ) );
135135
}
136136

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -700,17 +700,17 @@ public CompletionStage<String> execute( AsyncTransaction tx )
700700
@Test
701701
void shouldNotPropagateRunFailureWhenClosed()
702702
{
703-
session.runAsync( "RETURN 10 / 0" );
703+
session.runAsync( "RETURN 1 * \"x\"" );
704704

705705
await( session.closeAsync() );
706706
}
707707

708708
@Test
709709
void shouldPropagateRunFailureImmediately()
710710
{
711-
ClientException e = assertThrows( ClientException.class, () -> await( session.runAsync( "RETURN 10 / 0" ) ) );
711+
ClientException e = assertThrows( ClientException.class, () -> await( session.runAsync( "RETURN 1 * \"x\"" ) ) );
712712

713-
assertThat( e.getMessage(), containsString( "/ by zero" ) );
713+
assertThat( e.getMessage(), containsString( "Type mismatch" ) );
714714
}
715715

716716
@Test

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ void shouldFailToCommitWhenQueriesFail()
664664

665665
tx.runAsync( "CREATE (:TestNode)" );
666666
tx.runAsync( "CREATE (:TestNode)" );
667-
tx.runAsync( "RETURN 10 / 0" );
667+
tx.runAsync( "RETURN 1 * \"x\"" );
668668
tx.runAsync( "CREATE (:TestNode)" );
669669

670670
ClientException e = assertThrows( ClientException.class, () -> await( tx.commitAsync() ) );
@@ -690,10 +690,10 @@ void shouldFailToCommitWhenBlockedRunFailed()
690690
{
691691
AsyncTransaction tx = await( session.beginTransactionAsync() );
692692

693-
ClientException runException = assertThrows( ClientException.class, () -> await( tx.runAsync( "RETURN 42 / 0" ) ) );
693+
ClientException runException = assertThrows( ClientException.class, () -> await( tx.runAsync( "RETURN 1 * \"x\"" ) ) );
694694

695695
ClientException commitException = assertThrows( ClientException.class, () -> await( tx.commitAsync() ) );
696-
assertThat( runException.getMessage(), containsString( "/ by zero" ) );
696+
assertThat( runException.getMessage(), containsString( "Type mismatch" ) );
697697
assertNoCircularReferences( commitException );
698698
assertThat( commitException.getMessage(), containsString( "Transaction can't be committed" ) );
699699
}
@@ -713,7 +713,7 @@ void shouldRollbackSuccessfullyWhenBlockedRunFailed()
713713
{
714714
AsyncTransaction tx = await( session.beginTransactionAsync() );
715715

716-
assertThrows( ClientException.class, () -> await( tx.runAsync( "RETURN 42 / 0" ) ) );
716+
assertThrows( ClientException.class, () -> await( tx.runAsync( "RETURN 1 * \"x\"" ) ) );
717717

718718
await( tx.rollbackAsync() );
719719
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
import java.util.List;
2727
import java.util.Map;
2828

29+
import org.neo4j.driver.Record;
30+
import org.neo4j.driver.Value;
31+
import org.neo4j.driver.Values;
2932
import org.neo4j.driver.internal.value.BooleanValue;
3033
import org.neo4j.driver.internal.value.FloatValue;
3134
import org.neo4j.driver.internal.value.IntegerValue;
@@ -36,9 +39,6 @@
3639
import org.neo4j.driver.internal.value.PathValue;
3740
import org.neo4j.driver.internal.value.RelationshipValue;
3841
import org.neo4j.driver.internal.value.StringValue;
39-
import org.neo4j.driver.Record;
40-
import org.neo4j.driver.Value;
41-
import org.neo4j.driver.Values;
4242
import org.neo4j.driver.types.Entity;
4343
import org.neo4j.driver.types.Node;
4444
import org.neo4j.driver.types.Path;
@@ -115,8 +115,8 @@ void shouldGetObjectFromRecord()
115115
Record record = createRecord();
116116

117117
// IntegerValue.asObject returns Long
118-
assertThat( record.get( "IntegerValue", (Object) 3 ), equalTo( (Object) new Long( 11 ) ) );
119-
assertThat( record.get( wrongKey, (Object) 3 ), equalTo( (Object) new Integer( 3 ) ) );
118+
assertThat( record.get( "IntegerValue", (Object) 3 ), equalTo( 11L ) );
119+
assertThat( record.get( wrongKey, (Object) 3 ), equalTo( 3 ) );
120120
}
121121

122122
@Test
@@ -125,8 +125,8 @@ void shouldGetNumberFromRecord()
125125
Record record = createRecord();
126126

127127
// IntegerValue.asNumber returns Long
128-
assertThat( record.get( "IntegerValue", (Number) 3 ), equalTo( (Object) new Long( 11 ) ) );
129-
assertThat( record.get( wrongKey, (Number) 3 ), equalTo( (Object) new Integer( 3 ) ) );
128+
assertThat( record.get( "IntegerValue", (Number) 3 ), equalTo( (Object) 11L ) );
129+
assertThat( record.get( wrongKey, (Number) 3 ), equalTo( (Object) 3 ) );
130130
}
131131

132132
@Test

driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import static org.junit.jupiter.api.Assertions.assertTrue;
3838
import static org.mockito.Mockito.mock;
3939
import static org.mockito.Mockito.verify;
40-
import static org.mockito.Mockito.verifyZeroInteractions;
40+
import static org.mockito.Mockito.verifyNoInteractions;
4141
import static org.mockito.Mockito.when;
4242
import static org.neo4j.driver.internal.BoltServerAddress.LOCAL_DEFAULT;
4343
import static org.neo4j.driver.internal.async.connection.ChannelAttributes.authorizationStateListener;
@@ -57,7 +57,7 @@ void shouldDoNothingWhenRetainOnEmptyPool()
5757

5858
pool.retainAll( singleton( LOCAL_DEFAULT ) );
5959

60-
verifyZeroInteractions( nettyChannelTracker );
60+
verifyNoInteractions( nettyChannelTracker );
6161
}
6262

6363
@Test

driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LeastConnectedLoadBalancingStrategyTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import static org.mockito.Mockito.mock;
3939
import static org.mockito.Mockito.verify;
4040
import static org.mockito.Mockito.when;
41-
import static org.mockito.MockitoAnnotations.initMocks;
41+
import static org.mockito.MockitoAnnotations.openMocks;
4242
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
4343
import static org.neo4j.driver.internal.util.ClusterCompositionUtil.A;
4444

@@ -51,7 +51,7 @@ class LeastConnectedLoadBalancingStrategyTest
5151
@BeforeEach
5252
void setUp()
5353
{
54-
initMocks( this );
54+
openMocks( this );
5555
strategy = new LeastConnectedLoadBalancingStrategy( connectionPool, DEV_NULL_LOGGING );
5656
}
5757

driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancerTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,11 @@ void expectsCompetedDatabaseNameAfterRoutingTableRegistry( boolean completed ) t
385385
new LoadBalancer( connectionPool, routingTables, rediscovery, new LeastConnectedLoadBalancingStrategy( connectionPool, DEV_NULL_LOGGING ),
386386
GlobalEventExecutor.INSTANCE, DEV_NULL_LOGGING );
387387
ConnectionContext context = mock( ConnectionContext.class );
388-
CompletableFuture<DatabaseName> databaseNameFuture =
389-
spy( completed ? CompletableFuture.completedFuture( DatabaseNameUtil.systemDatabase() ) : new CompletableFuture<>() );
388+
CompletableFuture<DatabaseName> databaseNameFuture = spy( new CompletableFuture<>() );
389+
if ( completed )
390+
{
391+
databaseNameFuture.complete( DatabaseNameUtil.systemDatabase() );
392+
}
390393
when( context.databaseNameFuture() ).thenReturn( databaseNameFuture );
391394
when( context.mode() ).thenReturn( WRITE );
392395

driver/src/test/java/org/neo4j/driver/internal/handlers/RoutingResponseHandlerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,20 @@
2323

2424
import java.util.concurrent.CompletionException;
2525

26-
import org.neo4j.driver.internal.RoutingErrorHandler;
27-
import org.neo4j.driver.internal.spi.ResponseHandler;
2826
import org.neo4j.driver.AccessMode;
2927
import org.neo4j.driver.exceptions.ClientException;
3028
import org.neo4j.driver.exceptions.ServiceUnavailableException;
3129
import org.neo4j.driver.exceptions.SessionExpiredException;
3230
import org.neo4j.driver.exceptions.TransientException;
31+
import org.neo4j.driver.internal.RoutingErrorHandler;
32+
import org.neo4j.driver.internal.spi.ResponseHandler;
3333

3434
import static org.hamcrest.Matchers.instanceOf;
3535
import static org.hamcrest.junit.MatcherAssert.assertThat;
3636
import static org.junit.jupiter.api.Assertions.assertEquals;
3737
import static org.mockito.Mockito.mock;
3838
import static org.mockito.Mockito.verify;
39-
import static org.mockito.Mockito.verifyZeroInteractions;
39+
import static org.mockito.Mockito.verifyNoInteractions;
4040
import static org.neo4j.driver.internal.BoltServerAddress.LOCAL_DEFAULT;
4141

4242
class RoutingResponseHandlerTest
@@ -50,7 +50,7 @@ void shouldUnwrapCompletionException()
5050
Throwable handledError = handle( new CompletionException( error ), errorHandler );
5151

5252
assertEquals( error, handledError );
53-
verifyZeroInteractions( errorHandler );
53+
verifyNoInteractions( errorHandler );
5454
}
5555

5656
@Test
@@ -86,7 +86,7 @@ void shouldHandleTransientException()
8686
Throwable handledError = handle( error, errorHandler );
8787

8888
assertEquals( error, handledError );
89-
verifyZeroInteractions( errorHandler );
89+
verifyNoInteractions( errorHandler );
9090
}
9191

9292
@Test
@@ -122,7 +122,7 @@ void shouldHandleClientException()
122122
Throwable handledError = handle( error, errorHandler, AccessMode.READ );
123123

124124
assertEquals( error, handledError );
125-
verifyZeroInteractions( errorHandler );
125+
verifyNoInteractions( errorHandler );
126126
}
127127

128128
@Test
@@ -158,7 +158,7 @@ private void testWriteFailureWithReadAccessMode( String code )
158158

159159
assertThat( handledError, instanceOf( ClientException.class ) );
160160
assertEquals( "Write queries cannot be performed in READ access mode.", handledError.getMessage() );
161-
verifyZeroInteractions( errorHandler );
161+
verifyNoInteractions( errorHandler );
162162
}
163163

164164
private void testWriteFailureWithWriteAccessMode( String code )

driver/src/test/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogicTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
import static org.mockito.Mockito.never;
7676
import static org.mockito.Mockito.times;
7777
import static org.mockito.Mockito.verify;
78-
import static org.mockito.Mockito.verifyZeroInteractions;
78+
import static org.mockito.Mockito.verifyNoInteractions;
7979
import static org.mockito.Mockito.when;
8080
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
8181
import static org.neo4j.driver.internal.util.Futures.failedFuture;
@@ -1090,7 +1090,7 @@ void nothingIsLoggedOnFatalFailure()
10901090
throw new RuntimeException( "Fatal blocking" );
10911091
} ) );
10921092
assertEquals( "Fatal blocking", error.getMessage() );
1093-
verifyZeroInteractions( logger );
1093+
verifyNoInteractions( logger );
10941094
}
10951095

10961096
@Test
@@ -1106,7 +1106,7 @@ void nothingIsLoggedOnFatalFailureAsync()
11061106
await( logic.retryAsync( () -> failedFuture( new RuntimeException( "Fatal async" ) ) ) ) );
11071107

11081108
assertEquals( "Fatal async", error.getMessage() );
1109-
verifyZeroInteractions( logger );
1109+
verifyNoInteractions( logger );
11101110
}
11111111

11121112
@Test
@@ -1122,7 +1122,7 @@ void nothingIsLoggedOnFatalFailureRx()
11221122
RuntimeException error = assertThrows( RuntimeException.class, () -> await( retryRx ) );
11231123

11241124
assertEquals( "Fatal rx", error.getMessage() );
1125-
verifyZeroInteractions( logger );
1125+
verifyNoInteractions( logger );
11261126
}
11271127

11281128
@Test

examples/src/main/java/org/neo4j/docs/driver/DriverIntroductionExample.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,21 @@
2020

2121
// tag::driver-introduction-example-import[]
2222

23-
import org.neo4j.driver.*;
24-
import org.neo4j.driver.exceptions.Neo4jException;
25-
2623
import java.util.Collections;
2724
import java.util.HashMap;
2825
import java.util.Map;
2926
import java.util.logging.Level;
3027
import java.util.logging.Logger;
3128

32-
import static org.neo4j.driver.Config.TrustStrategy.trustAllCertificates;
29+
import org.neo4j.driver.AuthTokens;
30+
import org.neo4j.driver.Config;
31+
import org.neo4j.driver.Driver;
32+
import org.neo4j.driver.GraphDatabase;
33+
import org.neo4j.driver.Logging;
34+
import org.neo4j.driver.Record;
35+
import org.neo4j.driver.Result;
36+
import org.neo4j.driver.Session;
37+
import org.neo4j.driver.exceptions.Neo4jException;
3338
// end::driver-introduction-example-import[]
3439

3540
// tag::driver-introduction-example[]
@@ -61,17 +66,19 @@ public void createFriendship(final String person1Name, final String person2Name,
6166
params.put("person2_name", person2Name);
6267
params.put("knows_from", knowsFrom );
6368

64-
try (Session session = driver.session()) {
69+
try (Session session = driver.session())
70+
{
6571
// Write transactions allow the driver to handle retries and transient errors
66-
Record record = session.writeTransaction(tx -> {
67-
Result result = tx.run(createFriendshipQuery, params);
68-
return result.single();
69-
});
70-
System.out.println(String.format("Created friendship between: %s, %s from %s",
71-
record.get("p1").get("name").asString(),
72-
record.get("p2").get("name").asString(),
73-
record.get("k").get("from").asString()));
74-
// You should capture any errors along with the query and data for traceability
72+
Record record = session.writeTransaction( tx ->
73+
{
74+
Result result = tx.run( createFriendshipQuery, params );
75+
return result.single();
76+
} );
77+
System.out.println( String.format( "Created friendship between: %s, %s from %s",
78+
record.get( "p1" ).get( "name" ).asString(),
79+
record.get( "p2" ).get( "name" ).asString(),
80+
record.get( "k" ).get( "from" ).asString() ) );
81+
// You should capture any errors along with the query and data for traceability
7582
} catch (Neo4jException ex) {
7683
LOGGER.log(Level.SEVERE, createFriendshipQuery + " raised an exception", ex);
7784
throw ex;

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<rxjava.version>2.2.21</rxjava.version>
4343
<slf4j-api.version>1.7.35</slf4j-api.version>
4444
<hamcrest-junit.version>2.0.0.0</hamcrest-junit.version>
45-
<mockito-core.version>2.28.2</mockito-core.version>
45+
<mockito-core.version>4.3.1</mockito-core.version>
4646
<junit.version>5.8.2</junit.version>
4747
<jarchivelib.version>1.2.0</jarchivelib.version>
4848
<bouncycastle-jdk15on.version>1.70</bouncycastle-jdk15on.version>

0 commit comments

Comments
 (0)