diff --git a/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java b/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java index fbd1ad6361..3cddc161dd 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java +++ b/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java @@ -321,7 +321,7 @@ protected Rediscovery createRediscovery( Logging logging, DomainNameResolver domainNameResolver) { var clusterCompositionProvider = - new RoutingProcedureClusterCompositionProvider(clock, settings.routingContext()); + new RoutingProcedureClusterCompositionProvider(clock, settings.routingContext(), logging); return new RediscoveryImpl(initialRouter, clusterCompositionProvider, resolver, logging, domainNameResolver); } 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 671b4a4522..c3ec067d01 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 @@ -67,6 +67,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 long fetchSize; @@ -97,6 +98,7 @@ public NetworkSession( this.connectionProvider = connectionProvider; this.mode = mode; this.retryLogic = retryLogic; + this.logging = logging; this.log = new PrefixedLogger("[" + hashCode() + "]", logging.getLog(getClass())); var databaseNameFuture = databaseName .databaseName() @@ -150,7 +152,7 @@ public CompletionStage beginTransactionAsync( ImpersonationUtil.ensureImpersonationSupport(connection, connection.impersonatedUser())) .thenCompose(connection -> { var tx = new UnmanagedTransaction( - connection, this::handleNewBookmark, fetchSize, notificationConfig); + connection, this::handleNewBookmark, fetchSize, notificationConfig, logging); return tx.beginAsync(determineBookmarks(true), config, txType); }); @@ -268,7 +270,8 @@ private CompletionStage buildResultCursorFactory(Query quer this::handleNewBookmark, config, fetchSize, - notificationConfig); + notificationConfig, + 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 bd19a17497..5c9a112a30 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 @@ -37,6 +37,7 @@ import java.util.function.Consumer; import java.util.function.Function; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; @@ -98,13 +99,15 @@ private enum State { private Throwable causeOfTermination; private CompletionStage terminationStage; private final NotificationConfig notificationConfig; + private final Logging logging; public UnmanagedTransaction( Connection connection, Consumer bookmarkConsumer, long fetchSize, - NotificationConfig notificationConfig) { - this(connection, bookmarkConsumer, fetchSize, new ResultCursorsHolder(), notificationConfig); + NotificationConfig notificationConfig, + Logging logging) { + this(connection, bookmarkConsumer, fetchSize, new ResultCursorsHolder(), notificationConfig, logging); } protected UnmanagedTransaction( @@ -112,20 +115,22 @@ protected UnmanagedTransaction( Consumer bookmarkConsumer, long fetchSize, ResultCursorsHolder resultCursors, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { this.connection = connection; this.protocol = connection.protocol(); this.bookmarkConsumer = bookmarkConsumer; this.resultCursors = resultCursors; this.fetchSize = fetchSize; this.notificationConfig = notificationConfig; + this.logging = logging; connection.bindTerminationAwareStateLockingExecutor(this); } public CompletionStage beginAsync( Set initialBookmarks, TransactionConfig config, String txType) { - return protocol.beginTransaction(connection, initialBookmarks, config, txType, notificationConfig) + return protocol.beginTransaction(connection, initialBookmarks, config, txType, notificationConfig, logging) .handle((ignore, beginError) -> { if (beginError != null) { if (beginError instanceof AuthorizationExpiredException) { 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 eda8f1e05c..3f22546447 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 @@ -25,6 +25,7 @@ import java.util.Set; 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.DatabaseName; @@ -41,8 +42,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 03c49008b6..f90f1da5d4 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 @@ -27,6 +27,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.exceptions.ProtocolException; import org.neo4j.driver.exceptions.value.ValueException; import org.neo4j.driver.internal.DatabaseName; @@ -40,11 +41,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 e4b4af54af..b6fe8648b1 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 @@ -29,6 +29,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; @@ -50,9 +51,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 @@ -93,7 +96,8 @@ CompletionStage> runProcedure(Connection connection, Query procedur (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null) + null, + logging) .asyncResult() .thenCompose(ResultCursor::listAsync); } 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 226ab4bd69..c21e1ea295 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 @@ -28,6 +28,7 @@ import java.util.function.Consumer; import org.neo4j.driver.AuthToken; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.Query; import org.neo4j.driver.Session; @@ -93,6 +94,7 @@ void initializeChannel( * @param config the transaction configuration. Never null, should be {@link TransactionConfig#empty()} when absent. * @param txType the Kernel transaction type * @param notificationConfig the notification configuration + * @param logging the driver logging * @return a completion stage completed when transaction is started or completed exceptionally when there was a failure. */ CompletionStage beginTransaction( @@ -100,7 +102,8 @@ CompletionStage beginTransaction( Set bookmarks, TransactionConfig config, String txType, - NotificationConfig notificationConfig); + NotificationConfig notificationConfig, + Logging logging); /** * Commit the unmanaged transaction. @@ -127,6 +130,7 @@ CompletionStage beginTransaction( * @param config the transaction config for the implicitly started auto-commit transaction. * @param fetchSize the record fetch size for PULL message. * @param notificationConfig the notification configuration + * @param logging the driver logging * @return stage with cursor. */ ResultCursorFactory runInAutoCommitTransaction( @@ -136,7 +140,8 @@ ResultCursorFactory runInAutoCommitTransaction( Consumer bookmarkConsumer, TransactionConfig config, long fetchSize, - NotificationConfig notificationConfig); + NotificationConfig notificationConfig, + 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 ab04655115..009fada49d 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 @@ -26,6 +26,7 @@ import java.util.Set; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.TransactionConfig; import org.neo4j.driver.Value; @@ -41,7 +42,8 @@ public BeginMessage( AccessMode mode, String impersonatedUser, String txType, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { this( bookmarks, config.timeout(), @@ -50,7 +52,8 @@ public BeginMessage( databaseName, impersonatedUser, txType, - notificationConfig); + notificationConfig, + logging); } public BeginMessage( @@ -61,9 +64,18 @@ public BeginMessage( DatabaseName databaseName, String impersonatedUser, String txType, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { super(buildMetadata( - txTimeout, txMetadata, databaseName, mode, bookmarks, impersonatedUser, txType, notificationConfig)); + txTimeout, + txMetadata, + databaseName, + mode, + bookmarks, + impersonatedUser, + txType, + notificationConfig, + 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 a4023b3228..4e1b40e544 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 @@ -28,6 +28,7 @@ import java.util.Set; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; @@ -47,7 +48,8 @@ public static RunWithMetadataMessage autoCommitTxRunMessage( AccessMode mode, Set bookmarks, String impersonatedUser, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { return autoCommitTxRunMessage( query, config.timeout(), @@ -56,7 +58,8 @@ public static RunWithMetadataMessage autoCommitTxRunMessage( mode, bookmarks, impersonatedUser, - notificationConfig); + notificationConfig, + logging); } public static RunWithMetadataMessage autoCommitTxRunMessage( @@ -67,9 +70,18 @@ public static RunWithMetadataMessage autoCommitTxRunMessage( AccessMode mode, Set bookmarks, String impersonatedUser, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { var metadata = buildMetadata( - txTimeout, txMetadata, databaseName, mode, bookmarks, impersonatedUser, null, notificationConfig); + txTimeout, + txMetadata, + databaseName, + mode, + bookmarks, + impersonatedUser, + null, + notificationConfig, + 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 12b1f39ad3..cdfd0d7be3 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 @@ -20,13 +20,13 @@ import static java.util.Collections.emptyMap; import static org.neo4j.driver.Values.value; -import static org.neo4j.driver.internal.DatabaseNameUtil.defaultDatabase; import java.time.Duration; import java.util.Map; import java.util.Set; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.Value; import org.neo4j.driver.internal.DatabaseName; @@ -42,16 +42,6 @@ public class TransactionMetadataBuilder { private static final String IMPERSONATED_USER_KEY = "imp_user"; private static final String TX_TYPE_KEY = "tx_type"; - public static Map buildMetadata( - Duration txTimeout, - Map txMetadata, - AccessMode mode, - Set bookmarks, - String impersonatedUser, - String txType) { - return buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, impersonatedUser, txType, null); - } - public static Map buildMetadata( Duration txTimeout, Map txMetadata, @@ -60,7 +50,8 @@ public static Map buildMetadata( Set bookmarks, String impersonatedUser, String txType, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { var bookmarksPresent = !bookmarks.isEmpty(); var txTimeoutPresent = txTimeout != null; var txMetadataPresent = txMetadata != null && !txMetadata.isEmpty(); @@ -87,7 +78,14 @@ public static Map buildMetadata( result.put(BOOKMARKS_METADATA_KEY, value(bookmarks.stream().map(Bookmark::value))); } if (txTimeoutPresent) { - result.put(TX_TIMEOUT_METADATA_KEY, value(txTimeout.toMillis())); + var millis = txTimeout.toMillis(); + if (txTimeout.toNanosPart() % 1_000_000 > 0) { + var 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 d379b47d3c..709421942b 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 @@ -35,6 +35,7 @@ import java.util.function.Consumer; import org.neo4j.driver.AuthToken; import org.neo4j.driver.Bookmark; +import org.neo4j.driver.Logging; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; @@ -135,7 +136,8 @@ public CompletionStage beginTransaction( Set bookmarks, TransactionConfig config, String txType, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { var exception = verifyNotificationConfigSupported(notificationConfig); if (exception != null) { return CompletableFuture.failedStage(exception); @@ -154,7 +156,8 @@ public CompletionStage beginTransaction( connection.mode(), connection.impersonatedUser(), txType, - notificationConfig); + notificationConfig, + logging); connection.writeAndFlush(beginMessage, new BeginTxResponseHandler(beginTxFuture)); return beginTxFuture; } @@ -181,7 +184,8 @@ public ResultCursorFactory runInAutoCommitTransaction( Consumer bookmarkConsumer, TransactionConfig config, long fetchSize, - NotificationConfig notificationConfig) { + NotificationConfig notificationConfig, + Logging logging) { var exception = verifyNotificationConfigSupported(notificationConfig); if (exception != null) { throw exception; @@ -194,7 +198,8 @@ public ResultCursorFactory runInAutoCommitTransaction( connection.mode(), bookmarks, connection.impersonatedUser(), - notificationConfig); + notificationConfig, + logging); return buildResultCursorFactory(connection, query, bookmarkConsumer, 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 9d4eb45083..cdf7f17348 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 @@ -68,6 +68,7 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; 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; @@ -178,7 +179,7 @@ void shouldBeClosedWhenMarkedTerminatedAndClosed() { void shouldReleaseConnectionWhenBeginFails() { var error = new RuntimeException("Wrong bookmark!"); var connection = connectionWithBegin(handler -> handler.onFailure(error)); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); var txConfig = TransactionConfig.empty(); @@ -192,7 +193,7 @@ void shouldReleaseConnectionWhenBeginFails() { @Test void shouldNotReleaseConnectionWhenBeginSucceeds() { var connection = connectionWithBegin(handler -> handler.onSuccess(emptyMap())); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); var txConfig = TransactionConfig.empty(); @@ -205,7 +206,7 @@ void shouldNotReleaseConnectionWhenBeginSucceeds() { @Test void shouldReleaseConnectionWhenTerminatedAndCommitted() { var connection = connectionMock(); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); tx.markTerminated(null); @@ -220,7 +221,8 @@ void shouldNotCreateCircularExceptionWhenTerminationCauseEqualsToCursorFailure() var connection = connectionMock(); var terminationCause = new ClientException("Custom exception"); var resultCursorsHolder = mockResultCursorWith(terminationCause); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, resultCursorsHolder, null); + var tx = new UnmanagedTransaction( + connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, resultCursorsHolder, null, Logging.none()); tx.markTerminated(terminationCause); @@ -234,7 +236,8 @@ void shouldNotCreateCircularExceptionWhenTerminationCauseDifferentFromCursorFail var connection = connectionMock(); var terminationCause = new ClientException("Custom exception"); var resultCursorsHolder = mockResultCursorWith(new ClientException("Cursor error")); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, resultCursorsHolder, null); + var tx = new UnmanagedTransaction( + connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, resultCursorsHolder, null, Logging.none()); tx.markTerminated(terminationCause); @@ -250,7 +253,7 @@ void shouldNotCreateCircularExceptionWhenTerminationCauseDifferentFromCursorFail void shouldNotCreateCircularExceptionWhenTerminatedWithoutFailure() { var connection = connectionMock(); var terminationCause = new ClientException("Custom exception"); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); tx.markTerminated(terminationCause); @@ -263,7 +266,7 @@ void shouldNotCreateCircularExceptionWhenTerminatedWithoutFailure() { @Test void shouldReleaseConnectionWhenTerminatedAndRolledBack() { var connection = connectionMock(); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); tx.markTerminated(null); await(tx.rollbackAsync()); @@ -274,7 +277,7 @@ void shouldReleaseConnectionWhenTerminatedAndRolledBack() { @Test void shouldReleaseConnectionWhenClose() { var connection = connectionMock(); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); await(tx.closeAsync()); @@ -285,7 +288,7 @@ void shouldReleaseConnectionWhenClose() { void shouldReleaseConnectionOnConnectionAuthorizationExpiredExceptionFailure() { var exception = new AuthorizationExpiredException("code", "message"); var connection = connectionWithBegin(handler -> handler.onFailure(exception)); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); var txConfig = TransactionConfig.empty(); @@ -300,7 +303,7 @@ void shouldReleaseConnectionOnConnectionAuthorizationExpiredExceptionFailure() { @Test void shouldReleaseConnectionOnConnectionReadTimeoutExceptionFailure() { var connection = connectionWithBegin(handler -> handler.onFailure(ConnectionReadTimeoutException.INSTANCE)); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var bookmarks = Collections.singleton(InternalBookmark.parse("SomeBookmark")); var txConfig = TransactionConfig.empty(); @@ -330,7 +333,7 @@ void shouldReturnExistingStageOnSimilarCompletingAction( given(connection.protocol()).willReturn(protocol); given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(new CompletableFuture<>()); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var initialStage = mapTransactionAction(initialAction, tx).get(); var similarStage = mapTransactionAction(similarAction, tx).get(); @@ -370,7 +373,7 @@ void shouldReturnFailingStageOnConflictingCompletingAction( given(connection.protocol()).willReturn(protocol); given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(protocolActionCompleted ? completedFuture(null) : new CompletableFuture<>()); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var originalActionStage = mapTransactionAction(initialAction, tx).get(); var conflictingActionStage = mapTransactionAction(conflictingAction, tx).get(); @@ -411,7 +414,7 @@ void shouldReturnCompletedWithNullStageOnClosingInactiveTransactionExceptCommitt given(connection.protocol()).willReturn(protocol); given(protocolCommit ? protocol.commitTransaction(connection) : protocol.rollbackTransaction(connection)) .willReturn(completedFuture(null)); - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); var originalActionStage = mapTransactionAction(originalAction, tx).get(); var closeStage = commitOnClose != null ? tx.closeAsync(commitOnClose) : tx.closeAsync(); @@ -482,7 +485,7 @@ void shouldThrowOnRunningNewQueriesWhenTransactionIsClosing(TransactionClosingTe given(boltProtocol.version()).willReturn(BoltProtocolV53.VERSION); var closureStage = new CompletableFuture(); var connection = connectionMock(boltProtocol); - given(boltProtocol.beginTransaction(eq(connection), any(), any(), any(), any())) + given(boltProtocol.beginTransaction(eq(connection), any(), any(), any(), any(), any())) .willReturn(completedFuture(null)); given(boltProtocol.commitTransaction(connection)).willReturn(closureStage); given(boltProtocol.rollbackTransaction(connection)).willReturn(closureStage.thenApply(ignored -> null)); @@ -549,7 +552,7 @@ private static UnmanagedTransaction beginTx(Connection connection) { } private static UnmanagedTransaction beginTx(Connection connection, Set initialBookmarks) { - var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null); + var tx = new UnmanagedTransaction(connection, (ignored) -> {}, UNLIMITED_FETCH_SIZE, null, Logging.none()); return await(tx.beginAsync(initialBookmarks, TransactionConfig.empty(), null)); } 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 d20cf2aa3a..bfef6de05d 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 @@ -45,6 +45,7 @@ import org.junit.jupiter.params.provider.ValueSource; 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.internal.spi.Connection; @@ -115,7 +116,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 989370d67f..22d8a9ead1 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 @@ -46,6 +46,7 @@ import org.junit.jupiter.params.provider.MethodSource; 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.exceptions.FatalDiscoveryException; @@ -126,7 +127,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 d6afc0aa0d..4937ba3c00 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 @@ -39,6 +39,7 @@ import org.junit.jupiter.params.provider.MethodSource; 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; @@ -61,7 +62,15 @@ void shouldEncodeBeginMessage(AccessMode mode, String impersonatedUser, String t encoder.encode( new BeginMessage( - bookmarks, txTimeout, txMetadata, mode, defaultDatabase(), impersonatedUser, txType, null), + bookmarks, + txTimeout, + txMetadata, + mode, + defaultDatabase(), + impersonatedUser, + txType, + null, + Logging.none()), packer); var order = inOrder(packer); 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 33ea1b7e2d..e79861c7b9 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 @@ -38,6 +38,7 @@ import org.junit.jupiter.params.provider.EnumSource; 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; @@ -64,7 +65,8 @@ void shouldEncodeRunWithMetadataMessage(AccessMode mode) throws Exception { var query = new Query("RETURN $answer", value(params)); encoder.encode( - autoCommitTxRunMessage(query, txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null), + autoCommitTxRunMessage( + query, txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null, Logging.none()), packer); var order = inOrder(packer); 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 505189ef09..f32c391714 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; @@ -42,6 +45,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.NotificationCategory; import org.neo4j.driver.NotificationConfig; import org.neo4j.driver.NotificationSeverity; @@ -62,7 +67,8 @@ void shouldHaveCorrectMetadata(AccessMode mode) { var txTimeout = Duration.ofSeconds(7); - var metadata = buildMetadata(txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null, null); + var metadata = buildMetadata( + txTimeout, txMetadata, defaultDatabase(), mode, bookmarks, null, null, null, Logging.none()); Map expectedMetadata = new HashMap<>(); expectedMetadata.put( @@ -89,7 +95,8 @@ void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { var txTimeout = Duration.ofSeconds(7); - var metadata = buildMetadata(txTimeout, txMetadata, database(databaseName), WRITE, bookmarks, null, null, null); + var metadata = buildMetadata( + txTimeout, txMetadata, database(databaseName), WRITE, bookmarks, null, null, null, Logging.none()); Map expectedMetadata = new HashMap<>(); expectedMetadata.put( @@ -103,7 +110,8 @@ void shouldHaveCorrectMetadataForDatabaseName(String databaseName) { @Test void shouldNotHaveMetadataForDatabaseNameWhenIsNull() { - var metadata = buildMetadata(null, null, defaultDatabase(), WRITE, Collections.emptySet(), null, null, null); + var metadata = buildMetadata( + null, null, defaultDatabase(), WRITE, Collections.emptySet(), null, null, null, Logging.none()); assertTrue(metadata.isEmpty()); } @@ -119,11 +127,72 @@ void shouldIncludeNotificationConfig() { null, NotificationConfig.defaultConfig() .enableMinimumSeverity(NotificationSeverity.WARNING) - .disableCategories(Set.of(NotificationCategory.UNSUPPORTED))); + .disableCategories(Set.of(NotificationCategory.UNSUPPORTED)), + Logging.none()); var expectedMetadata = new HashMap(); expectedMetadata.put("notifications_minimum_severity", value("WARNING")); expectedMetadata.put("notifications_disabled_categories", value(Set.of("UNSUPPORTED"))); assertEquals(expectedMetadata, metadata); } + + @ParameterizedTest + @ValueSource(longs = {1, 1_000_001, 100_500_000, 100_700_000, 1_000_000_001}) + void shouldRoundUpFractionalTimeoutAndLog(long nanosValue) { + // given + var logging = mock(Logging.class); + var logger = mock(Logger.class); + given(logging.getLog(TransactionMetadataBuilder.class)).willReturn(logger); + + // when + var metadata = buildMetadata( + Duration.ofNanos(nanosValue), + null, + defaultDatabase(), + WRITE, + Collections.emptySet(), + null, + null, + null, + logging); + + // then + var expectedMetadata = new HashMap(); + var 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 + var logging = mock(Logging.class); + var logger = mock(Logger.class); + given(logging.getLog(TransactionMetadataBuilder.class)).willReturn(logger); + var timeout = 1000; + + // when + var metadata = buildMetadata( + Duration.ofMillis(timeout), + null, + defaultDatabase(), + WRITE, + Collections.emptySet(), + null, + null, + null, + logging); + + // then + var 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 ce0433fd04..5513eb0e04 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 @@ -193,8 +193,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -205,7 +205,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -215,12 +216,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -229,12 +238,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -244,11 +260,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -354,7 +371,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldNotSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); var e = assertThrows(ClientException.class, () -> await(txStage)); assertThat(e.getMessage(), startsWith("Database name parameter for selecting database is not supported")); @@ -371,7 +393,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); assertThat(e.getMessage(), startsWith("Database name parameter for selecting database is not supported")); } @@ -387,10 +410,16 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } else { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); e = assertThrows(ClientException.class, () -> await(txStage)); } @@ -438,7 +467,14 @@ protected void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionCon CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -465,7 +501,14 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); assertFalse(cursorFuture.isDone()); @@ -488,7 +531,14 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); assertFalse(cursorFuture.isDone()); @@ -520,7 +570,7 @@ private static ResponseHandlers verifyRunInvoked( RunWithMetadataMessage expectedMessage; if (session) { expectedMessage = RunWithMetadataMessage.autoCommitTxRunMessage( - QUERY, config, defaultDatabase(), mode, bookmarks, null, null); + QUERY, config, defaultDatabase(), mode, bookmarks, null, 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 c587d94a8f..363d809a42 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.BoltAgentUtil; import org.neo4j.driver.internal.InternalBookmark; @@ -113,7 +114,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -122,7 +124,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, autoCommitTxRunMessage( @@ -133,7 +136,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -142,7 +146,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), PULL_ALL, DISCARD_ALL, @@ -157,7 +162,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -166,7 +172,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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 bcfb699dea..f4d75d4554 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 @@ -187,8 +187,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -199,7 +199,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -209,12 +210,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -223,12 +232,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -238,11 +254,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -348,7 +365,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -362,7 +384,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private BoltProtocol createProtocol() { @@ -385,7 +408,14 @@ protected void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -412,7 +442,14 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -469,7 +506,14 @@ protected void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionCon CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -500,7 +544,8 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -508,7 +553,7 @@ protected void testDatabaseNameSupport(boolean autoCommitTx) { await(resultStage); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -525,8 +570,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmarks, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -550,7 +595,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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 62afc38697..cbe95e9e8e 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.BoltAgentUtil; import org.neo4j.driver.internal.InternalBookmark; @@ -121,7 +122,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -130,7 +132,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -142,7 +145,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -151,7 +155,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -163,7 +168,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -172,7 +178,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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 c08d189fec..874208a29e 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 @@ -191,8 +191,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -203,7 +203,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -213,12 +214,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -227,12 +236,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -242,11 +258,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -352,7 +369,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -366,7 +388,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -381,7 +404,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -408,7 +438,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -464,7 +501,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -493,7 +537,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -503,7 +548,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -520,8 +565,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmarks, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -545,7 +590,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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 844c27691c..a2c56879f6 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.BoltAgentUtil; import org.neo4j.driver.internal.InternalBookmark; @@ -120,7 +121,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -129,7 +131,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -141,7 +144,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -150,7 +154,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -162,7 +167,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -171,7 +177,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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 d341e5688f..96f946fa47 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 @@ -191,8 +191,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -203,7 +203,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -213,12 +214,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -227,12 +236,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -242,11 +258,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -352,7 +369,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -366,7 +388,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -381,7 +404,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -407,7 +437,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -463,7 +500,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -494,7 +538,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -504,7 +549,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -521,8 +566,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmarks, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -546,7 +591,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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 fb9518214f..a6b9caa8f9 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.BoltAgentUtil; import org.neo4j.driver.internal.InternalBookmark; @@ -120,7 +121,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -129,7 +131,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -141,7 +144,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -150,7 +154,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -162,7 +167,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -171,7 +177,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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 893a00993e..0705924b18 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 @@ -190,8 +190,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -202,7 +202,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -212,12 +213,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -226,12 +235,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -241,11 +257,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -351,7 +368,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -365,7 +387,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -380,7 +403,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -407,7 +437,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -465,7 +502,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -496,7 +540,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -506,7 +551,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -523,8 +568,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmarks, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -548,7 +593,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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 07eabc49bc..16db9a9479 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; @@ -125,7 +126,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -134,7 +136,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -146,7 +149,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -155,7 +159,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -167,7 +172,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -176,7 +182,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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 b3046cdf2c..55bf9593ef 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 @@ -190,8 +190,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -202,7 +202,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -212,12 +213,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -226,12 +235,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -241,11 +257,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -351,7 +368,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -365,7 +387,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -380,7 +403,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -407,7 +437,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -463,7 +500,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -494,7 +538,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -504,7 +549,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -521,8 +566,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmarks, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmarks, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -546,7 +591,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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 3b3751565f..fc689818d8 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; @@ -125,7 +126,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -134,7 +136,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -146,7 +149,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -155,7 +159,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -167,7 +172,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -176,7 +182,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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/v5/BoltProtocolV5Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java index 4142767e90..927de14464 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java @@ -190,8 +190,8 @@ void shouldFailToInitializeChannelWhenErrorIsReceived() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -202,7 +202,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -212,12 +213,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -226,12 +235,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -241,11 +257,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -351,7 +368,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -365,7 +387,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -380,7 +403,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -407,7 +437,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -463,7 +500,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -494,7 +538,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -504,7 +549,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -521,8 +566,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -546,7 +591,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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/v5/MessageWriterV5Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageWriterV5Test.java index 3ef407f80a..3895a06221 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageWriterV5Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/MessageWriterV5Test.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; @@ -125,7 +126,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -134,7 +136,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -146,7 +149,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -155,7 +159,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -167,7 +172,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -176,7 +182,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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/v51/BoltProtocolV51Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java index 27058fe0f6..ecf8cdd245 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java @@ -162,8 +162,8 @@ void shouldPrepareToCloseChannel() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -174,7 +174,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -184,12 +185,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -198,12 +207,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -213,11 +229,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -323,7 +340,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -337,7 +359,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -352,7 +375,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -379,7 +409,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -435,7 +472,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -466,7 +510,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -476,7 +521,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -493,8 +538,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -518,7 +563,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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/v51/MessageWriterV51Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageWriterV51Test.java index 80f53ec9d0..03358e0705 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageWriterV51Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/MessageWriterV51Test.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,7 +121,8 @@ protected Stream supportedMessages() { defaultDatabase(), null, null, - null), + null, + Logging.none()), new BeginMessage( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx123")), ofSeconds(5), @@ -129,7 +131,8 @@ protected Stream supportedMessages() { database("foo"), null, null, - null), + null, + Logging.none()), COMMIT, ROLLBACK, RESET, @@ -141,7 +144,8 @@ protected Stream supportedMessages() { READ, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN 1"), ofSeconds(5), @@ -150,7 +154,8 @@ protected Stream supportedMessages() { WRITE, Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx1")), null, - null), + null, + Logging.none()), unmanagedTxRunMessage(new Query("RETURN 1")), // Bolt V3 messages with struct values @@ -162,7 +167,8 @@ protected Stream supportedMessages() { READ, Collections.emptySet(), null, - null), + null, + Logging.none()), autoCommitTxRunMessage( new Query("RETURN $x", singletonMap("x", value(ZonedDateTime.now()))), ofSeconds(1), @@ -171,7 +177,8 @@ protected Stream supportedMessages() { WRITE, Collections.emptySet(), null, - 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/v52/BoltProtocolV52Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java index 833f241caf..9618d2a7dd 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java @@ -163,8 +163,8 @@ void shouldPrepareToCloseChannel() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -175,7 +175,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -185,12 +186,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -199,12 +208,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -214,11 +230,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -324,7 +341,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -338,7 +360,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -353,7 +376,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -380,7 +410,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -436,7 +473,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -467,7 +511,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -477,7 +522,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -494,8 +539,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -519,7 +564,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, 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/v53/BoltProtocolV53Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java index c13f7b996d..07bec4f486 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java @@ -170,8 +170,8 @@ void shouldPrepareToCloseChannel() { void shouldBeginTransactionWithoutBookmark() { var connection = connectionMock(protocol); - var stage = - protocol.beginTransaction(connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + var stage = protocol.beginTransaction( + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( @@ -182,7 +182,8 @@ void shouldBeginTransactionWithoutBookmark() { WRITE, null, null, - null)), + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -192,12 +193,20 @@ void shouldBeginTransactionWithBookmarks() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx100")); - var stage = protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null); + var stage = + protocol.beginTransaction(connection, bookmarks, TransactionConfig.empty(), null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - bookmarks, TransactionConfig.empty(), defaultDatabase(), WRITE, null, null, null)), + bookmarks, + TransactionConfig.empty(), + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -206,12 +215,19 @@ void shouldBeginTransactionWithBookmarks() { void shouldBeginTransactionWithConfig() { var connection = connectionMock(protocol); - var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null); + var stage = protocol.beginTransaction(connection, Collections.emptySet(), txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( eq(new BeginMessage( - Collections.emptySet(), txConfig, defaultDatabase(), WRITE, null, null, null)), + Collections.emptySet(), + txConfig, + defaultDatabase(), + WRITE, + null, + null, + null, + Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -221,11 +237,12 @@ void shouldBeginTransactionWithBookmarksAndConfig() { var connection = connectionMock(protocol); var bookmarks = Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx4242")); - var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null); + var stage = protocol.beginTransaction(connection, bookmarks, txConfig, null, null, Logging.none()); verify(connection) .writeAndFlush( - eq(new BeginMessage(bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null)), + eq(new BeginMessage( + bookmarks, txConfig, defaultDatabase(), WRITE, null, null, null, Logging.none())), any(BeginTxResponseHandler.class)); assertNull(await(stage)); } @@ -331,7 +348,12 @@ void databaseNameForAutoCommitTransactions() { @Test void shouldSupportDatabaseNameInBeginTransaction() { var txStage = protocol.beginTransaction( - connectionMock("foo", protocol), Collections.emptySet(), TransactionConfig.empty(), null, null); + connectionMock("foo", protocol), + Collections.emptySet(), + TransactionConfig.empty(), + null, + null, + Logging.none()); assertDoesNotThrow(() -> await(txStage)); } @@ -345,7 +367,8 @@ void shouldNotSupportDatabaseNameForAutoCommitTransactions() { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null)); + null, + Logging.none())); } private Class expectedMessageFormatType() { @@ -360,7 +383,14 @@ private void testFailedRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -387,7 +417,14 @@ private void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( Consumer bookmarkConsumer = mock(Consumer.class); var cursorFuture = protocol.runInAutoCommitTransaction( - connection, QUERY, bookmarks, bookmarkConsumer, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + bookmarks, + bookmarkConsumer, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult() .toCompletableFuture(); @@ -443,7 +480,14 @@ private void testRunAndWaitForRunResponse(boolean autoCommitTx, TransactionConfi CompletionStage cursorStage; if (autoCommitTx) { cursorStage = protocol.runInAutoCommitTransaction( - connection, QUERY, initialBookmarks, (ignored) -> {}, config, UNLIMITED_FETCH_SIZE, null) + connection, + QUERY, + initialBookmarks, + (ignored) -> {}, + config, + UNLIMITED_FETCH_SIZE, + null, + Logging.none()) .asyncResult(); } else { cursorStage = protocol.runInUnmanagedTransaction( @@ -474,7 +518,8 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { (ignored) -> {}, TransactionConfig.empty(), UNLIMITED_FETCH_SIZE, - null); + null, + Logging.none()); var resultStage = factory.asyncResult(); var runHandler = verifySessionRunInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -484,7 +529,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); } else { var txStage = protocol.beginTransaction( - connection, Collections.emptySet(), TransactionConfig.empty(), null, null); + connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); verifyBeginInvoked( connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); @@ -501,8 +546,8 @@ private ResponseHandler verifySessionRunInvoked( TransactionConfig config, AccessMode mode, DatabaseName databaseName) { - var runMessage = - RunWithMetadataMessage.autoCommitTxRunMessage(QUERY, config, databaseName, mode, bookmark, null, null); + var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage( + QUERY, config, databaseName, mode, bookmark, null, null, Logging.none()); return verifyRunInvoked(connection, runMessage); } @@ -526,7 +571,7 @@ private void verifyBeginInvoked( AccessMode mode, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null); + var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); }