diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java b/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java index e6abf8ffc2..3c306d6802 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/NetworkSession.java @@ -52,6 +52,7 @@ public class NetworkSession { private final NetworkSessionConnectionContext connectionContext; private final AccessMode mode; private final RetryLogic retryLogic; + private final Logging logging; protected final Logger log; private final BookmarkHolder bookmarkHolder; @@ -74,6 +75,7 @@ public NetworkSession( this.connectionProvider = connectionProvider; this.mode = mode; this.retryLogic = retryLogic; + this.logging = logging; this.log = new PrefixedLogger("[" + hashCode() + "]", logging.getLog(getClass())); this.bookmarkHolder = bookmarkHolder; CompletableFuture databaseNameFuture = databaseName @@ -116,7 +118,7 @@ public CompletionStage beginTransactionAsync(AccessMode mo .thenApply(connection -> ImpersonationUtil.ensureImpersonationSupport(connection, connection.impersonatedUser())) .thenCompose(connection -> { - UnmanagedTransaction tx = new UnmanagedTransaction(connection, bookmarkHolder, fetchSize); + UnmanagedTransaction tx = new UnmanagedTransaction(connection, bookmarkHolder, fetchSize, logging); return tx.beginAsync(bookmarkHolder.getBookmark(), config); }); @@ -226,7 +228,8 @@ private CompletionStage buildResultCursorFactory(Query quer try { ResultCursorFactory factory = connection .protocol() - .runInAutoCommitTransaction(connection, query, bookmarkHolder, config, fetchSize); + .runInAutoCommitTransaction( + connection, query, bookmarkHolder, config, fetchSize, logging); return completedFuture(factory); } catch (Throwable e) { return Futures.failedFuture(e); diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/UnmanagedTransaction.java b/driver/src/main/java/org/neo4j/driver/internal/async/UnmanagedTransaction.java index 6d64286398..24bafffe01 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/UnmanagedTransaction.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/UnmanagedTransaction.java @@ -35,6 +35,7 @@ import java.util.function.BiFunction; import java.util.function.Function; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Session; import org.neo4j.driver.TransactionConfig; @@ -91,34 +92,41 @@ private enum State { private CompletableFuture commitFuture; private CompletableFuture rollbackFuture; private Throwable causeOfTermination; + private final Logging logging; - public UnmanagedTransaction(Connection connection, BookmarkHolder bookmarkHolder, long fetchSize) { - this(connection, bookmarkHolder, fetchSize, new ResultCursorsHolder()); + public UnmanagedTransaction(Connection connection, BookmarkHolder bookmarkHolder, long fetchSize, Logging logging) { + this(connection, bookmarkHolder, fetchSize, new ResultCursorsHolder(), logging); } protected UnmanagedTransaction( - Connection connection, BookmarkHolder bookmarkHolder, long fetchSize, ResultCursorsHolder resultCursors) { + Connection connection, + BookmarkHolder bookmarkHolder, + long fetchSize, + ResultCursorsHolder resultCursors, + Logging logging) { this.connection = connection; this.protocol = connection.protocol(); this.bookmarkHolder = bookmarkHolder; this.resultCursors = resultCursors; this.fetchSize = fetchSize; + this.logging = logging; } public CompletionStage beginAsync(Bookmark initialBookmark, TransactionConfig config) { - return protocol.beginTransaction(connection, initialBookmark, config).handle((ignore, beginError) -> { - if (beginError != null) { - if (beginError instanceof AuthorizationExpiredException) { - connection.terminateAndRelease(AuthorizationExpiredException.DESCRIPTION); - } else if (beginError instanceof ConnectionReadTimeoutException) { - connection.terminateAndRelease(beginError.getMessage()); - } else { - connection.release(); - } - throw asCompletionException(beginError); - } - return this; - }); + return protocol.beginTransaction(connection, initialBookmark, config, logging) + .handle((ignore, beginError) -> { + if (beginError != null) { + if (beginError instanceof AuthorizationExpiredException) { + connection.terminateAndRelease(AuthorizationExpiredException.DESCRIPTION); + } else if (beginError instanceof ConnectionReadTimeoutException) { + connection.terminateAndRelease(beginError.getMessage()); + } else { + connection.release(); + } + throw asCompletionException(beginError); + } + return this; + }); } public CompletionStage closeAsync() { diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunner.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunner.java index e20e4b9016..5ee47aeee5 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunner.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunner.java @@ -24,6 +24,7 @@ import java.util.HashMap; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Value; import org.neo4j.driver.internal.BookmarkHolder; @@ -42,8 +43,8 @@ public class MultiDatabasesRoutingProcedureRunner extends SingleDatabaseRoutingP static final String MULTI_DB_GET_ROUTING_TABLE = String.format("CALL dbms.routing.getRoutingTable($%s, $%s)", ROUTING_CONTEXT, DATABASE_NAME); - public MultiDatabasesRoutingProcedureRunner(RoutingContext context) { - super(context); + public MultiDatabasesRoutingProcedureRunner(RoutingContext context, Logging logging) { + super(context, logging); } @Override diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProvider.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProvider.java index d5fd12cd3b..05e5d993a8 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProvider.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProvider.java @@ -26,6 +26,7 @@ import java.util.concurrent.CompletionException; import java.util.concurrent.CompletionStage; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Record; import org.neo4j.driver.exceptions.ProtocolException; @@ -42,11 +43,11 @@ public class RoutingProcedureClusterCompositionProvider implements ClusterCompos private final RoutingProcedureRunner multiDatabaseRoutingProcedureRunner; private final RoutingProcedureRunner routeMessageRoutingProcedureRunner; - public RoutingProcedureClusterCompositionProvider(Clock clock, RoutingContext routingContext) { + public RoutingProcedureClusterCompositionProvider(Clock clock, RoutingContext routingContext, Logging logging) { this( clock, - new SingleDatabaseRoutingProcedureRunner(routingContext), - new MultiDatabasesRoutingProcedureRunner(routingContext), + new SingleDatabaseRoutingProcedureRunner(routingContext, logging), + new MultiDatabasesRoutingProcedureRunner(routingContext, logging), new RouteMessageRoutingProcedureRunner(routingContext)); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunner.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunner.java index 6b0d76586e..d52f0082eb 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunner.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunner.java @@ -27,6 +27,7 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Record; import org.neo4j.driver.TransactionConfig; @@ -49,9 +50,11 @@ public class SingleDatabaseRoutingProcedureRunner implements RoutingProcedureRun static final String GET_ROUTING_TABLE = "CALL dbms.cluster.routing.getRoutingTable($" + ROUTING_CONTEXT + ")"; final RoutingContext context; + private Logging logging; - public SingleDatabaseRoutingProcedureRunner(RoutingContext context) { + public SingleDatabaseRoutingProcedureRunner(RoutingContext context, Logging logging) { this.context = context; + this.logging = logging; } @Override @@ -87,7 +90,7 @@ CompletionStage> runProcedure(Connection connection, Query procedur return connection .protocol() .runInAutoCommitTransaction( - connection, procedure, bookmarkHolder, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE) + connection, procedure, bookmarkHolder, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, logging) .asyncResult() .thenCompose(ResultCursor::listAsync); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java index 2993af41b1..8d7b5fff2b 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java @@ -297,7 +297,7 @@ private static Rediscovery createRediscovery( Logging logging, DomainNameResolver domainNameResolver) { ClusterCompositionProvider clusterCompositionProvider = - new RoutingProcedureClusterCompositionProvider(clock, settings.routingContext()); + new RoutingProcedureClusterCompositionProvider(clock, settings.routingContext(), logging); return new RediscoveryImpl( initialRouter, settings, diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocol.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocol.java index c95732a5e4..8414a57b77 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocol.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocol.java @@ -25,6 +25,7 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AuthToken; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; @@ -77,9 +78,11 @@ void initializeChannel( * @param connection the connection to use. * @param bookmark the bookmarks. Never null, should be {@link InternalBookmark#empty()} when absent. * @param config the transaction configuration. Never null, should be {@link TransactionConfig#empty()} when absent. + * @param logging the driver logging * @return a completion stage completed when transaction is started or completed exceptionally when there was a failure. */ - CompletionStage beginTransaction(Connection connection, Bookmark bookmark, TransactionConfig config); + CompletionStage beginTransaction( + Connection connection, Bookmark bookmark, TransactionConfig config, Logging logging); /** * Commit the unmanaged transaction. @@ -105,6 +108,7 @@ void initializeChannel( * @param bookmarkHolder the bookmarksHolder that keeps track of the current bookmark and can be updated with a new bookmark. * @param config the transaction config for the implicitly started auto-commit transaction. * @param fetchSize the record fetch size for PULL message. + * @param logging the driver logging * @return stage with cursor. */ ResultCursorFactory runInAutoCommitTransaction( @@ -112,7 +116,8 @@ ResultCursorFactory runInAutoCommitTransaction( Query query, BookmarkHolder bookmarkHolder, TransactionConfig config, - long fetchSize); + long fetchSize, + Logging logging); /** * Execute the given query in a running unmanaged transaction, i.e. {@link Transaction#run(Query)}. diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/BeginMessage.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/BeginMessage.java index a71089f536..dadde3a707 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/BeginMessage.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/BeginMessage.java @@ -25,6 +25,7 @@ import java.util.Objects; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.Value; import org.neo4j.driver.internal.DatabaseName; @@ -37,8 +38,9 @@ public BeginMessage( TransactionConfig config, DatabaseName databaseName, AccessMode mode, - String impersonatedUser) { - this(bookmark, config.timeout(), config.metadata(), mode, databaseName, impersonatedUser); + String impersonatedUser, + Logging logging) { + this(bookmark, config.timeout(), config.metadata(), mode, databaseName, impersonatedUser, logging); } public BeginMessage( @@ -47,8 +49,9 @@ public BeginMessage( Map txMetadata, AccessMode mode, DatabaseName databaseName, - String impersonatedUser) { - super(buildMetadata(txTimeout, txMetadata, databaseName, mode, bookmark, impersonatedUser)); + String impersonatedUser, + Logging logging) { + super(buildMetadata(txTimeout, txMetadata, databaseName, mode, bookmark, impersonatedUser, logging)); } @Override diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RunWithMetadataMessage.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RunWithMetadataMessage.java index d658bc8c20..c34e1ab3f0 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RunWithMetadataMessage.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RunWithMetadataMessage.java @@ -27,6 +27,7 @@ import java.util.Objects; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.Value; @@ -44,9 +45,10 @@ public static RunWithMetadataMessage autoCommitTxRunMessage( DatabaseName databaseName, AccessMode mode, Bookmark bookmark, - String impersonatedUser) { + String impersonatedUser, + Logging logging) { return autoCommitTxRunMessage( - query, config.timeout(), config.metadata(), databaseName, mode, bookmark, impersonatedUser); + query, config.timeout(), config.metadata(), databaseName, mode, bookmark, impersonatedUser, logging); } public static RunWithMetadataMessage autoCommitTxRunMessage( @@ -56,9 +58,10 @@ public static RunWithMetadataMessage autoCommitTxRunMessage( DatabaseName databaseName, AccessMode mode, Bookmark bookmark, - String impersonatedUser) { + String impersonatedUser, + Logging logging) { Map metadata = - buildMetadata(txTimeout, txMetadata, databaseName, mode, bookmark, impersonatedUser); + buildMetadata(txTimeout, txMetadata, databaseName, mode, bookmark, impersonatedUser, logging); return new RunWithMetadataMessage(query.text(), query.parameters().asMap(ofValue()), metadata); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilder.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilder.java index 01a8c04cb4..0329b76974 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilder.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilder.java @@ -26,6 +26,8 @@ import java.util.Map; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logger; +import org.neo4j.driver.Logging; import org.neo4j.driver.Value; import org.neo4j.driver.internal.DatabaseName; import org.neo4j.driver.internal.util.Iterables; @@ -44,8 +46,9 @@ public static Map buildMetadata( Map txMetadata, AccessMode mode, Bookmark bookmark, - String impersonatedUser) { - return buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmark, impersonatedUser); + String impersonatedUser, + Logging logging) { + return buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmark, impersonatedUser, logging); } public static Map buildMetadata( @@ -54,7 +57,8 @@ public static Map buildMetadata( DatabaseName databaseName, AccessMode mode, Bookmark bookmark, - String impersonatedUser) { + String impersonatedUser, + Logging logging) { boolean bookmarksPresent = bookmark != null && !bookmark.isEmpty(); boolean txTimeoutPresent = txTimeout != null; boolean txMetadataPresent = txMetadata != null && !txMetadata.isEmpty(); @@ -77,7 +81,14 @@ public static Map buildMetadata( result.put(BOOKMARKS_METADATA_KEY, value(bookmark.values())); } if (txTimeoutPresent) { - result.put(TX_TIMEOUT_METADATA_KEY, value(txTimeout.toMillis())); + long millis = txTimeout.toMillis(); + if (txTimeout.getNano() % 1_000_000 > 0) { + Logger log = logging.getLog(TransactionMetadataBuilder.class); + millis++; + log.info( + "The transaction timeout has been rounded up to next millisecond value since the config had a fractional millisecond value"); + } + result.put(TX_TIMEOUT_METADATA_KEY, value(millis)); } if (txMetadataPresent) { result.put(TX_METADATA_METADATA_KEY, value(txMetadata)); diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3.java index e4ce215008..6d79251985 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3.java @@ -32,6 +32,7 @@ import java.util.concurrent.CompletionStage; import org.neo4j.driver.AuthToken; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.internal.BookmarkHolder; @@ -110,7 +111,8 @@ public void prepareToCloseChannel(Channel channel) { } @Override - public CompletionStage beginTransaction(Connection connection, Bookmark bookmark, TransactionConfig config) { + public CompletionStage beginTransaction( + Connection connection, Bookmark bookmark, TransactionConfig config, Logging logging) { try { verifyDatabaseNameBeforeTransaction(connection.databaseName()); } catch (Exception error) { @@ -119,7 +121,7 @@ public CompletionStage beginTransaction(Connection connection, Bookmark bo CompletableFuture beginTxFuture = new CompletableFuture<>(); BeginMessage beginMessage = new BeginMessage( - bookmark, config, connection.databaseName(), connection.mode(), connection.impersonatedUser()); + bookmark, config, connection.databaseName(), connection.mode(), connection.impersonatedUser(), logging); connection.writeAndFlush(beginMessage, new BeginTxResponseHandler(beginTxFuture)); return beginTxFuture; } @@ -144,7 +146,8 @@ public ResultCursorFactory runInAutoCommitTransaction( Query query, BookmarkHolder bookmarkHolder, TransactionConfig config, - long fetchSize) { + long fetchSize, + Logging logging) { verifyDatabaseNameBeforeTransaction(connection.databaseName()); RunWithMetadataMessage runMessage = autoCommitTxRunMessage( query, @@ -152,7 +155,8 @@ public ResultCursorFactory runInAutoCommitTransaction( connection.databaseName(), connection.mode(), bookmarkHolder.getBookmark(), - connection.impersonatedUser()); + connection.impersonatedUser(), + logging); return buildResultCursorFactory(connection, query, bookmarkHolder, null, runMessage, fetchSize); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java index 92d3541be3..af04538351 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/UnmanagedTransactionTest.java @@ -62,6 +62,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.mockito.InOrder; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.exceptions.AuthorizationExpiredException; @@ -172,7 +173,7 @@ void shouldReleaseConnectionWhenBeginFails() { RuntimeException error = new RuntimeException("Wrong bookmark!"); Connection connection = connectionWithBegin(handler -> handler.onFailure(error)); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); Bookmark bookmark = InternalBookmark.parse("SomeBookmark"); TransactionConfig txConfig = TransactionConfig.empty(); @@ -187,7 +188,7 @@ void shouldReleaseConnectionWhenBeginFails() { void shouldNotReleaseConnectionWhenBeginSucceeds() { Connection connection = connectionWithBegin(handler -> handler.onSuccess(emptyMap())); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); Bookmark bookmark = InternalBookmark.parse("SomeBookmark"); TransactionConfig txConfig = TransactionConfig.empty(); @@ -201,7 +202,7 @@ void shouldNotReleaseConnectionWhenBeginSucceeds() { void shouldReleaseConnectionWhenTerminatedAndCommitted() { Connection connection = connectionMock(); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); tx.markTerminated(null); @@ -217,7 +218,7 @@ void shouldNotCreateCircularExceptionWhenTerminationCauseEqualsToCursorFailure() ClientException terminationCause = new ClientException("Custom exception"); ResultCursorsHolder resultCursorsHolder = mockResultCursorWith(terminationCause); UnmanagedTransaction tx = new UnmanagedTransaction( - connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, resultCursorsHolder); + connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, resultCursorsHolder, Logging.none()); tx.markTerminated(terminationCause); @@ -232,7 +233,7 @@ void shouldNotCreateCircularExceptionWhenTerminationCauseDifferentFromCursorFail ClientException terminationCause = new ClientException("Custom exception"); ResultCursorsHolder resultCursorsHolder = mockResultCursorWith(new ClientException("Cursor error")); UnmanagedTransaction tx = new UnmanagedTransaction( - connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, resultCursorsHolder); + connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, resultCursorsHolder, Logging.none()); tx.markTerminated(terminationCause); @@ -249,7 +250,7 @@ void shouldNotCreateCircularExceptionWhenTerminatedWithoutFailure() { Connection connection = connectionMock(); ClientException terminationCause = new ClientException("Custom exception"); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); tx.markTerminated(terminationCause); @@ -263,7 +264,7 @@ void shouldNotCreateCircularExceptionWhenTerminatedWithoutFailure() { void shouldReleaseConnectionWhenTerminatedAndRolledBack() { Connection connection = connectionMock(); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); tx.markTerminated(null); await(tx.rollbackAsync()); @@ -275,7 +276,7 @@ void shouldReleaseConnectionWhenTerminatedAndRolledBack() { void shouldReleaseConnectionWhenClose() throws Throwable { Connection connection = connectionMock(); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); await(tx.closeAsync()); @@ -287,7 +288,7 @@ void shouldReleaseConnectionOnConnectionAuthorizationExpiredExceptionFailure() { AuthorizationExpiredException exception = new AuthorizationExpiredException("code", "message"); Connection connection = connectionWithBegin(handler -> handler.onFailure(exception)); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); Bookmark bookmark = InternalBookmark.parse("SomeBookmark"); TransactionConfig txConfig = TransactionConfig.empty(); @@ -304,7 +305,7 @@ void shouldReleaseConnectionOnConnectionReadTimeoutExceptionFailure() { Connection connection = connectionWithBegin(handler -> handler.onFailure(ConnectionReadTimeoutException.INSTANCE)); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); Bookmark bookmark = InternalBookmark.parse("SomeBookmark"); TransactionConfig txConfig = TransactionConfig.empty(); @@ -335,7 +336,7 @@ void shouldReturnExistingStageOnSimilarCompletingAction( given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(new CompletableFuture<>()); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); CompletionStage initialStage = mapTransactionAction(initialAction, tx).get(); @@ -378,7 +379,7 @@ void shouldReturnFailingStageOnConflictingCompletingAction( given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(protocolActionCompleted ? completedFuture(null) : new CompletableFuture<>()); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); CompletionStage originalActionStage = mapTransactionAction(initialAction, tx).get(); @@ -422,7 +423,7 @@ void shouldReturnCompletedWithNullStageOnClosingInactiveTransactionExceptCommitt given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(completedFuture(null)); UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); CompletionStage originalActionStage = mapTransactionAction(originalAction, tx).get(); @@ -444,7 +445,7 @@ private static UnmanagedTransaction beginTx(Connection connection) { private static UnmanagedTransaction beginTx(Connection connection, Bookmark initialBookmark) { UnmanagedTransaction tx = - new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE); + new UnmanagedTransaction(connection, new DefaultBookmarkHolder(), UNLIMITED_FETCH_SIZE, Logging.none()); return await(tx.beginAsync(initialBookmark, TransactionConfig.empty())); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java index 787e3b73da..a004984ad4 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java @@ -44,6 +44,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.neo4j.driver.AccessMode; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Record; import org.neo4j.driver.Value; @@ -117,7 +118,7 @@ private static class TestRoutingProcedureRunner extends MultiDatabasesRoutingPro } TestRoutingProcedureRunner(RoutingContext context, CompletionStage> runProcedureResult) { - super(context); + super(context, Logging.none()); this.runProcedureResult = runProcedureResult; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java index 2faef17900..5c04a6236e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java @@ -45,6 +45,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.neo4j.driver.AccessMode; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Record; import org.neo4j.driver.Value; @@ -125,7 +126,7 @@ private static class TestRoutingProcedureRunner extends SingleDatabaseRoutingPro } TestRoutingProcedureRunner(RoutingContext context, CompletionStage> runProcedureResult) { - super(context); + super(context, Logging.none()); this.runProcedureResult = runProcedureResult; } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java index a8ba63f028..5e35e67499 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/BeginMessageEncoderTest.java @@ -38,6 +38,7 @@ import org.mockito.InOrder; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Value; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.ValuePacker; @@ -59,7 +60,9 @@ void shouldEncodeBeginMessage(AccessMode mode, String impersonatedUser) throws E Duration txTimeout = Duration.ofSeconds(1); encoder.encode( - new BeginMessage(bookmark, txTimeout, txMetadata, mode, defaultDatabase(), impersonatedUser), packer); + new BeginMessage( + bookmark, txTimeout, txMetadata, mode, defaultDatabase(), impersonatedUser, Logging.none()), + packer); InOrder order = inOrder(packer); order.verify(packer).packStructHeader(1, BeginMessage.SIGNATURE); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java index 4ce1dbe1ae..186477df36 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/encode/RunWithMetadataMessageEncoderTest.java @@ -37,6 +37,7 @@ import org.mockito.InOrder; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Value; import org.neo4j.driver.internal.InternalBookmark; @@ -63,7 +64,9 @@ void shouldEncodeRunWithMetadataMessage(AccessMode mode) throws Exception { Query query = new Query("RETURN $answer", value(params)); encoder.encode( - autoCommitTxRunMessage(query, txTimeout, txMetadata, defaultDatabase(), mode, bookmark, null), packer); + autoCommitTxRunMessage( + query, txTimeout, txMetadata, defaultDatabase(), mode, bookmark, null, Logging.none()), + packer); InOrder order = inOrder(packer); order.verify(packer).packStructHeader(3, RunWithMetadataMessage.SIGNATURE); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java index 98352b8e30..9a7686d153 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/request/TransactionMetadataBuilderTest.java @@ -21,6 +21,9 @@ import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; import static org.neo4j.driver.AccessMode.READ; import static org.neo4j.driver.AccessMode.WRITE; import static org.neo4j.driver.Values.value; @@ -39,6 +42,8 @@ import org.junit.jupiter.params.provider.ValueSource; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logger; +import org.neo4j.driver.Logging; import org.neo4j.driver.Value; import org.neo4j.driver.internal.InternalBookmark; @@ -56,7 +61,8 @@ void shouldHaveCorrectMetadata(AccessMode mode) { Duration txTimeout = Duration.ofSeconds(7); - Map metadata = buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmark, null); + Map metadata = + buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmark, null, Logging.none()); Map expectedMetadata = new HashMap<>(); expectedMetadata.put("bookmarks", value(bookmark.values())); @@ -83,7 +89,7 @@ void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { Duration txTimeout = Duration.ofSeconds(7); Map metadata = - buildMetadata(txTimeout, txMetadata, database(databaseName), WRITE, bookmark, null); + buildMetadata(txTimeout, txMetadata, database(databaseName), WRITE, bookmark, null, Logging.none()); Map expectedMetadata = new HashMap<>(); expectedMetadata.put("bookmarks", value(bookmark.values())); @@ -96,7 +102,51 @@ void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { @Test void shouldNotHaveMetadataForDatabaseNameWhenIsNull() { - Map metadata = buildMetadata(null, null, defaultDatabase(), WRITE, null, null); + Map metadata = buildMetadata(null, null, defaultDatabase(), WRITE, null, null, Logging.none()); assertTrue(metadata.isEmpty()); } + + @ParameterizedTest + @ValueSource(longs = {1, 1_000_001, 100_500_000, 100_700_000, 1_000_000_001}) + void shouldRoundUpFractionalTimeoutAndLog(long nanosValue) { + // given + Logging logging = mock(Logging.class); + Logger logger = mock(Logger.class); + given(logging.getLog(TransactionMetadataBuilder.class)).willReturn(logger); + + // when + Map metadata = + buildMetadata(Duration.ofNanos(nanosValue), null, defaultDatabase(), WRITE, null, null, logging); + + // then + Map expectedMetadata = new HashMap<>(); + long expectedMillis = nanosValue / 1_000_000 + 1; + expectedMetadata.put("tx_timeout", value(expectedMillis)); + assertEquals(expectedMetadata, metadata); + then(logging).should().getLog(TransactionMetadataBuilder.class); + then(logger) + .should() + .info( + "The transaction timeout has been rounded up to next millisecond value since the config had a fractional millisecond value"); + } + + @Test + void shouldNotLogWhenRoundingDoesNotHappen() { + // given + Logging logging = mock(Logging.class); + Logger logger = mock(Logger.class); + given(logging.getLog(TransactionMetadataBuilder.class)).willReturn(logger); + int timeout = 1000; + + // when + Map metadata = + buildMetadata(Duration.ofMillis(timeout), null, defaultDatabase(), WRITE, null, null, logging); + + // then + Map expectedMetadata = new HashMap<>(); + expectedMetadata.put("tx_timeout", value(timeout)); + assertEquals(expectedMetadata, metadata); + then(logging).shouldHaveNoInteractions(); + then(logger).shouldHaveNoInteractions(); + } } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java index 08e30ea1fe..4f1c11109a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java @@ -180,13 +180,18 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { Connection connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage stage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - InternalBookmark.empty(), TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + InternalBookmark.empty(), + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -196,11 +201,13 @@ void shouldBeginTransactionWithBookmarks() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx100"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, TransactionConfig.empty()); + CompletionStage stage = + protocol.beginTransaction(connection, bookmark, TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -209,11 +216,13 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { Connection connection = connectionMock(protocol); - CompletionStage stage = protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig); + CompletionStage stage = + protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -223,11 +232,11 @@ void shouldBeginTransactionWithBookmarksAndConfig() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx4242"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig); + CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -334,7 +343,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldNotSupportDatabaseNameInBeginTransaction() { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); ClientException e = assertThrows(ClientException.class, () -> await(txStage)); assertThat(e.getMessage(), startsWith("Database name parameter for selecting database is not supported")); @@ -349,7 +358,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); assertThat(e.getMessage(), startsWith("Database name parameter for selecting database is not supported")); } @@ -363,10 +373,14 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); } else { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), + InternalBookmark.empty(), + TransactionConfig.empty(), + Logging.none()); e = assertThrows(ClientException.class, () -> await(txStage)); } @@ -416,7 +430,7 @@ protected void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionCon if (autoCommitTx) { BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(initialBookmark); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -443,7 +457,7 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); assertFalse(cursorFuture.isDone()); @@ -465,7 +479,7 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); assertFalse(cursorFuture.isDone()); @@ -493,7 +507,7 @@ private static ResponseHandlers verifyRunInvoked( RunWithMetadataMessage expectedMessage; if (session) { expectedMessage = RunWithMetadataMessage.autoCommitTxRunMessage( - QUERY, config, defaultDatabase(), mode, bookmark, null); + QUERY, config, defaultDatabase(), mode, bookmark, null, Logging.none()); } else { expectedMessage = RunWithMetadataMessage.unmanagedTxRunMessage(QUERY); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageWriterV3Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageWriterV3Test.java index dd830c8806..b273ed7af2 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageWriterV3Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/MessageWriterV3Test.java @@ -46,6 +46,7 @@ import java.time.ZonedDateTime; import java.util.Collections; import java.util.stream.Stream; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.Message; @@ -108,14 +109,16 @@ protected Stream supportedMessages() { singletonMap("key", value(42)), READ, defaultDatabase(), - null), + null, + Logging.none()), new BeginMessage( InternalBookmark.parse("neo4j:bookmark:v1:tx123"), ofSeconds(5), singletonMap("key", value(42)), WRITE, defaultDatabase(), - null), + null, + Logging.none()), COMMIT, ROLLBACK, autoCommitTxRunMessage( @@ -125,7 +128,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -133,7 +137,8 @@ protected Stream supportedMessages() { defaultDatabase(), WRITE, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), PULL_ALL, DISCARD_ALL, @@ -147,7 +152,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.empty(), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -155,7 +161,8 @@ protected Stream supportedMessages() { defaultDatabase(), WRITE, InternalBookmark.empty(), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN $x", singletonMap("x", point(42, 1, 2, 3))))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java index 06fef26fd0..c9131f7ddd 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java @@ -175,13 +175,18 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { Connection connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage stage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - InternalBookmark.empty(), TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + InternalBookmark.empty(), + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -191,11 +196,13 @@ void shouldBeginTransactionWithBookmarks() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx100"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, TransactionConfig.empty()); + CompletionStage stage = + protocol.beginTransaction(connection, bookmark, TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -204,11 +211,13 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { Connection connection = connectionMock(protocol); - CompletionStage stage = protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig); + CompletionStage stage = + protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -218,11 +227,11 @@ void shouldBeginTransactionWithBookmarksAndConfig() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx4242"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig); + CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -329,7 +338,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -341,7 +350,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); } private BoltProtocol createProtocol() { @@ -363,7 +373,7 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -389,7 +399,7 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -447,7 +457,7 @@ protected void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionCon if (autoCommitTx) { BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(initialBookmark); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -472,15 +482,20 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { Connection connection = connectionMock("foo", protocol); if (autoCommitTx) { ResultCursorFactory factory = protocol.runInAutoCommitTransaction( - connection, QUERY, BookmarkHolder.NO_OP, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE); + connection, + QUERY, + BookmarkHolder.NO_OP, + TransactionConfig.empty(), + UNLIMITED_FETCH_SIZE, + Logging.none()); CompletionStage resultStage = factory.asyncResult(); ResponseHandler runHandler = verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); runHandler.onSuccess(emptyMap()); await(resultStage); } else { - CompletionStage txStage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage txStage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); await(txStage); verifyBeginInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -497,8 +512,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null); + RunWithMetadataMessage runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -522,7 +537,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null); + BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageWriterV4Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageWriterV4Test.java index 4516b7d797..85875475de 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageWriterV4Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/MessageWriterV4Test.java @@ -47,6 +47,7 @@ import java.time.ZonedDateTime; import java.util.Collections; import java.util.stream.Stream; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.Message; @@ -116,14 +117,16 @@ protected Stream supportedMessages() { singletonMap("key", value(42)), READ, defaultDatabase(), - null), + null, + Logging.none()), new BeginMessage( InternalBookmark.parse("neo4j:bookmark:v1:tx123"), ofSeconds(5), singletonMap("key", value(42)), WRITE, database("foo"), - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -134,7 +137,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -142,7 +146,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -153,7 +158,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.empty(), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -161,7 +167,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.empty(), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN $x", singletonMap("x", point(42, 1, 2, 3))))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java index 6607a3a388..5d12ae55e1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java @@ -179,13 +179,18 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { Connection connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage stage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - InternalBookmark.empty(), TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + InternalBookmark.empty(), + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -195,11 +200,13 @@ void shouldBeginTransactionWithBookmarks() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx100"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, TransactionConfig.empty()); + CompletionStage stage = + protocol.beginTransaction(connection, bookmark, TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -208,11 +215,13 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { Connection connection = connectionMock(protocol); - CompletionStage stage = protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig); + CompletionStage stage = + protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -222,11 +231,11 @@ void shouldBeginTransactionWithBookmarksAndConfig() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx4242"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig); + CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -333,7 +342,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -345,7 +354,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); } private Class expectedMessageFormatType() { @@ -359,7 +369,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -385,7 +395,7 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -442,7 +452,7 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi if (autoCommitTx) { BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(initialBookmark); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -465,7 +475,12 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { Connection connection = connectionMock("foo", protocol); if (autoCommitTx) { ResultCursorFactory factory = protocol.runInAutoCommitTransaction( - connection, QUERY, BookmarkHolder.NO_OP, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE); + connection, + QUERY, + BookmarkHolder.NO_OP, + TransactionConfig.empty(), + UNLIMITED_FETCH_SIZE, + Logging.none()); CompletionStage resultStage = factory.asyncResult(); ResponseHandler runHandler = verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -474,8 +489,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage txStage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); await(txStage); verifyBeginInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -492,8 +507,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null); + RunWithMetadataMessage runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -517,7 +532,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null); + BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageWriterV41Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageWriterV41Test.java index b60840a725..bc4a7eba88 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageWriterV41Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/MessageWriterV41Test.java @@ -47,6 +47,7 @@ import java.time.ZonedDateTime; import java.util.Collections; import java.util.stream.Stream; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.Message; @@ -115,14 +116,16 @@ protected Stream supportedMessages() { singletonMap("key", value(42)), READ, defaultDatabase(), - null), + null, + Logging.none()), new BeginMessage( InternalBookmark.parse("neo4j:bookmark:v1:tx123"), ofSeconds(5), singletonMap("key", value(42)), WRITE, database("foo"), - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -133,7 +136,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -141,7 +145,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -152,7 +157,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.empty(), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -160,7 +166,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.empty(), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN $x", singletonMap("x", point(42, 1, 2, 3))))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java index 0b59ee2c6d..7eb6119813 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java @@ -179,13 +179,18 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { Connection connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage stage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - InternalBookmark.empty(), TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + InternalBookmark.empty(), + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -195,11 +200,13 @@ void shouldBeginTransactionWithBookmarks() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx100"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, TransactionConfig.empty()); + CompletionStage stage = + protocol.beginTransaction(connection, bookmark, TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -208,11 +215,13 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { Connection connection = connectionMock(protocol); - CompletionStage stage = protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig); + CompletionStage stage = + protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -222,11 +231,11 @@ void shouldBeginTransactionWithBookmarksAndConfig() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx4242"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig); + CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -333,7 +342,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -345,7 +354,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); } private Class expectedMessageFormatType() { @@ -359,7 +369,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -384,7 +394,7 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -441,7 +451,7 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi if (autoCommitTx) { BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(initialBookmark); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -466,7 +476,12 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { Connection connection = connectionMock("foo", protocol); if (autoCommitTx) { ResultCursorFactory factory = protocol.runInAutoCommitTransaction( - connection, QUERY, BookmarkHolder.NO_OP, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE); + connection, + QUERY, + BookmarkHolder.NO_OP, + TransactionConfig.empty(), + UNLIMITED_FETCH_SIZE, + Logging.none()); CompletionStage resultStage = factory.asyncResult(); ResponseHandler runHandler = verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -475,8 +490,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage txStage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); await(txStage); verifyBeginInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -493,8 +508,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null); + RunWithMetadataMessage runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -518,7 +533,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null); + BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageWriterV42Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageWriterV42Test.java index 508fa6ddb2..974f9e0e99 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageWriterV42Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/MessageWriterV42Test.java @@ -47,6 +47,7 @@ import java.time.ZonedDateTime; import java.util.Collections; import java.util.stream.Stream; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.internal.InternalBookmark; import org.neo4j.driver.internal.messaging.Message; @@ -115,14 +116,16 @@ protected Stream supportedMessages() { singletonMap("key", value(42)), READ, defaultDatabase(), - null), + null, + Logging.none()), new BeginMessage( InternalBookmark.parse("neo4j:bookmark:v1:tx123"), ofSeconds(5), singletonMap("key", value(42)), WRITE, database("foo"), - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -133,7 +136,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -141,7 +145,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -152,7 +157,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.empty(), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -160,7 +166,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.empty(), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN $x", singletonMap("x", point(42, 1, 2, 3))))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java index 8634eed270..d12da10e5d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java @@ -178,13 +178,18 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { Connection connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage stage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - InternalBookmark.empty(), TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + InternalBookmark.empty(), + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -194,11 +199,13 @@ void shouldBeginTransactionWithBookmarks() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx100"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, TransactionConfig.empty()); + CompletionStage stage = + protocol.beginTransaction(connection, bookmark, TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -207,11 +214,13 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { Connection connection = connectionMock(protocol); - CompletionStage stage = protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig); + CompletionStage stage = + protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -221,11 +230,11 @@ void shouldBeginTransactionWithBookmarksAndConfig() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx4242"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig); + CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -332,7 +341,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -344,7 +353,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); } private Class expectedMessageFormatType() { @@ -358,7 +368,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -384,7 +394,7 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -441,7 +451,7 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi if (autoCommitTx) { BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(initialBookmark); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -466,7 +476,12 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { Connection connection = connectionMock("foo", protocol); if (autoCommitTx) { ResultCursorFactory factory = protocol.runInAutoCommitTransaction( - connection, QUERY, BookmarkHolder.NO_OP, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE); + connection, + QUERY, + BookmarkHolder.NO_OP, + TransactionConfig.empty(), + UNLIMITED_FETCH_SIZE, + Logging.none()); CompletionStage resultStage = factory.asyncResult(); ResponseHandler runHandler = verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -475,8 +490,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage txStage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); await(txStage); verifyBeginInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -493,8 +508,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null); + RunWithMetadataMessage runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -518,7 +533,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null); + BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43Test.java index 48e9573542..b55ca896f5 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43Test.java @@ -49,6 +49,7 @@ import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Value; import org.neo4j.driver.Values; @@ -120,14 +121,16 @@ protected Stream supportedMessages() { singletonMap("key", value(42)), READ, defaultDatabase(), - null), + null, + Logging.none()), new BeginMessage( InternalBookmark.parse("neo4j:bookmark:v1:tx123"), ofSeconds(5), singletonMap("key", value(42)), WRITE, database("foo"), - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -138,7 +141,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -146,7 +150,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -157,7 +162,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.empty(), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -165,7 +171,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.empty(), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN $x", singletonMap("x", point(42, 1, 2, 3)))), // New 4.3 Messages diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java index f35814e6af..1945c7f99d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java @@ -178,13 +178,18 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { Connection connection = connectionMock(protocol); - CompletionStage stage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage stage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - InternalBookmark.empty(), TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + InternalBookmark.empty(), + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -194,11 +199,13 @@ void shouldBeginTransactionWithBookmarks() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx100"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, TransactionConfig.empty()); + CompletionStage stage = + protocol.beginTransaction(connection, bookmark, TransactionConfig.empty(), Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + bookmark, TransactionConfig.empty(), defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -207,11 +214,13 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { Connection connection = connectionMock(protocol); - CompletionStage stage = protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig); + CompletionStage stage = + protocol.beginTransaction(connection, InternalBookmark.empty(), txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage( + InternalBookmark.empty(), txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -221,11 +230,11 @@ void shouldBeginTransactionWithBookmarksAndConfig() { Connection connection = connectionMock(protocol); Bookmark bookmark = InternalBookmark.parse("neo4j:bookmark:v1:tx4242"); - CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig); + CompletionStage stage = protocol.beginTransaction(connection, bookmark, txConfig, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null)), + eq(new BeginMessage(bookmark, txConfig, defaultDatabase(), WRITE, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -332,7 +341,7 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { CompletionStage txStage = protocol.beginTransaction( - connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty()); + connectionMock("foo", protocol), InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -344,7 +353,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { new Query("RETURN 1"), BookmarkHolder.NO_OP, TransactionConfig.empty(), - UNLIMITED_FETCH_SIZE)); + UNLIMITED_FETCH_SIZE, + Logging.none())); } private Class expectedMessageFormatType() { @@ -358,7 +368,7 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -384,7 +394,7 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(bookmark); CompletableFuture cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult() .toCompletableFuture(); @@ -441,7 +451,7 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi if (autoCommitTx) { BookmarkHolder bookmarkHolder = new DefaultBookmarkHolder(initialBookmark); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE) + connection, QUERY, bookmarkHolder, config, UNLIMITED_FETCH_SIZE, Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -466,7 +476,12 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { Connection connection = connectionMock("foo", protocol); if (autoCommitTx) { ResultCursorFactory factory = protocol.runInAutoCommitTransaction( - connection, QUERY, BookmarkHolder.NO_OP, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE); + connection, + QUERY, + BookmarkHolder.NO_OP, + TransactionConfig.empty(), + UNLIMITED_FETCH_SIZE, + Logging.none()); CompletionStage resultStage = factory.asyncResult(); ResponseHandler runHandler = verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -475,8 +490,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { verifySessionRunInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { - CompletionStage txStage = - protocol.beginTransaction(connection, InternalBookmark.empty(), TransactionConfig.empty()); + CompletionStage txStage = protocol.beginTransaction( + connection, InternalBookmark.empty(), TransactionConfig.empty(), Logging.none()); await(txStage); verifyBeginInvoked( connection, InternalBookmark.empty(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -493,8 +508,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - RunWithMetadataMessage runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null); + RunWithMetadataMessage runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -518,7 +533,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { ArgumentCaptor beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null); + BeginMessage beginMessage = new BeginMessage(bookmark, config, databaseName, mode, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageWriterV44Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageWriterV44Test.java index 58c61e0d3f..2af28712c1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageWriterV44Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/MessageWriterV44Test.java @@ -49,6 +49,7 @@ import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; +import org.neo4j.driver.Logging; import org.neo4j.driver.Query; import org.neo4j.driver.Value; import org.neo4j.driver.Values; @@ -120,14 +121,16 @@ protected Stream supportedMessages() { singletonMap("key", value(42)), READ, defaultDatabase(), - null), + null, + Logging.none()), new BeginMessage( InternalBookmark.parse("neo4j:bookmark:v1:tx123"), ofSeconds(5), singletonMap("key", value(42)), WRITE, database("foo"), - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -138,7 +141,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -146,7 +150,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.parse("neo4j:bookmark:v1:tx1"), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -157,7 +162,8 @@ protected Stream supportedMessages() { defaultDatabase(), READ, InternalBookmark.empty(), - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -165,7 +171,8 @@ protected Stream supportedMessages() { database("foo"), WRITE, InternalBookmark.empty(), - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN $x", singletonMap("x", point(42, 1, 2, 3)))), // New 4.3 Messages