Skip to content

Commit f9cbbbc

Browse files
author
Zhen Li
committed
Upgrade default Protocol Version to V4 and fix test failure due to the upgrade
1 parent 73a786b commit f9cbbbc

File tree

7 files changed

+49
-53
lines changed

7 files changed

+49
-53
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import static org.mockito.Mockito.verify;
4545
import static org.mockito.Mockito.when;
4646
import static org.neo4j.driver.v1.AccessMode.READ;
47+
import static org.neo4j.driver.v1.util.TestUtil.DEFAULT_TEST_PROTOCOL;
4748

4849
class LeakLoggingNetworkSessionTest
4950
{
@@ -107,7 +108,7 @@ private static ConnectionProvider connectionProviderMock( boolean openConnection
107108

108109
private static Connection connectionMock( boolean open )
109110
{
110-
Connection connection = TestUtil.connectionMock();
111+
Connection connection = TestUtil.connectionMock( DEFAULT_TEST_PROTOCOL );
111112
when( connection.isOpen() ).thenReturn( open );
112113
return connection;
113114
}

driver/src/test/java/org/neo4j/driver/internal/messaging/v1/BoltProtocolV1Test.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
import static org.mockito.Mockito.when;
7979
import static org.neo4j.driver.internal.util.Futures.blockingGet;
8080
import static org.neo4j.driver.v1.Values.value;
81-
import static org.neo4j.driver.v1.util.TestUtil.DEFAULT_TEST_PROTOCOL;
8281
import static org.neo4j.driver.v1.util.TestUtil.await;
8382
import static org.neo4j.driver.v1.util.TestUtil.connectionMock;
8483

@@ -149,7 +148,7 @@ void shouldFailToInitializeChannelWhenErrorIsReceived()
149148
@Test
150149
void shouldBeginTransactionWithoutBookmark()
151150
{
152-
Connection connection = connectionMock();
151+
Connection connection = connectionMock( protocol );
153152

154153
CompletionStage<Void> stage = protocol.beginTransaction( connection, Bookmarks.empty(), TransactionConfig.empty() );
155154

@@ -163,7 +162,7 @@ void shouldBeginTransactionWithoutBookmark()
163162
@Test
164163
void shouldBeginTransactionWithBookmarks()
165164
{
166-
Connection connection = connectionMock();
165+
Connection connection = connectionMock( protocol );
167166
Bookmarks bookmarks = Bookmarks.from( "neo4j:bookmark:v1:tx100" );
168167

169168
CompletionStage<Void> stage = protocol.beginTransaction( connection, bookmarks, TransactionConfig.empty() );
@@ -181,7 +180,7 @@ void shouldCommitTransaction()
181180
String bookmarkString = "neo4j:bookmark:v1:tx1909";
182181

183182
Connection connection = mock( Connection.class );
184-
when( connection.protocol() ).thenReturn( DEFAULT_TEST_PROTOCOL );
183+
when( connection.protocol() ).thenReturn( protocol );
185184
doAnswer( invocation ->
186185
{
187186
ResponseHandler commitHandler = invocation.getArgument( 3 );
@@ -201,7 +200,7 @@ void shouldCommitTransaction()
201200
@Test
202201
void shouldRollbackTransaction()
203202
{
204-
Connection connection = connectionMock();
203+
Connection connection = connectionMock( protocol );
205204

206205
CompletionStage<Void> stage = protocol.rollbackTransaction( connection );
207206

@@ -256,7 +255,7 @@ void shouldNotSupportTransactionConfigInBeginTransaction()
256255
.withMetadata( singletonMap( "key", "value" ) )
257256
.build();
258257

259-
CompletionStage<Void> txStage = protocol.beginTransaction( connectionMock(), Bookmarks.empty(), config );
258+
CompletionStage<Void> txStage = protocol.beginTransaction( connectionMock( protocol ), Bookmarks.empty(), config );
260259

261260
ClientException e = assertThrows( ClientException.class, () -> await( txStage ) );
262261
assertThat( e.getMessage(), startsWith( "Driver is connected to the database that does not support transaction configuration" ) );
@@ -271,7 +270,7 @@ void shouldNotSupportTransactionConfigForAutoCommitTransactions()
271270
.build();
272271

273272
ClientException e = assertThrows( ClientException.class,
274-
() -> protocol.runInAutoCommitTransaction( connectionMock(), new Statement( "RETURN 1" ), BookmarksHolder.NO_OP, config, true ) );
273+
() -> protocol.runInAutoCommitTransaction( connectionMock( protocol ), new Statement( "RETURN 1" ), BookmarksHolder.NO_OP, config, true ) );
275274
assertThat( e.getMessage(), startsWith( "Driver is connected to the database that does not support transaction configuration" ) );
276275
}
277276

driver/src/test/java/org/neo4j/driver/internal/ExplicitTransactionTest.java renamed to driver/src/test/java/org/neo4j/driver/internal/messaging/v2/ExplicitTransactionTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,24 @@
1616
* See the License for the specific language governing permissions and
1717
* limitations under the License.
1818
*/
19-
package org.neo4j.driver.internal;
19+
package org.neo4j.driver.internal.messaging.v2;
2020

2121
import org.junit.jupiter.api.Test;
2222
import org.mockito.InOrder;
2323

2424
import java.util.function.Consumer;
2525

26+
import org.neo4j.driver.internal.Bookmarks;
27+
import org.neo4j.driver.internal.ExplicitTransaction;
28+
import org.neo4j.driver.internal.NetworkSession;
2629
import org.neo4j.driver.internal.messaging.request.PullAllMessage;
2730
import org.neo4j.driver.internal.messaging.request.RunMessage;
2831
import org.neo4j.driver.internal.spi.Connection;
2932
import org.neo4j.driver.internal.spi.ResponseHandler;
3033
import org.neo4j.driver.v1.Transaction;
3134
import org.neo4j.driver.v1.TransactionConfig;
3235
import org.neo4j.driver.v1.exceptions.ClientException;
36+
import org.neo4j.driver.v1.util.TestUtil;
3337

3438
import static java.util.Collections.emptyMap;
3539
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -45,9 +49,7 @@
4549
import static org.mockito.Mockito.never;
4650
import static org.mockito.Mockito.verify;
4751
import static org.mockito.Mockito.when;
48-
import static org.neo4j.driver.v1.util.TestUtil.DEFAULT_TEST_PROTOCOL;
4952
import static org.neo4j.driver.v1.util.TestUtil.await;
50-
import static org.neo4j.driver.v1.util.TestUtil.connectionMock;
5153
import static org.neo4j.driver.v1.util.TestUtil.runMessageWithStatementMatcher;
5254

5355
class ExplicitTransactionTest
@@ -273,10 +275,15 @@ private static ExplicitTransaction beginTx( Connection connection, NetworkSessio
273275
return await( tx.beginAsync( initialBookmarks, TransactionConfig.empty() ) );
274276
}
275277

278+
static Connection connectionMock()
279+
{
280+
return TestUtil.connectionMock( BoltProtocolV2.INSTANCE );
281+
}
282+
276283
private static Connection connectionWithBegin( Consumer<ResponseHandler> beginBehaviour )
277284
{
278285
Connection connection = mock( Connection.class );
279-
when( connection.protocol() ).thenReturn( DEFAULT_TEST_PROTOCOL );
286+
when( connection.protocol() ).thenReturn( BoltProtocolV2.INSTANCE );
280287

281288
doAnswer( invocation ->
282289
{

driver/src/test/java/org/neo4j/driver/internal/NetworkSessionTest.java renamed to driver/src/test/java/org/neo4j/driver/internal/messaging/v2/NetworkSessionTest.java

Lines changed: 9 additions & 7 deletions
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.internal;
19+
package org.neo4j.driver.internal.messaging.v2;
2020

2121
import org.junit.jupiter.api.BeforeEach;
2222
import org.junit.jupiter.api.Test;
@@ -27,14 +27,17 @@
2727

2828
import java.util.Map;
2929

30+
import org.neo4j.driver.internal.BoltServerAddress;
31+
import org.neo4j.driver.internal.Bookmarks;
32+
import org.neo4j.driver.internal.NetworkSession;
3033
import org.neo4j.driver.internal.messaging.BoltProtocol;
3134
import org.neo4j.driver.internal.messaging.request.PullAllMessage;
3235
import org.neo4j.driver.internal.messaging.request.RunMessage;
33-
import org.neo4j.driver.internal.util.FixedRetryLogic;
3436
import org.neo4j.driver.internal.retry.RetryLogic;
3537
import org.neo4j.driver.internal.spi.Connection;
3638
import org.neo4j.driver.internal.spi.ConnectionProvider;
3739
import org.neo4j.driver.internal.spi.ResponseHandler;
40+
import org.neo4j.driver.internal.util.FixedRetryLogic;
3841
import org.neo4j.driver.internal.util.ServerVersion;
3942
import org.neo4j.driver.internal.util.Supplier;
4043
import org.neo4j.driver.v1.AccessMode;
@@ -72,13 +75,12 @@
7275
import static org.mockito.Mockito.verify;
7376
import static org.mockito.Mockito.when;
7477
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
78+
import static org.neo4j.driver.internal.messaging.v2.ExplicitTransactionTest.connectionMock;
7579
import static org.neo4j.driver.internal.util.Futures.completedWithNull;
7680
import static org.neo4j.driver.internal.util.Futures.failedFuture;
7781
import static org.neo4j.driver.v1.AccessMode.READ;
7882
import static org.neo4j.driver.v1.AccessMode.WRITE;
79-
import static org.neo4j.driver.v1.util.TestUtil.DEFAULT_TEST_PROTOCOL;
8083
import static org.neo4j.driver.v1.util.TestUtil.await;
81-
import static org.neo4j.driver.v1.util.TestUtil.connectionMock;
8284
import static org.neo4j.driver.v1.util.TestUtil.runMessageWithStatementMatcher;
8385

8486
class NetworkSessionTest
@@ -95,7 +97,7 @@ void setUp()
9597
when( connection.reset() ).thenReturn( completedWithNull() );
9698
when( connection.serverAddress() ).thenReturn( BoltServerAddress.LOCAL_DEFAULT );
9799
when( connection.serverVersion() ).thenReturn( ServerVersion.v3_2_0 );
98-
when( connection.protocol() ).thenReturn( DEFAULT_TEST_PROTOCOL );
100+
when( connection.protocol() ).thenReturn( BoltProtocolV2.INSTANCE );
99101
connectionProvider = mock( ConnectionProvider.class );
100102
when( connectionProvider.acquireConnection( any( AccessMode.class ) ) )
101103
.thenReturn( completedFuture( connection ) );
@@ -247,7 +249,7 @@ void updatesBookmarkWhenTxIsClosed()
247249
{
248250
Bookmarks bookmarkAfterCommit = Bookmarks.from( "TheBookmark" );
249251

250-
BoltProtocol protocol = spy( DEFAULT_TEST_PROTOCOL );
252+
BoltProtocol protocol = spy( BoltProtocolV2.INSTANCE );
251253
doReturn( completedFuture( bookmarkAfterCommit ) ).when( protocol ).commitTransaction( any( Connection.class ) );
252254

253255
when( connection.protocol() ).thenReturn( protocol );
@@ -317,7 +319,7 @@ void bookmarkIsPropagatedBetweenTransactions()
317319

318320
NetworkSession session = newSession( connectionProvider, READ );
319321

320-
BoltProtocol protocol = spy( DEFAULT_TEST_PROTOCOL );
322+
BoltProtocol protocol = spy( BoltProtocolV2.INSTANCE );
321323
doReturn( completedFuture( bookmarks1 ), completedFuture( bookmarks2 ) ).when( protocol ).commitTransaction( any( Connection.class ) );
322324

323325
when( connection.protocol() ).thenReturn( protocol );

driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@
5656
import org.neo4j.driver.internal.messaging.request.RunWithMetadataMessage;
5757
import org.neo4j.driver.internal.spi.Connection;
5858
import org.neo4j.driver.internal.spi.ResponseHandler;
59-
import org.neo4j.driver.v1.AccessMode;
6059
import org.neo4j.driver.reactive.internal.cursor.InternalStatementResultCursor;
60+
import org.neo4j.driver.v1.AccessMode;
6161
import org.neo4j.driver.v1.Logging;
6262
import org.neo4j.driver.v1.Statement;
6363
import org.neo4j.driver.v1.TransactionConfig;
@@ -83,7 +83,6 @@
8383
import static org.neo4j.driver.internal.util.ServerVersion.v3_5_0;
8484
import static org.neo4j.driver.v1.AccessMode.WRITE;
8585
import static org.neo4j.driver.v1.Values.value;
86-
import static org.neo4j.driver.v1.util.TestUtil.DEFAULT_TEST_PROTOCOL;
8786
import static org.neo4j.driver.v1.util.TestUtil.await;
8887
import static org.neo4j.driver.v1.util.TestUtil.connectionMock;
8988

@@ -183,7 +182,7 @@ void shouldFailToInitializeChannelWhenErrorIsReceived()
183182
@Test
184183
void shouldBeginTransactionWithoutBookmark()
185184
{
186-
Connection connection = connectionMock();
185+
Connection connection = connectionMock( protocol );
187186

188187
CompletionStage<Void> stage = protocol.beginTransaction( connection, Bookmarks.empty(), TransactionConfig.empty() );
189188

@@ -194,7 +193,7 @@ void shouldBeginTransactionWithoutBookmark()
194193
@Test
195194
void shouldBeginTransactionWithBookmarks()
196195
{
197-
Connection connection = connectionMock();
196+
Connection connection = connectionMock( protocol );
198197
Bookmarks bookmarks = Bookmarks.from( "neo4j:bookmark:v1:tx100" );
199198

200199
CompletionStage<Void> stage = protocol.beginTransaction( connection, bookmarks, TransactionConfig.empty() );
@@ -206,7 +205,7 @@ void shouldBeginTransactionWithBookmarks()
206205
@Test
207206
void shouldBeginTransactionWithConfig()
208207
{
209-
Connection connection = connectionMock();
208+
Connection connection = connectionMock( protocol );
210209

211210
CompletionStage<Void> stage = protocol.beginTransaction( connection, Bookmarks.empty(), txConfig );
212211

@@ -217,7 +216,7 @@ void shouldBeginTransactionWithConfig()
217216
@Test
218217
void shouldBeginTransactionWithBookmarksAndConfig()
219218
{
220-
Connection connection = connectionMock();
219+
Connection connection = connectionMock( protocol );
221220
Bookmarks bookmarks = Bookmarks.from( "neo4j:bookmark:v1:tx4242" );
222221

223222
CompletionStage<Void> stage = protocol.beginTransaction( connection, bookmarks, txConfig );
@@ -231,8 +230,8 @@ void shouldCommitTransaction()
231230
{
232231
String bookmarkString = "neo4j:bookmark:v1:tx4242";
233232

234-
Connection connection = connectionMock();
235-
when( connection.protocol() ).thenReturn( DEFAULT_TEST_PROTOCOL );
233+
Connection connection = connectionMock( protocol );
234+
when( connection.protocol() ).thenReturn( protocol );
236235
doAnswer( invocation ->
237236
{
238237
ResponseHandler commitHandler = invocation.getArgument( 1 );
@@ -249,7 +248,7 @@ void shouldCommitTransaction()
249248
@Test
250249
void shouldRollbackTransaction()
251250
{
252-
Connection connection = connectionMock();
251+
Connection connection = connectionMock( protocol );
253252

254253
CompletionStage<Void> stage = protocol.rollbackTransaction( connection );
255254

@@ -310,33 +309,20 @@ void shouldRunInExplicitTransactionWithoutWaitingForRunResponse( AccessMode mode
310309
@EnumSource( AccessMode.class )
311310
void shouldRunInExplicitTransactionAndWaitForSuccessRunResponse( AccessMode mode ) throws Exception
312311
{
313-
Connection connection = connectionMock( mode );
314-
315-
CompletableFuture<InternalStatementResultCursor> cursorFuture =
316-
protocol.runInExplicitTransaction( connection, STATEMENT, mock( ExplicitTransaction.class ), true ).asyncResult().toCompletableFuture();
317-
assertFalse( cursorFuture.isDone() );
318-
319-
ResponseHandler runResponseHandler = verifyRunInvoked( connection, false, Bookmarks.empty(), TransactionConfig.empty(), mode ).runHandler;
320-
321-
runResponseHandler.onSuccess( emptyMap() );
322-
323-
assertTrue( cursorFuture.isDone() );
324-
assertNotNull( cursorFuture.get() );
325312
testRunInExplicitTransactionAndWaitForRunResponse( true, mode );
326313
}
327314

328315
@ParameterizedTest
329316
@EnumSource( AccessMode.class )
330317
void shouldRunInExplicitTransactionAndWaitForFailureRunResponse( AccessMode mode ) throws Exception
331318
{
332-
333319
testRunInExplicitTransactionAndWaitForRunResponse( false, mode );
334320
}
335321

336322
protected void testRunInExplicitTransactionAndWaitForRunResponse( boolean success, AccessMode mode ) throws Exception
337323
{
338324
// Given
339-
Connection connection = connectionMock( mode );
325+
Connection connection = connectionMock( mode, protocol );
340326

341327
CompletableFuture<InternalStatementResultCursor> cursorFuture =
342328
protocol.runInExplicitTransaction( connection, STATEMENT, mock( ExplicitTransaction.class ), true ).asyncResult().toCompletableFuture();
@@ -361,7 +347,7 @@ protected void testRunInExplicitTransactionAndWaitForRunResponse( boolean succes
361347

362348
protected void testRunWithoutWaitingForRunResponse( boolean autoCommitTx, TransactionConfig config, AccessMode mode ) throws Exception
363349
{
364-
Connection connection = connectionMock( mode );
350+
Connection connection = connectionMock( mode, protocol );
365351
Bookmarks initialBookmarks = Bookmarks.from( "neo4j:bookmark:v1:tx987" );
366352

367353
CompletionStage<InternalStatementResultCursor> cursorStage;
@@ -391,7 +377,7 @@ protected void testRunWithoutWaitingForRunResponse( boolean autoCommitTx, Transa
391377

392378
protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Bookmarks bookmarks, TransactionConfig config, AccessMode mode ) throws Exception
393379
{
394-
Connection connection = connectionMock( mode );
380+
Connection connection = connectionMock( mode, protocol );
395381
BookmarksHolder bookmarksHolder = new SimpleBookmarksHolder( bookmarks );
396382

397383
CompletableFuture<InternalStatementResultCursor> cursorFuture =
@@ -411,7 +397,7 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Bookmarks
411397

412398
protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Bookmarks bookmarks, TransactionConfig config, AccessMode mode ) throws Exception
413399
{
414-
Connection connection = connectionMock( mode );
400+
Connection connection = connectionMock( mode, protocol );
415401
BookmarksHolder bookmarksHolder = new SimpleBookmarksHolder( bookmarks );
416402

417403
CompletableFuture<InternalStatementResultCursor> cursorFuture =

driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ protected Class<? extends MessageFormat> expectedMessageFormatType()
7070
protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Bookmarks bookmarks, TransactionConfig config, AccessMode mode ) throws Exception
7171
{
7272
// Given
73-
Connection connection = connectionMock( mode );
73+
Connection connection = connectionMock( mode, protocol );
7474
BookmarksHolder bookmarksHolder = new SimpleBookmarksHolder( bookmarks );
7575

7676
CompletableFuture<InternalStatementResultCursor> cursorFuture =
@@ -92,7 +92,7 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Bookmarks book
9292
protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Bookmarks bookmarks, TransactionConfig config, AccessMode mode ) throws Exception
9393
{
9494
// Given
95-
Connection connection = connectionMock( mode );
95+
Connection connection = connectionMock( mode, protocol );
9696
BookmarksHolder bookmarksHolder = new SimpleBookmarksHolder( bookmarks );
9797

9898
CompletableFuture<InternalStatementResultCursor> cursorFuture =
@@ -110,10 +110,11 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Bookmarks
110110
assertNotNull( cursorFuture.get() );
111111
}
112112

113+
@Override
113114
protected void testRunInExplicitTransactionAndWaitForRunResponse( boolean success, AccessMode mode ) throws Exception
114115
{
115116
// Given
116-
Connection connection = connectionMock( mode );
117+
Connection connection = connectionMock( mode, protocol );
117118

118119
CompletableFuture<InternalStatementResultCursor> cursorFuture =
119120
protocol.runInExplicitTransaction( connection, STATEMENT, mock( ExplicitTransaction.class ), true ).asyncResult().toCompletableFuture();
@@ -140,7 +141,7 @@ protected void testRunInExplicitTransactionAndWaitForRunResponse( boolean succes
140141
protected void testRunWithoutWaitingForRunResponse( boolean autoCommitTx, TransactionConfig config, AccessMode mode ) throws Exception
141142
{
142143
// Given
143-
Connection connection = connectionMock( mode );
144+
Connection connection = connectionMock( mode, protocol );
144145
Bookmarks initialBookmarks = Bookmarks.from( "neo4j:bookmark:v1:tx987" );
145146

146147
CompletionStage<InternalStatementResultCursor> cursorStage;

driver/src/test/java/org/neo4j/driver/v1/util/TestUtil.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,17 @@ public static String cleanDb( Driver driver )
214214
}
215215
}
216216

217-
public static Connection connectionMock()
217+
public static Connection connectionMock( BoltProtocol protocol )
218218
{
219-
return connectionMock( WRITE );
219+
return connectionMock( WRITE, protocol );
220220
}
221221

222-
public static Connection connectionMock( AccessMode mode )
222+
public static Connection connectionMock( AccessMode mode, BoltProtocol protocol )
223223
{
224224
Connection connection = mock( Connection.class );
225225
when( connection.serverAddress() ).thenReturn( BoltServerAddress.LOCAL_DEFAULT );
226226
when( connection.serverVersion() ).thenReturn( ServerVersion.vInDev );
227-
when( connection.protocol() ).thenReturn( DEFAULT_TEST_PROTOCOL );
227+
when( connection.protocol() ).thenReturn( protocol );
228228
when( connection.mode() ).thenReturn( mode );
229229
setupSuccessfulPullAll( connection, "COMMIT" );
230230
setupSuccessfulPullAll( connection, "ROLLBACK" );

0 commit comments

Comments
 (0)