From c080626a39cbcea21e377fcbc9fc0b63f0dbd322 Mon Sep 17 00:00:00 2001 From: Rouven Bauer Date: Wed, 26 Jan 2022 13:08:31 +0100 Subject: [PATCH] Rename `Session.lastBookmark` to `Session.lastBookmarks` Made a clear internal distinction between what single bookmark is (a string that is exchanged with the server) and what Bookmarks are (an array of such strings). --- .../src/bolt/bolt-protocol-v1.js | 20 +-- .../src/bolt/bolt-protocol-v3.js | 12 +- .../src/bolt/bolt-protocol-v4x0.js | 12 +- .../src/bolt/bolt-protocol-v4x3.js | 8 +- .../src/bolt/bolt-protocol-v4x4.js | 16 +- .../src/bolt/request-message.js | 24 +-- .../connection-provider-routing.js | 44 +++--- .../src/rediscovery/rediscovery.js | 2 +- .../test/bolt/bolt-protocol-v1.test.js | 12 +- .../test/bolt/bolt-protocol-v3.test.js | 18 +-- .../test/bolt/bolt-protocol-v4x0.test.js | 18 +-- .../test/bolt/bolt-protocol-v4x1.test.js | 4 +- .../test/bolt/bolt-protocol-v4x2.test.js | 4 +- .../test/bolt/bolt-protocol-v4x3.test.js | 26 ++-- .../test/bolt/bolt-protocol-v4x4.test.js | 38 ++--- .../test/bolt/request-message.test.js | 38 ++--- .../connection-provider-routing.test.js | 4 +- .../test/rediscovery/rediscovery.test.js | 4 +- packages/core/src/connection-provider.ts | 6 +- packages/core/src/driver.ts | 12 +- .../internal/{bookmark.ts => bookmarks.ts} | 22 +-- .../core/src/internal/connection-holder.ts | 24 +-- packages/core/src/internal/index.ts | 4 +- packages/core/src/session.ts | 44 +++--- packages/core/src/transaction.ts | 24 +-- packages/core/test/driver.test.ts | 6 +- packages/core/test/transaction.test.ts | 4 +- packages/neo4j-driver/src/session-rx.js | 8 +- packages/neo4j-driver/test/bolt-v3.test.js | 96 ++++++------ packages/neo4j-driver/test/examples.test.js | 4 +- .../test/internal/bookmark.test.js | 138 +++++++++--------- .../test/internal/connection-channel.test.js | 6 +- .../test/internal/fake-session.js | 4 +- .../node/routing.driver.boltkit.test.js | 6 +- .../test/internal/shared-neo4j.js | 10 +- .../neo4j-driver/test/rx/transaction.test.js | 18 +-- packages/neo4j-driver/test/session.test.js | 95 ++++++------ packages/neo4j-driver/test/stress-test.js | 64 ++++---- packages/neo4j-driver/test/stress.test.js | 58 ++++---- .../neo4j-driver/test/transaction.test.js | 18 +-- .../neo4j-driver/test/types/export.test.ts | 4 +- .../test/types/session-rx.test.ts | 2 +- .../neo4j-driver/test/types/session.test.ts | 4 +- packages/neo4j-driver/types/session-rx.d.ts | 2 +- packages/testkit-backend/scratch.js | 3 + .../testkit-backend/src/request-handlers.js | 4 +- 46 files changed, 505 insertions(+), 489 deletions(-) rename packages/core/src/internal/{bookmark.ts => bookmarks.ts} (79%) create mode 100644 packages/testkit-backend/scratch.js diff --git a/packages/bolt-connection/src/bolt/bolt-protocol-v1.js b/packages/bolt-connection/src/bolt/bolt-protocol-v1.js index dec32a488..46e350635 100644 --- a/packages/bolt-connection/src/bolt/bolt-protocol-v1.js +++ b/packages/bolt-connection/src/bolt/bolt-protocol-v1.js @@ -33,7 +33,7 @@ import { import { internal } from 'neo4j-driver-core' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, constants: { ACCESS_MODE_WRITE, BOLT_PROTOCOL_V1 }, logger: { Logger }, txConfig: { TxConfig } @@ -140,7 +140,7 @@ export default class BoltProtocol { /** * Begin an explicit transaction. * @param {Object} param - * @param {Bookmark} param.bookmark the bookmark. + * @param {Bookmarks} param.bookmarks the bookmarks. * @param {TxConfig} param.txConfig the configuration. * @param {string} param.database the target database name. * @param {string} param.mode the access mode. @@ -152,7 +152,7 @@ export default class BoltProtocol { * @returns {StreamObserver} the stream observer that monitors the corresponding server response. */ beginTransaction ({ - bookmark, + bookmarks, txConfig, database, mode, @@ -164,9 +164,9 @@ export default class BoltProtocol { } = {}) { return this.run( 'BEGIN', - bookmark ? bookmark.asBeginTransactionParameters() : {}, + bookmarks ? bookmarks.asBeginTransactionParameters() : {}, { - bookmark: bookmark, + bookmarks: bookmarks, txConfig: txConfig, database, mode, @@ -201,7 +201,7 @@ export default class BoltProtocol { 'COMMIT', {}, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), mode: ACCESS_MODE_WRITE, beforeError, @@ -233,7 +233,7 @@ export default class BoltProtocol { 'ROLLBACK', {}, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), mode: ACCESS_MODE_WRITE, beforeError, @@ -249,7 +249,7 @@ export default class BoltProtocol { * @param {string} query the cypher query. * @param {Object} parameters the query parameters. * @param {Object} param - * @param {Bookmark} param.bookmark the bookmark. + * @param {Bookmarks} param.bookmarks the bookmarks. * @param {TxConfig} param.txConfig the transaction configuration. * @param {string} param.database the target database name. * @param {string} param.impersonatedUser the impersonated user @@ -267,7 +267,7 @@ export default class BoltProtocol { query, parameters, { - bookmark, + bookmarks, txConfig, database, mode, @@ -295,7 +295,7 @@ export default class BoltProtocol { lowRecordWatermark }) - // bookmark and mode are ignored in this version of the protocol + // bookmarks and mode are ignored in this version of the protocol assertTxConfigIsEmpty(txConfig, this._onProtocolError, observer) // passing in a database name on this protocol version throws an error assertDatabaseIsEmpty(database, this._onProtocolError, observer) diff --git a/packages/bolt-connection/src/bolt/bolt-protocol-v3.js b/packages/bolt-connection/src/bolt/bolt-protocol-v3.js index 2ea0a246e..8e59cf24e 100644 --- a/packages/bolt-connection/src/bolt/bolt-protocol-v3.js +++ b/packages/bolt-connection/src/bolt/bolt-protocol-v3.js @@ -28,7 +28,7 @@ import { import { internal } from 'neo4j-driver-core' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, constants: { BOLT_PROTOCOL_V3 }, txConfig: { TxConfig } } = internal @@ -75,7 +75,7 @@ export default class BoltProtocol extends BoltProtocolV2 { } beginTransaction ({ - bookmark, + bookmarks, txConfig, database, impersonatedUser, @@ -100,7 +100,7 @@ export default class BoltProtocol extends BoltProtocolV2 { assertImpersonatedUserIsEmpty(impersonatedUser, this._onProtocolError, observer) this.write( - RequestMessage.begin({ bookmark, txConfig, mode }), + RequestMessage.begin({ bookmarks, txConfig, mode }), observer, true ) @@ -152,7 +152,7 @@ export default class BoltProtocol extends BoltProtocolV2 { query, parameters, { - bookmark, + bookmarks, txConfig, database, impersonatedUser, @@ -187,7 +187,7 @@ export default class BoltProtocol extends BoltProtocolV2 { this.write( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, mode }), @@ -206,7 +206,7 @@ export default class BoltProtocol extends BoltProtocolV2 { * @param {object} param.routingContext The routing context used to define the routing table. * Multi-datacenter deployments is one of its use cases * @param {string} param.databaseName The database name - * @param {Bookmark} params.sessionContext.bookmark The bookmark used for request the routing table + * @param {Bookmarks} params.sessionContext.bookmarks The bookmarks used for requesting the routing table * @param {string} params.sessionContext.mode The session mode * @param {string} params.sessionContext.database The database name used on the session * @param {function()} params.sessionContext.afterComplete The session param used after the session closed diff --git a/packages/bolt-connection/src/bolt/bolt-protocol-v4x0.js b/packages/bolt-connection/src/bolt/bolt-protocol-v4x0.js index 21802762a..fd7f36487 100644 --- a/packages/bolt-connection/src/bolt/bolt-protocol-v4x0.js +++ b/packages/bolt-connection/src/bolt/bolt-protocol-v4x0.js @@ -27,7 +27,7 @@ import { import { internal } from 'neo4j-driver-core' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, constants: { BOLT_PROTOCOL_V4_0, FETCH_ALL }, txConfig: { TxConfig } } = internal @@ -42,7 +42,7 @@ export default class BoltProtocol extends BoltProtocolV3 { } beginTransaction ({ - bookmark, + bookmarks, txConfig, database, impersonatedUser, @@ -65,7 +65,7 @@ export default class BoltProtocol extends BoltProtocolV3 { assertImpersonatedUserIsEmpty(impersonatedUser, this._onProtocolError, observer) this.write( - RequestMessage.begin({ bookmark, txConfig, database, mode }), + RequestMessage.begin({ bookmarks, txConfig, database, mode }), observer, true ) @@ -77,7 +77,7 @@ export default class BoltProtocol extends BoltProtocolV3 { query, parameters, { - bookmark, + bookmarks, txConfig, database, impersonatedUser, @@ -117,7 +117,7 @@ export default class BoltProtocol extends BoltProtocolV3 { const flushRun = reactive this.write( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode @@ -150,7 +150,7 @@ export default class BoltProtocol extends BoltProtocolV3 { * @param {object} param.routingContext The routing context used to define the routing table. * Multi-datacenter deployments is one of its use cases * @param {string} param.databaseName The database name - * @param {Bookmark} params.sessionContext.bookmark The bookmark used for request the routing table + * @param {Bookmarks} params.sessionContext.bookmarks The bookmarks used for requesting the routing table * @param {string} params.sessionContext.mode The session mode * @param {string} params.sessionContext.database The database name used on the session * @param {function()} params.sessionContext.afterComplete The session param used after the session closed diff --git a/packages/bolt-connection/src/bolt/bolt-protocol-v4x3.js b/packages/bolt-connection/src/bolt/bolt-protocol-v4x3.js index 8d99f572e..379a69249 100644 --- a/packages/bolt-connection/src/bolt/bolt-protocol-v4x3.js +++ b/packages/bolt-connection/src/bolt/bolt-protocol-v4x3.js @@ -23,7 +23,7 @@ import { RouteObserver } from './stream-observers' import { internal } from 'neo4j-driver-core' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, constants: { BOLT_PROTOCOL_V4_3 } } = internal @@ -39,7 +39,7 @@ export default class BoltProtocol extends BoltProtocolV42 { * @param {object} param.routingContext The routing context used to define the routing table. * Multi-datacenter deployments is one of its use cases * @param {string} param.databaseName The database name - * @param {Bookmark} params.sessionContext.bookmark The bookmark used for request the routing table + * @param {Bookmarks} params.sessionContext.bookmarks The bookmarks used for requesting the routing table * @param {function(err: Error)} param.onError * @param {function(RawRoutingTable)} param.onCompleted * @returns {RouteObserver} the route observer @@ -56,9 +56,9 @@ export default class BoltProtocol extends BoltProtocolV42 { onError, onCompleted }) - const bookmark = sessionContext.bookmark || Bookmark.empty() + const bookmarks = sessionContext.bookmarks || Bookmarks.empty() this.write( - RequestMessage.route(routingContext, bookmark.values(), databaseName), + RequestMessage.route(routingContext, bookmarks.values(), databaseName), observer, true ) diff --git a/packages/bolt-connection/src/bolt/bolt-protocol-v4x4.js b/packages/bolt-connection/src/bolt/bolt-protocol-v4x4.js index 261a879fb..7611a0fff 100644 --- a/packages/bolt-connection/src/bolt/bolt-protocol-v4x4.js +++ b/packages/bolt-connection/src/bolt/bolt-protocol-v4x4.js @@ -24,7 +24,7 @@ import { RouteObserver, ResultStreamObserver } from './stream-observers' const { constants: { BOLT_PROTOCOL_V4_4, FETCH_ALL }, - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, } = internal export default class BoltProtocol extends BoltProtocolV43 { @@ -39,7 +39,7 @@ export default class BoltProtocol extends BoltProtocolV43 { * @param {object} param.routingContext The routing context used to define the routing table. * Multi-datacenter deployments is one of its use cases * @param {string} param.databaseName The database name - * @param {Bookmark} params.sessionContext.bookmark The bookmark used for request the routing table + * @param {Bookmarks} params.sessionContext.bookmarks The bookmarks used for requesting the routing table * @param {function(err: Error)} param.onError * @param {function(RawRoutingTable)} param.onCompleted * @returns {RouteObserver} the route observer @@ -57,9 +57,9 @@ export default class BoltProtocol extends BoltProtocolV43 { onError, onCompleted }) - const bookmark = sessionContext.bookmark || Bookmark.empty() + const bookmarks = sessionContext.bookmarks || Bookmarks.empty() this.write( - RequestMessage.routeV4x4(routingContext, bookmark.values(), { databaseName, impersonatedUser }), + RequestMessage.routeV4x4(routingContext, bookmarks.values(), { databaseName, impersonatedUser }), observer, true ) @@ -71,7 +71,7 @@ export default class BoltProtocol extends BoltProtocolV43 { query, parameters, { - bookmark, + bookmarks, txConfig, database, mode, @@ -108,7 +108,7 @@ export default class BoltProtocol extends BoltProtocolV43 { const flushRun = reactive this.write( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode, @@ -126,7 +126,7 @@ export default class BoltProtocol extends BoltProtocolV43 { } beginTransaction ({ - bookmark, + bookmarks, txConfig, database, mode, @@ -146,7 +146,7 @@ export default class BoltProtocol extends BoltProtocolV43 { observer.prepareToHandleSingleResponse() this.write( - RequestMessage.begin({ bookmark, txConfig, database, mode, impersonatedUser }), + RequestMessage.begin({ bookmarks, txConfig, database, mode, impersonatedUser }), observer, true ) diff --git a/packages/bolt-connection/src/bolt/request-message.js b/packages/bolt-connection/src/bolt/request-message.js index c8c497b73..a5505da9d 100644 --- a/packages/bolt-connection/src/bolt/request-message.js +++ b/packages/bolt-connection/src/bolt/request-message.js @@ -120,15 +120,15 @@ export default class RequestMessage { /** * Create a new BEGIN message. - * @param {Bookmark} bookmark the bookmark. + * @param {Bookmarks} bookmarks the bookmarks. * @param {TxConfig} txConfig the configuration. * @param {string} database the database name. * @param {string} mode the access mode. * @param {string} impersonatedUser the impersonated user. * @return {RequestMessage} new BEGIN message. */ - static begin ({ bookmark, txConfig, database, mode, impersonatedUser } = {}) { - const metadata = buildTxMetadata(bookmark, txConfig, database, mode, impersonatedUser) + static begin ({ bookmarks, txConfig, database, mode, impersonatedUser } = {}) { + const metadata = buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser) return new RequestMessage( BEGIN, [metadata], @@ -156,7 +156,7 @@ export default class RequestMessage { * Create a new RUN message with additional metadata. * @param {string} query the cypher query. * @param {Object} parameters the query parameters. - * @param {Bookmark} bookmark the bookmark. + * @param {Bookmarks} bookmarks the bookmarks. * @param {TxConfig} txConfig the configuration. * @param {string} database the database name. * @param {string} mode the access mode. @@ -166,9 +166,9 @@ export default class RequestMessage { static runWithMetadata ( query, parameters, - { bookmark, txConfig, database, mode, impersonatedUser } = {} + { bookmarks, txConfig, database, mode, impersonatedUser } = {} ) { - const metadata = buildTxMetadata(bookmark, txConfig, database, mode, impersonatedUser) + const metadata = buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser) return new RequestMessage( RUN, [query, parameters, metadata], @@ -225,7 +225,7 @@ export default class RequestMessage { * Generate the ROUTE message, this message is used to fetch the routing table from the server * * @param {object} routingContext The routing context used to define the routing table. Multi-datacenter deployments is one of its use cases - * @param {string[]} bookmarks The list of the bookmark should be used + * @param {string[]} bookmarks The list of the bookmarks should be used * @param {string} databaseName The name of the database to get the routing table for. * @return {RequestMessage} the ROUTE message. */ @@ -244,7 +244,7 @@ export default class RequestMessage { * Generate the ROUTE message, this message is used to fetch the routing table from the server * * @param {object} routingContext The routing context used to define the routing table. Multi-datacenter deployments is one of its use cases - * @param {string[]} bookmarks The list of the bookmark should be used + * @param {string[]} bookmarks The list of the bookmarks should be used * @param {object} databaseContext The context inforamtion of the database to get the routing table for. * @param {string} databaseContext.databaseName The name of the database to get the routing table. * @param {string} databaseContext.impersonatedUser The name of the user to impersonation when getting the routing table. @@ -274,17 +274,17 @@ export default class RequestMessage { /** * Create an object that represent transaction metadata. - * @param {Bookmark} bookmark the bookmark. + * @param {Bookmarks} bookmarks the bookmarks. * @param {TxConfig} txConfig the configuration. * @param {string} database the database name. * @param {string} mode the access mode. * @param {string} impersonatedUser the impersonated user mode. * @return {Object} a metadata object. */ -function buildTxMetadata (bookmark, txConfig, database, mode, impersonatedUser) { +function buildTxMetadata (bookmarks, txConfig, database, mode, impersonatedUser) { const metadata = {} - if (!bookmark.isEmpty()) { - metadata.bookmarks = bookmark.values() + if (!bookmarks.isEmpty()) { + metadata.bookmarks = bookmarks.values() } if (txConfig.timeout !== null) { metadata.tx_timeout = txConfig.timeout diff --git a/packages/bolt-connection/src/connection-provider/connection-provider-routing.js b/packages/bolt-connection/src/connection-provider/connection-provider-routing.js index 0dbe88b26..97e25f79a 100644 --- a/packages/bolt-connection/src/connection-provider/connection-provider-routing.js +++ b/packages/bolt-connection/src/connection-provider/connection-provider-routing.js @@ -31,7 +31,7 @@ import { const { SERVICE_UNAVAILABLE, SESSION_EXPIRED } = error const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, constants: { ACCESS_MODE_READ: READ, ACCESS_MODE_WRITE: WRITE, @@ -140,7 +140,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider const routingTable = await this._freshRoutingTable({ accessMode, database: context.database, - bookmark: bookmarks, + bookmarks: bookmarks, impersonatedUser, onDatabaseNameResolved: (databaseName) => { context.database = context.database || databaseName @@ -259,7 +259,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider return this._connectionPool.acquire(address) } - _freshRoutingTable ({ accessMode, database, bookmark, impersonatedUser, onDatabaseNameResolved } = {}) { + _freshRoutingTable ({ accessMode, database, bookmarks, impersonatedUser, onDatabaseNameResolved } = {}) { const currentRoutingTable = this._routingTableRegistry.get( database, () => new RoutingTable({ database }) @@ -271,17 +271,17 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider this._log.info( `Routing table is stale for database: "${database}" and access mode: "${accessMode}": ${currentRoutingTable}` ) - return this._refreshRoutingTable(currentRoutingTable, bookmark, impersonatedUser, onDatabaseNameResolved) + return this._refreshRoutingTable(currentRoutingTable, bookmarks, impersonatedUser, onDatabaseNameResolved) } - _refreshRoutingTable (currentRoutingTable, bookmark, impersonatedUser, onDatabaseNameResolved) { + _refreshRoutingTable (currentRoutingTable, bookmarks, impersonatedUser, onDatabaseNameResolved) { const knownRouters = currentRoutingTable.routers if (this._useSeedRouter) { return this._fetchRoutingTableFromSeedRouterFallbackToKnownRouters( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser, onDatabaseNameResolved ) @@ -289,7 +289,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider return this._fetchRoutingTableFromKnownRoutersFallbackToSeedRouter( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser, onDatabaseNameResolved ) @@ -298,7 +298,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider async _fetchRoutingTableFromSeedRouterFallbackToKnownRouters ( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser, onDatabaseNameResolved ) { @@ -308,7 +308,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider seenRouters, this._seedRouter, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser ) @@ -319,7 +319,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider newRoutingTable = await this._fetchRoutingTableUsingKnownRouters( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser ) } @@ -334,14 +334,14 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider async _fetchRoutingTableFromKnownRoutersFallbackToSeedRouter ( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser, onDatabaseNameResolved ) { let newRoutingTable = await this._fetchRoutingTableUsingKnownRouters( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser ) @@ -351,7 +351,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider knownRouters, this._seedRouter, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser ) } @@ -366,13 +366,13 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider async _fetchRoutingTableUsingKnownRouters ( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser ) { const newRoutingTable = await this._fetchRoutingTable( knownRouters, currentRoutingTable, - bookmark, + bookmarks, impersonatedUser ) @@ -397,7 +397,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider seenRouters, seedRouter, routingTable, - bookmark, + bookmarks, impersonatedUser ) { const resolvedAddresses = await this._resolveSeedRouter(seedRouter) @@ -407,7 +407,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider address => seenRouters.indexOf(address) < 0 ) - return await this._fetchRoutingTable(newAddresses, routingTable, bookmark, impersonatedUser) + return await this._fetchRoutingTable(newAddresses, routingTable, bookmarks, impersonatedUser) } async _resolveSeedRouter (seedRouter) { @@ -419,7 +419,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider return [].concat.apply([], dnsResolvedAddresses) } - _fetchRoutingTable (routerAddresses, routingTable, bookmark, impersonatedUser) { + _fetchRoutingTable (routerAddresses, routingTable, bookmarks, impersonatedUser) { return routerAddresses.reduce( async (refreshedTablePromise, currentRouter, currentIndex) => { const newRoutingTable = await refreshedTablePromise @@ -441,7 +441,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider // try next router const session = await this._createSessionForRediscovery( currentRouter, - bookmark, + bookmarks, impersonatedUser ) if (session) { @@ -474,7 +474,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider ) } - async _createSessionForRediscovery (routerAddress, bookmark, impersonatedUser) { + async _createSessionForRediscovery (routerAddress, bookmarks, impersonatedUser) { try { const connection = await this._connectionPool.acquire(routerAddress) @@ -490,7 +490,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider if (protocolVersion < 4.0) { return new Session({ mode: WRITE, - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), connectionProvider }) } @@ -498,7 +498,7 @@ export default class RoutingConnectionProvider extends PooledConnectionProvider return new Session({ mode: READ, database: SYSTEM_DB_NAME, - bookmark, + bookmarks, connectionProvider, impersonatedUser }) diff --git a/packages/bolt-connection/src/rediscovery/rediscovery.js b/packages/bolt-connection/src/rediscovery/rediscovery.js index 7067cbd24..096a26279 100644 --- a/packages/bolt-connection/src/rediscovery/rediscovery.js +++ b/packages/bolt-connection/src/rediscovery/rediscovery.js @@ -69,7 +69,7 @@ export default class Rediscovery { databaseName: database, impersonatedUser, sessionContext: { - bookmark: session._lastBookmark, + bookmarks: session._lastBookmarks, mode: session._mode, database: session._database, afterComplete: session._onComplete diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v1.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v1.test.js index fd48dce46..9686c7812 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v1.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v1.test.js @@ -26,7 +26,7 @@ import { LoginObserver } from '../../src/bolt/stream-observers' const WRITE = 'WRITE' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, txConfig: { TxConfig } } = internal @@ -96,7 +96,7 @@ describe('#unit BoltProtocolV1', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), mode: WRITE }) @@ -131,10 +131,10 @@ describe('#unit BoltProtocolV1', () => { new BoltProtocolV1(recorder, null, false) ) - const bookmark = new Bookmark('neo4j:bookmark:v1:tx42') + const bookmarks = new Bookmarks('neo4j:bookmark:v1:tx42') const observer = protocol.beginTransaction({ - bookmark: bookmark, + bookmarks: bookmarks, txConfig: TxConfig.empty(), mode: WRITE }) @@ -142,7 +142,7 @@ describe('#unit BoltProtocolV1', () => { protocol.verifyMessageCount(2) expect(protocol.messages[0]).toBeMessage( - RequestMessage.run('BEGIN', bookmark.asBeginTransactionParameters()) + RequestMessage.run('BEGIN', bookmarks.asBeginTransactionParameters()) ) expect(protocol.messages[1]).toBeMessage(RequestMessage.pullAll()) expect(protocol.observers).toEqual([observer, observer]) @@ -349,7 +349,7 @@ describe('#unit BoltProtocolV1', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), mode: WRITE, lowRecordWatermark: 100, diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v3.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v3.test.js index 78842e96b..02ba8a712 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v3.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v3.test.js @@ -27,7 +27,7 @@ import { } from '../../src/bolt/stream-observers' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, txConfig: { TxConfig } } = internal @@ -71,7 +71,7 @@ describe('#unit BoltProtocolV3', () => { }) it('should run a query', () => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -87,7 +87,7 @@ describe('#unit BoltProtocolV3', () => { const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark, + bookmarks, txConfig, mode: WRITE }) @@ -96,7 +96,7 @@ describe('#unit BoltProtocolV3', () => { expect(protocol.messages[0]).toBeMessage( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, mode: WRITE }) @@ -107,7 +107,7 @@ describe('#unit BoltProtocolV3', () => { }) it('should begin a transaction', () => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -120,14 +120,14 @@ describe('#unit BoltProtocolV3', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, mode: WRITE }) protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, mode: WRITE }) + RequestMessage.begin({ bookmarks, txConfig, mode: WRITE }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -170,7 +170,7 @@ describe('#unit BoltProtocolV3', () => { const protocol = new SpiedBoltProtocolV3(expectedResultObserver) utils.spyProtocolWrite(protocol) const routingContext = { abc: 'context ' } - const sessionContext = { bookmark: 'book' } + const sessionContext = { bookmarks: 'book' } const onError = () => {} const onCompleted = () => {} @@ -306,7 +306,7 @@ describe('#unit BoltProtocolV3', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), lowRecordWatermark: 100, highRecordWatermark: 200, diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v4x0.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v4x0.test.js index 75bcde5d5..22a1ca93d 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v4x0.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v4x0.test.js @@ -31,7 +31,7 @@ const WRITE = 'WRITE' const { txConfig: { TxConfig }, - bookmark: { Bookmark } + bookmarks: { Bookmarks } } = internal describe('#unit BoltProtocolV4x0', () => { @@ -41,7 +41,7 @@ describe('#unit BoltProtocolV4x0', () => { it('should run a query', () => { const database = 'testdb' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -57,7 +57,7 @@ describe('#unit BoltProtocolV4x0', () => { const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -67,7 +67,7 @@ describe('#unit BoltProtocolV4x0', () => { expect(protocol.messages[0]).toBeMessage( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -80,7 +80,7 @@ describe('#unit BoltProtocolV4x0', () => { it('should begin a transaction', () => { const database = 'testdb' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -93,7 +93,7 @@ describe('#unit BoltProtocolV4x0', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -101,7 +101,7 @@ describe('#unit BoltProtocolV4x0', () => { protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, database, mode: WRITE }) + RequestMessage.begin({ bookmarks, txConfig, database, mode: WRITE }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -118,7 +118,7 @@ describe('#unit BoltProtocolV4x0', () => { const protocol = new SpiedBoltProtocolV4x0(expectedResultObserver) utils.spyProtocolWrite(protocol) const routingContext = { abc: 'context ' } - const sessionContext = { bookmark: 'book' } + const sessionContext = { bookmarks: 'book' } const databaseName = 'the name' const onError = () => {} const onCompleted = () => {} @@ -225,7 +225,7 @@ describe('#unit BoltProtocolV4x0', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), lowRecordWatermark: 100, highRecordWatermark: 200, diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v4x1.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v4x1.test.js index 50164756a..9bf646094 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v4x1.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v4x1.test.js @@ -23,7 +23,7 @@ import { internal } from 'neo4j-driver-core' const { txConfig: { TxConfig }, - bookmark: { Bookmark } + bookmarks: { Bookmarks } } = internal describe('#unit BoltProtocolV4x1', () => { @@ -99,7 +99,7 @@ describe('#unit BoltProtocolV4x1', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), lowRecordWatermark: 100, highRecordWatermark: 200, diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v4x2.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v4x2.test.js index 982911ccf..d754c3d0e 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v4x2.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v4x2.test.js @@ -23,7 +23,7 @@ import { internal } from 'neo4j-driver-core' const { txConfig: { TxConfig }, - bookmark: { Bookmark } + bookmarks: { Bookmarks } } = internal describe('#unit BoltProtocolV4x2', () => { @@ -98,7 +98,7 @@ describe('#unit BoltProtocolV4x2', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), lowRecordWatermark: 100, highRecordWatermark: 200, diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v4x3.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v4x3.test.js index 0845ca616..a140de671 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v4x3.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v4x3.test.js @@ -27,7 +27,7 @@ const WRITE = 'WRITE' const { txConfig: { TxConfig }, - bookmark: { Bookmark } + bookmarks: { Bookmarks } } = internal describe('#unit BoltProtocolV4x3', () => { @@ -62,13 +62,13 @@ describe('#unit BoltProtocolV4x3', () => { utils.spyProtocolWrite(protocol) const routingContext = { someContextParam: 'value' } const listOfBookmarks = ['a', 'b', 'c'] - const bookmark = new Bookmark(listOfBookmarks) + const bookmarks = new Bookmarks(listOfBookmarks) const databaseName = 'name' const observer = protocol.requestRoutingInformation({ routingContext, databaseName, - sessionContext: { bookmark } + sessionContext: { bookmarks } }) protocol.verifyMessageCount(1) @@ -82,7 +82,7 @@ describe('#unit BoltProtocolV4x3', () => { it('should run a query', () => { const database = 'testdb' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -98,7 +98,7 @@ describe('#unit BoltProtocolV4x3', () => { const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -108,7 +108,7 @@ describe('#unit BoltProtocolV4x3', () => { expect(protocol.messages[0]).toBeMessage( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -120,7 +120,7 @@ describe('#unit BoltProtocolV4x3', () => { }) it('should begin a transaction', () => { const database = 'testdb' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -133,7 +133,7 @@ describe('#unit BoltProtocolV4x3', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -141,7 +141,7 @@ describe('#unit BoltProtocolV4x3', () => { protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, database, mode: WRITE }) + RequestMessage.begin({ bookmarks, txConfig, database, mode: WRITE }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -186,7 +186,7 @@ describe('#unit BoltProtocolV4x3', () => { }) it('should begin a transaction', () => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -199,14 +199,14 @@ describe('#unit BoltProtocolV4x3', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, mode: WRITE }) protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, mode: WRITE }) + RequestMessage.begin({ bookmarks, txConfig, mode: WRITE }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -310,7 +310,7 @@ describe('#unit BoltProtocolV4x3', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), lowRecordWatermark: 100, highRecordWatermark: 200, diff --git a/packages/bolt-connection/test/bolt/bolt-protocol-v4x4.test.js b/packages/bolt-connection/test/bolt/bolt-protocol-v4x4.test.js index 788b88d45..a44bfb717 100644 --- a/packages/bolt-connection/test/bolt/bolt-protocol-v4x4.test.js +++ b/packages/bolt-connection/test/bolt/bolt-protocol-v4x4.test.js @@ -27,7 +27,7 @@ const WRITE = 'WRITE' const { txConfig: { TxConfig }, - bookmark: { Bookmark } + bookmarks: { Bookmarks } } = internal describe('#unit BoltProtocolV4x4', () => { @@ -62,13 +62,13 @@ describe('#unit BoltProtocolV4x4', () => { utils.spyProtocolWrite(protocol) const routingContext = { someContextParam: 'value' } const listOfBookmarks = ['a', 'b', 'c'] - const bookmark = new Bookmark(listOfBookmarks) + const bookmarks = new Bookmarks(listOfBookmarks) const databaseName = 'name' const observer = protocol.requestRoutingInformation({ routingContext, databaseName, - sessionContext: { bookmark } + sessionContext: { bookmarks } }) protocol.verifyMessageCount(1) @@ -82,7 +82,7 @@ describe('#unit BoltProtocolV4x4', () => { it('should run a query', () => { const database = 'testdb' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -98,7 +98,7 @@ describe('#unit BoltProtocolV4x4', () => { const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -108,7 +108,7 @@ describe('#unit BoltProtocolV4x4', () => { expect(protocol.messages[0]).toBeMessage( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -122,7 +122,7 @@ describe('#unit BoltProtocolV4x4', () => { it('should run a with impersonated user', () => { const database = 'testdb' const impersonatedUser = 'the impostor' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -138,7 +138,7 @@ describe('#unit BoltProtocolV4x4', () => { const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE, @@ -149,7 +149,7 @@ describe('#unit BoltProtocolV4x4', () => { expect(protocol.messages[0]).toBeMessage( RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, database, mode: WRITE, @@ -163,7 +163,7 @@ describe('#unit BoltProtocolV4x4', () => { it('should begin a transaction', () => { const database = 'testdb' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -176,7 +176,7 @@ describe('#unit BoltProtocolV4x4', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, database, mode: WRITE @@ -184,7 +184,7 @@ describe('#unit BoltProtocolV4x4', () => { protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, database, mode: WRITE }) + RequestMessage.begin({ bookmarks, txConfig, database, mode: WRITE }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -193,7 +193,7 @@ describe('#unit BoltProtocolV4x4', () => { it('should begin a transaction with impersonated user', () => { const database = 'testdb' const impersonatedUser = 'the impostor' - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -206,7 +206,7 @@ describe('#unit BoltProtocolV4x4', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, database, mode: WRITE, @@ -215,7 +215,7 @@ describe('#unit BoltProtocolV4x4', () => { protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, database, mode: WRITE, impersonatedUser }) + RequestMessage.begin({ bookmarks, txConfig, database, mode: WRITE, impersonatedUser }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -260,7 +260,7 @@ describe('#unit BoltProtocolV4x4', () => { }) it('should begin a transaction', () => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2' ]) @@ -273,14 +273,14 @@ describe('#unit BoltProtocolV4x4', () => { utils.spyProtocolWrite(protocol) const observer = protocol.beginTransaction({ - bookmark, + bookmarks, txConfig, mode: WRITE }) protocol.verifyMessageCount(1) expect(protocol.messages[0]).toBeMessage( - RequestMessage.begin({ bookmark, txConfig, mode: WRITE }) + RequestMessage.begin({ bookmarks, txConfig, mode: WRITE }) ) expect(protocol.observers).toEqual([observer]) expect(protocol.flushes).toEqual([true]) @@ -343,7 +343,7 @@ describe('#unit BoltProtocolV4x4', () => { const query = 'RETURN $x, $y' const parameters = { x: 'x', y: 'y' } const observer = protocol.run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), lowRecordWatermark: 100, highRecordWatermark: 200, diff --git a/packages/bolt-connection/test/bolt/request-message.test.js b/packages/bolt-connection/test/bolt/request-message.test.js index 91765684c..4e6ec5b1c 100644 --- a/packages/bolt-connection/test/bolt/request-message.test.js +++ b/packages/bolt-connection/test/bolt/request-message.test.js @@ -21,7 +21,7 @@ import RequestMessage from '../../src/bolt/request-message' import { internal, int, json } from 'neo4j-driver-core' const { - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, txConfig: { TxConfig } } = internal @@ -86,16 +86,16 @@ describe('#unit RequestMessage', () => { it('should create BEGIN message', () => { ;[READ, WRITE].forEach(mode => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx10' ]) const txConfig = new TxConfig({ timeout: 42, metadata: { key: 42 } }) - const message = RequestMessage.begin({ bookmark, txConfig, mode }) + const message = RequestMessage.begin({ bookmarks, txConfig, mode }) const expectedMetadata = { - bookmarks: bookmark.values(), + bookmarks: bookmarks.values(), tx_timeout: int(42), tx_metadata: { key: 42 } } @@ -131,7 +131,7 @@ describe('#unit RequestMessage', () => { ;[READ, WRITE].forEach(mode => { const query = 'RETURN $x' const parameters = { x: 42 } - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx10', 'neo4j:bookmark:v1:tx100' @@ -142,13 +142,13 @@ describe('#unit RequestMessage', () => { }) const message = RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, mode }) const expectedMetadata = { - bookmarks: bookmark.values(), + bookmarks: bookmarks.values(), tx_timeout: int(999), tx_metadata: { a: 'a', b: 'b' } } @@ -297,17 +297,17 @@ describe('#unit RequestMessage', () => { it('should create BEGIN message with impersonated user', () => { ;[READ, WRITE].forEach(mode => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx10' ]) const impersonatedUser = 'the impostor' const txConfig = new TxConfig({ timeout: 42, metadata: { key: 42 } }) - const message = RequestMessage.begin({ bookmark, txConfig, mode, impersonatedUser }) + const message = RequestMessage.begin({ bookmarks, txConfig, mode, impersonatedUser }) const expectedMetadata = { - bookmarks: bookmark.values(), + bookmarks: bookmarks.values(), tx_timeout: int(42), tx_metadata: { key: 42 }, imp_user: impersonatedUser @@ -326,17 +326,17 @@ describe('#unit RequestMessage', () => { it('should create BEGIN message without impersonated user if it is not supplied or null', () => { ;[undefined, null].forEach(impersonatedUser => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx10' ]) const mode = WRITE const txConfig = new TxConfig({ timeout: 42, metadata: { key: 42 } }) - const message = RequestMessage.begin({ bookmark, txConfig, mode, impersonatedUser }) + const message = RequestMessage.begin({ bookmarks, txConfig, mode, impersonatedUser }) const expectedMetadata = { - bookmarks: bookmark.values(), + bookmarks: bookmarks.values(), tx_timeout: int(42), tx_metadata: { key: 42 } } @@ -353,7 +353,7 @@ describe('#unit RequestMessage', () => { ;[READ, WRITE].forEach(mode => { const query = 'RETURN $x' const parameters = { x: 42 } - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx10', 'neo4j:bookmark:v1:tx100' @@ -365,14 +365,14 @@ describe('#unit RequestMessage', () => { const impersonatedUser = 'the impostor' const message = RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, mode, impersonatedUser }) const expectedMetadata = { - bookmarks: bookmark.values(), + bookmarks: bookmarks.values(), tx_timeout: int(999), tx_metadata: { a: 'a', b: 'b' }, imp_user: impersonatedUser @@ -396,7 +396,7 @@ describe('#unit RequestMessage', () => { const mode = WRITE const query = 'RETURN $x' const parameters = { x: 42 } - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx10', 'neo4j:bookmark:v1:tx100' @@ -407,14 +407,14 @@ describe('#unit RequestMessage', () => { }) const message = RequestMessage.runWithMetadata(query, parameters, { - bookmark, + bookmarks, txConfig, mode, impersonatedUser }) const expectedMetadata = { - bookmarks: bookmark.values(), + bookmarks: bookmarks.values(), tx_timeout: int(999), tx_metadata: { a: 'a', b: 'b' } } diff --git a/packages/bolt-connection/test/connection-provider/connection-provider-routing.test.js b/packages/bolt-connection/test/connection-provider/connection-provider-routing.test.js index 509f5c8e8..c969bee71 100644 --- a/packages/bolt-connection/test/connection-provider/connection-provider-routing.test.js +++ b/packages/bolt-connection/test/connection-provider/connection-provider-routing.test.js @@ -2560,9 +2560,9 @@ function setupRoutingConnectionProviderToRememberRouters ( const originalFetch = connectionProvider._fetchRoutingTable.bind( connectionProvider ) - const rememberingFetch = (routerAddresses, routingTable, bookmark) => { + const rememberingFetch = (routerAddresses, routingTable, bookmarks) => { routersArray.push(routerAddresses) - return originalFetch(routerAddresses, routingTable, bookmark) + return originalFetch(routerAddresses, routingTable, bookmarks) } connectionProvider._fetchRoutingTable = rememberingFetch } diff --git a/packages/bolt-connection/test/rediscovery/rediscovery.test.js b/packages/bolt-connection/test/rediscovery/rediscovery.test.js index 7318755f6..13f39590d 100644 --- a/packages/bolt-connection/test/rediscovery/rediscovery.test.js +++ b/packages/bolt-connection/test/rediscovery/rediscovery.test.js @@ -108,7 +108,7 @@ describe('#unit Rediscovery', () => { expect(requestParams.routingContext).toEqual(routingContext) expect(requestParams.databaseName).toEqual(database) expect(requestParams.sessionContext).toEqual({ - bookmark: session._lastBookmark, + bookmarks: session._lastBookmarks, mode: session._mode, database: session._database, afterComplete: session._onComplete @@ -280,7 +280,7 @@ class FakeSession { constructor (connection) { this._connection = connection this._called = 0 - this._lastBookmark = 'lastBook' + this._lastBookmarks = ['lastBook'] this._mode = 'READ' this._database = 'session db' this._onComplete = 'moked' diff --git a/packages/core/src/connection-provider.ts b/packages/core/src/connection-provider.ts index 8880ba672..27c8c4786 100644 --- a/packages/core/src/connection-provider.ts +++ b/packages/core/src/connection-provider.ts @@ -18,7 +18,7 @@ */ import Connection from './connection' -import { bookmark } from './internal' +import { bookmarks } from './internal' /** @@ -39,14 +39,14 @@ class ConnectionProvider { * @param {object} param - object parameter * @property {string} param.accessMode - the access mode for the to-be-acquired connection * @property {string} param.database - the target database for the to-be-acquired connection - * @property {Bookmark} param.bookmarks - the bookmarks to send to routing discovery + * @property {Bookmarks} param.bookmarks - the bookmarks to send to routing discovery * @property {string} param.impersonatedUser - the impersonated user * @property {function (databaseName:string?)} param.onDatabaseNameResolved - Callback called when the database name get resolved */ acquireConnection(param?: { accessMode?: string database?: string - bookmarks: bookmark.Bookmark, + bookmarks: bookmarks.Bookmarks, impersonatedUser?: string, onDatabaseNameResolved?: (databaseName?: string) => void }): Promise { diff --git a/packages/core/src/driver.ts b/packages/core/src/driver.ts index 3e6910ec8..0737f4104 100644 --- a/packages/core/src/driver.ts +++ b/packages/core/src/driver.ts @@ -18,7 +18,7 @@ */ import ConnectionProvider from './connection-provider' -import { Bookmark } from './internal/bookmark' +import { Bookmarks } from './internal/bookmarks' import { ConnectivityVerifier } from './internal/connectivity-verifier' import ConfiguredCustomResolver from './internal/resolver/configured-custom-resolver' @@ -81,7 +81,7 @@ type CreateConnectionProvider = ( type CreateSession = (args: { mode: SessionMode connectionProvider: ConnectionProvider - bookmark?: Bookmark + bookmarks?: Bookmarks database: string config: any reactive: boolean @@ -321,14 +321,14 @@ class Driver { }) { const sessionMode = Session._validateSessionMode(defaultAccessMode) const connectionProvider = this._getOrCreateConnectionProvider() - const bookmark = bookmarkOrBookmarks - ? new Bookmark(bookmarkOrBookmarks) - : Bookmark.empty() + const bookmarks = bookmarkOrBookmarks + ? new Bookmarks(bookmarkOrBookmarks) + : Bookmarks.empty() return this._createSession({ mode: sessionMode, database: database || '', connectionProvider, - bookmark, + bookmarks, config: this._config, reactive, impersonatedUser, diff --git a/packages/core/src/internal/bookmark.ts b/packages/core/src/internal/bookmarks.ts similarity index 79% rename from packages/core/src/internal/bookmark.ts rename to packages/core/src/internal/bookmarks.ts index 085718f76..dd9dc3cb8 100644 --- a/packages/core/src/internal/bookmark.ts +++ b/packages/core/src/internal/bookmarks.ts @@ -21,7 +21,7 @@ import * as util from './util' const BOOKMARKS_KEY = 'bookmarks' -export class Bookmark { +export class Bookmarks { private _values: string[] /** @@ -32,20 +32,20 @@ export class Bookmark { this._values = asStringArray(values) } - static empty(): Bookmark { + static empty(): Bookmarks { return EMPTY_BOOKMARK } /** - * Check if the given bookmark is meaningful and can be send to the database. - * @return {boolean} returns `true` bookmark has a value, `false` otherwise. + * Check if the given Bookmarks holder is meaningful and can be send to the database. + * @return {boolean} returns `true` bookmarks has a value, `false` otherwise. */ isEmpty(): boolean { return this._values.length === 0 } /** - * Get all bookmark values as an array. + * Get all bookmarks values as an array. * @return {string[]} all values. */ values(): string[] { @@ -53,17 +53,17 @@ export class Bookmark { } /** - * Get this bookmark as an object for begin transaction call. - * @return {Object} the value of this bookmark as object. + * Get these bookmarks as an object for begin transaction call. + * @return {Object} the value of this bookmarks holder as object. */ asBeginTransactionParameters(): { [BOOKMARKS_KEY]?: string[] } { if (this.isEmpty()) { return {} } - // Driver sends {bookmark: "max", bookmarks: ["one", "two", "max"]} instead of simple + // Driver sends {bookmarks: "max", bookmarks: ["one", "two", "max"]} instead of simple // {bookmarks: ["one", "two", "max"]} for backwards compatibility reasons. Old servers can only accept single - // bookmark that is why driver has to parse and compare given list of bookmarks. This functionality will + // bookmarks that is why driver has to parse and compare given list of bookmarks. This functionality will // eventually be removed. return { [BOOKMARKS_KEY]: this._values @@ -71,7 +71,7 @@ export class Bookmark { } } -const EMPTY_BOOKMARK = new Bookmark(null) +const EMPTY_BOOKMARK = new Bookmarks(null) /** * Converts given value to an array. @@ -108,7 +108,7 @@ function asStringArray( } throw new TypeError( - `Bookmark should either be a string or a string array, given: '${value}'` + `Bookmarks should either be a string or a string array, given: '${value}'` ) } diff --git a/packages/core/src/internal/connection-holder.ts b/packages/core/src/internal/connection-holder.ts index 4c5b88eb4..e9e7471c9 100644 --- a/packages/core/src/internal/connection-holder.ts +++ b/packages/core/src/internal/connection-holder.ts @@ -21,7 +21,7 @@ import { newError } from '../error' import { assertString } from './util' import Connection from '../connection' import { ACCESS_MODE_WRITE } from './constants' -import { Bookmark } from './bookmark' +import { Bookmarks } from './bookmarks' import ConnectionProvider from '../connection-provider' import { Point } from '..' @@ -42,9 +42,9 @@ interface ConnectionHolderInterface { database(): string | undefined /** - * Returns the bookmark + * Returns the bookmarks */ - bookmark(): Bookmark + bookmarks(): Bookmarks /** * Make this holder initialize new connection if none exists already. @@ -78,7 +78,7 @@ interface ConnectionHolderInterface { class ConnectionHolder implements ConnectionHolderInterface { private _mode: string private _database?: string - private _bookmark: Bookmark + private _bookmarks: Bookmarks private _connectionProvider?: ConnectionProvider private _referenceCount: number private _connectionPromise: Promise @@ -90,7 +90,7 @@ class ConnectionHolder implements ConnectionHolderInterface { * @param {object} params * @property {string} params.mode - the access mode for new connection holder. * @property {string} params.database - the target database name. - * @property {Bookmark} params.bookmark - the last bookmark + * @property {Bookmarks} params.bookmarks - initial bookmarks * @property {ConnectionProvider} params.connectionProvider - the connection provider to acquire connections from. * @property {string?} params.impersonatedUser - the user which will be impersonated * @property {function(databaseName:string)} params.onDatabaseNameResolved - callback called when the database name is resolved @@ -98,21 +98,21 @@ class ConnectionHolder implements ConnectionHolderInterface { constructor({ mode = ACCESS_MODE_WRITE, database = '', - bookmark, + bookmarks, connectionProvider, impersonatedUser, onDatabaseNameResolved }: { mode?: string database?: string - bookmark?: Bookmark + bookmarks?: Bookmarks connectionProvider?: ConnectionProvider, impersonatedUser?: string, onDatabaseNameResolved?: (databaseName?: string) => void } = {}) { this._mode = mode this._database = database ? assertString(database, 'database') : '' - this._bookmark = bookmark || Bookmark.empty() + this._bookmarks = bookmarks || Bookmarks.empty() this._connectionProvider = connectionProvider this._impersonatedUser = impersonatedUser this._referenceCount = 0 @@ -132,8 +132,8 @@ class ConnectionHolder implements ConnectionHolderInterface { this._database = database } - bookmark(): Bookmark { - return this._bookmark + bookmarks(): Bookmarks { + return this._bookmarks } connectionProvider(): ConnectionProvider | undefined { @@ -149,7 +149,7 @@ class ConnectionHolder implements ConnectionHolderInterface { this._connectionPromise = this._connectionProvider.acquireConnection({ accessMode: this._mode, database: this._database, - bookmarks: this._bookmark, + bookmarks: this._bookmarks, impersonatedUser: this._impersonatedUser, onDatabaseNameResolved: this._onDatabaseNameResolved }) @@ -228,7 +228,7 @@ export default class ReadOnlyConnectionHolder extends ConnectionHolder { super({ mode: connectionHolder.mode(), database: connectionHolder.database(), - bookmark: connectionHolder.bookmark(), + bookmarks: connectionHolder.bookmarks(), connectionProvider: connectionHolder.connectionProvider() }) this._connectionHolder = connectionHolder diff --git a/packages/core/src/internal/index.ts b/packages/core/src/internal/index.ts index 9e3150329..8959e027e 100644 --- a/packages/core/src/internal/index.ts +++ b/packages/core/src/internal/index.ts @@ -20,7 +20,7 @@ import * as util from './util' import * as temporalUtil from './temporal-util' import * as observer from './observers' -import * as bookmark from './bookmark' +import * as bookmarks from './bookmarks' import * as constants from './constants' import * as connectionHolder from './connection-holder' import * as txConfig from './tx-config' @@ -36,7 +36,7 @@ export { util, temporalUtil, observer, - bookmark, + bookmarks, constants, connectionHolder, txConfig, diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts index 5253abb1b..0cf4de8f9 100644 --- a/packages/core/src/session.ts +++ b/packages/core/src/session.ts @@ -25,7 +25,7 @@ import Transaction from './transaction' import { ConnectionHolder } from './internal/connection-holder' import { ACCESS_MODE_READ, ACCESS_MODE_WRITE } from './internal/constants' import { TransactionExecutor } from './internal/transaction-executor' -import { Bookmark } from './internal/bookmark' +import { Bookmarks } from './internal/bookmarks' import { TxConfig } from './internal/tx-config' import ConnectionProvider from './connection-provider' import { Query, SessionMode } from './types' @@ -56,7 +56,7 @@ class Session { private _writeConnectionHolder: ConnectionHolder private _open: boolean private _hasTx: boolean - private _lastBookmark: Bookmark + private _lastBookmarks: Bookmarks private _transactionExecutor: TransactionExecutor private _impersonatedUser?: string private _onComplete: (meta: any) => void @@ -70,7 +70,7 @@ class Session { * @param {Object} args * @param {string} args.mode the default access mode for this session. * @param {ConnectionProvider} args.connectionProvider - The connection provider to acquire connections from. - * @param {Bookmark} args.bookmark - The initial bookmark for this session. + * @param {Bookmarks} args.bookmarks - The initial bookmarks for this session. * @param {string} args.database the database name * @param {Object} args.config={} - This driver configuration. * @param {boolean} args.reactive - Whether this session should create reactive streams @@ -80,7 +80,7 @@ class Session { constructor({ mode, connectionProvider, - bookmark, + bookmarks, database, config, reactive, @@ -89,7 +89,7 @@ class Session { }: { mode: SessionMode connectionProvider: ConnectionProvider - bookmark?: Bookmark + bookmarks?: Bookmarks database: string config: any reactive: boolean @@ -104,7 +104,7 @@ class Session { this._readConnectionHolder = new ConnectionHolder({ mode: ACCESS_MODE_READ, database, - bookmark, + bookmarks, connectionProvider, impersonatedUser, onDatabaseNameResolved: this._onDatabaseNameResolved @@ -112,7 +112,7 @@ class Session { this._writeConnectionHolder = new ConnectionHolder({ mode: ACCESS_MODE_WRITE, database, - bookmark, + bookmarks, connectionProvider, impersonatedUser, onDatabaseNameResolved: this._onDatabaseNameResolved @@ -120,7 +120,7 @@ class Session { this._open = true this._hasTx = false this._impersonatedUser = impersonatedUser - this._lastBookmark = bookmark || Bookmark.empty() + this._lastBookmarks = bookmarks || Bookmarks.empty() this._transactionExecutor = _createTransactionExecutor(config) this._onComplete = this._onCompleteCallback.bind(this) this._databaseNameResolved = this._database !== '' @@ -156,7 +156,7 @@ class Session { return this._run(validatedQuery, params, connection => { this._assertSessionIsOpen() return (connection as Connection).protocol().run(validatedQuery, params, { - bookmark: this._lastBookmark, + bookmarks: this._lastBookmarks, txConfig: autoCommitTxConfig, mode: this._mode, database: this._database, @@ -275,14 +275,14 @@ class Session { connectionHolder, impersonatedUser: this._impersonatedUser, onClose: this._transactionClosed.bind(this), - onBookmark: this._updateBookmark.bind(this), + onBookmarks: this._updateBookmarks.bind(this), onConnection: this._assertSessionIsOpen.bind(this), reactive: this._reactive, fetchSize: this._fetchSize, lowRecordWatermark: this._lowRecordWatermark, highRecordWatermark: this._highRecordWatermark }) - tx._begin(this._lastBookmark, txConfig) + tx._begin(this._lastBookmarks, txConfig) return tx } @@ -305,12 +305,12 @@ class Session { } /** - * Return the bookmark received following the last completed {@link Transaction}. + * Return the bookmarks received following the last completed {@link Transaction}. * * @return {string[]} A reference to a previous transaction. */ - lastBookmark(): string[] { - return this._lastBookmark.values() + lastBookmarks(): string[] { + return this._lastBookmarks.values() } /** @@ -385,14 +385,14 @@ class Session { } /** - * Update value of the last bookmark. + * Update value of the last bookmarks. * @private - * @param {Bookmark} newBookmark - The new bookmark. + * @param {Bookmarks} newBookmarks - The new bookmarks. * @returns {void} */ - _updateBookmark(newBookmark?: Bookmark): void { - if (newBookmark && !newBookmark.isEmpty()) { - this._lastBookmark = newBookmark + _updateBookmarks(newBookmarks?: Bookmarks): void { + if (newBookmarks && !newBookmarks.isEmpty()) { + this._lastBookmarks = newBookmarks } } @@ -426,16 +426,16 @@ class Session { * @returns {void} */ _onCompleteCallback(meta: { bookmark: string | string[] }): void { - this._updateBookmark(new Bookmark(meta.bookmark)) + this._updateBookmarks(new Bookmarks(meta.bookmark)) } /** - * @private + * @private * @returns {void} */ private _calculateWatermaks(): { low: number; high: number } { if (this._fetchSize === FETCH_ALL) { - return { + return { low: Number.MAX_VALUE, // we shall always lower than this number to enable auto pull high: Number.MAX_VALUE // we shall never reach this number to disable auto pull } diff --git a/packages/core/src/transaction.ts b/packages/core/src/transaction.ts index 5c11262a1..e204e5fcd 100644 --- a/packages/core/src/transaction.ts +++ b/packages/core/src/transaction.ts @@ -23,7 +23,7 @@ import { ReadOnlyConnectionHolder, EMPTY_CONNECTION_HOLDER } from './internal/connection-holder' -import { Bookmark } from './internal/bookmark' +import { Bookmarks } from './internal/bookmarks' import { TxConfig } from './internal/tx-config' import { @@ -46,7 +46,7 @@ class Transaction { private _reactive: boolean private _state: any private _onClose: () => void - private _onBookmark: (bookmark: Bookmark) => void + private _onBookmarks: (bookmarks: Bookmarks) => void private _onConnection: () => void private _onError: (error: Error) => Promise private _onComplete: (metadata: any) => void @@ -60,7 +60,7 @@ class Transaction { * @constructor * @param {ConnectionHolder} connectionHolder - the connection holder to get connection from. * @param {function()} onClose - Function to be called when transaction is committed or rolled back. - * @param {function(bookmark: Bookmark)} onBookmark callback invoked when new bookmark is produced. + * @param {function(bookmarks: Bookmarks)} onBookmarks callback invoked when new bookmark is produced. * * @param {function()} onConnection - Function to be called when a connection is obtained to ensure the conneciton * is not yet released. * @param {boolean} reactive whether this transaction generates reactive streams @@ -70,7 +70,7 @@ class Transaction { constructor({ connectionHolder, onClose, - onBookmark, + onBookmarks, onConnection, reactive, fetchSize, @@ -80,7 +80,7 @@ class Transaction { }: { connectionHolder: ConnectionHolder onClose: () => void - onBookmark: (bookmark: Bookmark) => void + onBookmarks: (bookmarks: Bookmarks) => void onConnection: () => void reactive: boolean fetchSize: number @@ -92,7 +92,7 @@ class Transaction { this._reactive = reactive this._state = _states.ACTIVE this._onClose = onClose - this._onBookmark = onBookmark + this._onBookmarks = onBookmarks this._onConnection = onConnection this._onError = this._onErrorCallback.bind(this) this._onComplete = this._onCompleteCallback.bind(this) @@ -105,18 +105,18 @@ class Transaction { /** * @private - * @param {Bookmark | string | string []} bookmark + * @param {Bookmarks | string | string []} bookmarks * @param {TxConfig} txConfig * @returns {void} */ - _begin(bookmark: Bookmark | string | string[], txConfig: TxConfig): void { + _begin(bookmarks: Bookmarks | string | string[], txConfig: TxConfig): void { this._connectionHolder .getConnection() .then(connection => { this._onConnection() if (connection) { return connection.protocol().beginTransaction({ - bookmark: bookmark, + bookmarks: bookmarks, txConfig: txConfig, mode: this._connectionHolder.mode(), database: this._connectionHolder.database(), @@ -233,11 +233,11 @@ class Transaction { /** * @private - * @param {object} meta The meta with bookmark + * @param {object} meta The meta with bookmarks * @returns {void} */ _onCompleteCallback(meta: { bookmark?: string | string[] }): void { - this._onBookmark(new Bookmark(meta.bookmark)) + this._onBookmarks(new Bookmarks(meta.bookmark)) } } @@ -320,7 +320,7 @@ const _states = { onConnection() if (conn) { return conn.protocol().run(query, parameters, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), beforeError: onError, afterComplete: onComplete, diff --git a/packages/core/test/driver.test.ts b/packages/core/test/driver.test.ts index ab3071dad..36f8efd70 100644 --- a/packages/core/test/driver.test.ts +++ b/packages/core/test/driver.test.ts @@ -18,14 +18,14 @@ */ import { ConnectionProvider, newError, Session } from '../src' import Driver from '../src/driver' -import { Bookmark } from '../src/internal/bookmark' +import { Bookmarks } from '../src/internal/bookmarks' import { Logger } from '../src/internal/logger' import { ConfiguredCustomResolver } from '../src/internal/resolver' describe('Driver', () => { let driver: Driver | null let connectionProvider: ConnectionProvider - let createSession: any + let createSession: any const META_INFO = { routing: false, typename: '', @@ -138,7 +138,7 @@ describe('Driver', () => { function expectedSessionParams(extra: any = {}) { return { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), config: { connectionAcquisitionTimeout: 60000, fetchSize: 1000, diff --git a/packages/core/test/transaction.test.ts b/packages/core/test/transaction.test.ts index d4a8546dc..ae2bc4739 100644 --- a/packages/core/test/transaction.test.ts +++ b/packages/core/test/transaction.test.ts @@ -18,7 +18,7 @@ */ import { ConnectionProvider, Transaction } from "../src"; -import { Bookmark } from "../src/internal/bookmark"; +import { Bookmarks } from "../src/internal/bookmarks"; import { ConnectionHolder } from "../src/internal/connection-holder"; import FakeConnection from "./utils/connection.fake"; @@ -83,7 +83,7 @@ function newTransaction({ const transaction = new Transaction({ connectionHolder, onClose: () => { }, - onBookmark: (_: Bookmark) => { }, + onBookmarks: (_: Bookmarks) => { }, onConnection: () => { }, reactive: false, fetchSize, diff --git a/packages/neo4j-driver/src/session-rx.js b/packages/neo4j-driver/src/session-rx.js index ffbadeb64..71d72f6d5 100644 --- a/packages/neo4j-driver/src/session-rx.js +++ b/packages/neo4j-driver/src/session-rx.js @@ -122,18 +122,18 @@ export default class RxSession { } /** - * Returns the bookmark received following the last successfully completed query, which is executed + * Returns the bookmarks received following the last successfully completed query, which is executed * either in an {@link RxTransaction} obtained from this session instance or directly through one of * the {@link RxSession#run} method of this session instance. * - * If no bookmark was received or if this transaction was rolled back, the bookmark value will not be + * If no bookmarks were received or if this transaction was rolled back, the bookmarks value will not be * changed. * * @public * @returns {string} */ - lastBookmark () { - return this._session.lastBookmark() + lastBookmarks () { + return this._session.lastBookmarks() } /** diff --git a/packages/neo4j-driver/test/bolt-v3.test.js b/packages/neo4j-driver/test/bolt-v3.test.js index 556325091..33d05783f 100644 --- a/packages/neo4j-driver/test/bolt-v3.test.js +++ b/packages/neo4j-driver/test/bolt-v3.test.js @@ -361,28 +361,28 @@ describe('#integration Bolt V3 API', () => { return } - const initialBookmark = session.lastBookmark() + const initialBookmarks = session.lastBookmarks() await session.run('CREATE ()') - const bookmark1 = session.lastBookmark() - expect(bookmark1).not.toBeNull() - expect(bookmark1).toBeDefined() - expect(bookmark1).not.toEqual(initialBookmark) + const bookmarks1 = session.lastBookmarks() + expect(bookmarks1).not.toBeNull() + expect(bookmarks1).toBeDefined() + expect(bookmarks1).not.toEqual(initialBookmarks) await session.run('CREATE ()') - const bookmark2 = session.lastBookmark() - expect(bookmark2).not.toBeNull() - expect(bookmark2).toBeDefined() - expect(bookmark2).not.toEqual(initialBookmark) - expect(bookmark2).not.toEqual(bookmark1) + const bookmarks2 = session.lastBookmarks() + expect(bookmarks2).not.toBeNull() + expect(bookmarks2).toBeDefined() + expect(bookmarks2).not.toEqual(initialBookmarks) + expect(bookmarks2).not.toEqual(bookmarks1) await session.run('CREATE ()') - const bookmark3 = session.lastBookmark() - expect(bookmark3).not.toBeNull() - expect(bookmark3).toBeDefined() - expect(bookmark3).not.toEqual(initialBookmark) - expect(bookmark3).not.toEqual(bookmark1) - expect(bookmark3).not.toEqual(bookmark2) + const bookmarks3 = session.lastBookmarks() + expect(bookmarks3).not.toBeNull() + expect(bookmarks3).toBeDefined() + expect(bookmarks3).not.toEqual(initialBookmarks) + expect(bookmarks3).not.toEqual(bookmarks1) + expect(bookmarks3).not.toEqual(bookmarks2) }, 20000) it('should use bookmarks for auto commit and explicit transactions', async () => { @@ -390,32 +390,32 @@ describe('#integration Bolt V3 API', () => { return } - const initialBookmark = session.lastBookmark() + const initialBookmarks = session.lastBookmarks() const tx1 = session.beginTransaction() await tx1.run('CREATE ()') await tx1.commit() - const bookmark1 = session.lastBookmark() - expect(bookmark1).not.toBeNull() - expect(bookmark1).toBeDefined() - expect(bookmark1).not.toEqual(initialBookmark) + const bookmarks1 = session.lastBookmarks() + expect(bookmarks1).not.toBeNull() + expect(bookmarks1).toBeDefined() + expect(bookmarks1).not.toEqual(initialBookmarks) await session.run('CREATE ()') - const bookmark2 = session.lastBookmark() - expect(bookmark2).not.toBeNull() - expect(bookmark2).toBeDefined() - expect(bookmark2).not.toEqual(initialBookmark) - expect(bookmark2).not.toEqual(bookmark1) + const bookmarks2 = session.lastBookmarks() + expect(bookmarks2).not.toBeNull() + expect(bookmarks2).toBeDefined() + expect(bookmarks2).not.toEqual(initialBookmarks) + expect(bookmarks2).not.toEqual(bookmarks1) const tx2 = session.beginTransaction() await tx2.run('CREATE ()') await tx2.commit() - const bookmark3 = session.lastBookmark() - expect(bookmark3).not.toBeNull() - expect(bookmark3).toBeDefined() - expect(bookmark3).not.toEqual(initialBookmark) - expect(bookmark3).not.toEqual(bookmark1) - expect(bookmark3).not.toEqual(bookmark2) + const bookmarks3 = session.lastBookmarks() + expect(bookmarks3).not.toBeNull() + expect(bookmarks3).toBeDefined() + expect(bookmarks3).not.toEqual(initialBookmarks) + expect(bookmarks3).not.toEqual(bookmarks1) + expect(bookmarks3).not.toEqual(bookmarks2) }, 20000) it('should use bookmarks for auto commit transactions and transaction functions', async () => { @@ -423,28 +423,28 @@ describe('#integration Bolt V3 API', () => { return } - const initialBookmark = session.lastBookmark() + const initialBookmarks = session.lastBookmarks() await session.writeTransaction(tx => tx.run('CREATE ()')) - const bookmark1 = session.lastBookmark() - expect(bookmark1).not.toBeNull() - expect(bookmark1).toBeDefined() - expect(bookmark1).not.toEqual(initialBookmark) + const bookmarks1 = session.lastBookmarks() + expect(bookmarks1).not.toBeNull() + expect(bookmarks1).toBeDefined() + expect(bookmarks1).not.toEqual(initialBookmarks) await session.run('CREATE ()') - const bookmark2 = session.lastBookmark() - expect(bookmark2).not.toBeNull() - expect(bookmark2).toBeDefined() - expect(bookmark2).not.toEqual(initialBookmark) - expect(bookmark2).not.toEqual(bookmark1) + const bookmarks2 = session.lastBookmarks() + expect(bookmarks2).not.toBeNull() + expect(bookmarks2).toBeDefined() + expect(bookmarks2).not.toEqual(initialBookmarks) + expect(bookmarks2).not.toEqual(bookmarks1) await session.writeTransaction(tx => tx.run('CREATE ()')) - const bookmark3 = session.lastBookmark() - expect(bookmark3).not.toBeNull() - expect(bookmark3).toBeDefined() - expect(bookmark3).not.toEqual(initialBookmark) - expect(bookmark3).not.toEqual(bookmark1) - expect(bookmark3).not.toEqual(bookmark2) + const bookmarks3 = session.lastBookmarks() + expect(bookmarks3).not.toBeNull() + expect(bookmarks3).toBeDefined() + expect(bookmarks3).not.toEqual(initialBookmarks) + expect(bookmarks3).not.toEqual(bookmarks1) + expect(bookmarks3).not.toEqual(bookmarks2) }, 20000) async function testTransactionMetadataWithTransactionFunctions (read) { diff --git a/packages/neo4j-driver/test/examples.test.js b/packages/neo4j-driver/test/examples.test.js index f0c42dd94..b7ac87fed 100644 --- a/packages/neo4j-driver/test/examples.test.js +++ b/packages/neo4j-driver/test/examples.test.js @@ -1017,7 +1017,7 @@ describe('#integration examples', () => { ) ) .then(() => { - savedBookmarks.push(session1.lastBookmark()) + savedBookmarks.push(session1.lastBookmarks()) }) .then(() => session1.close()) @@ -1030,7 +1030,7 @@ describe('#integration examples', () => { session2.writeTransaction(tx => addEmployee(tx, 'Bob', 'LexCorp')) ) .then(() => { - savedBookmarks.push(session2.lastBookmark()) + savedBookmarks.push(session2.lastBookmarks()) }) .then(() => session2.close()) diff --git a/packages/neo4j-driver/test/internal/bookmark.test.js b/packages/neo4j-driver/test/internal/bookmark.test.js index e547aea6c..98fed043b 100644 --- a/packages/neo4j-driver/test/internal/bookmark.test.js +++ b/packages/neo4j-driver/test/internal/bookmark.test.js @@ -19,62 +19,62 @@ import { internal } from 'neo4j-driver-core' const { - bookmark: { Bookmark } + bookmarks: { Bookmarks } } = internal -describe('#unit Bookmark', () => { - it('should be possible to construct bookmark from string', () => { - const bookmark = new Bookmark('neo4j:bookmark:v1:tx412') +describe('#unit Bookmarks', () => { + it('should be possible to construct bookmarks from string', () => { + const bookmarks = new Bookmarks('neo4j:bookmark:v1:tx412') - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.values()).toEqual(['neo4j:bookmark:v1:tx412']) + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.values()).toEqual(['neo4j:bookmark:v1:tx412']) }) - it('should be possible to construct bookmark from string array', () => { - const bookmark = new Bookmark([ + it('should be possible to construct bookmarks from string array', () => { + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2', 'neo4j:bookmark:v1:tx3' ]) - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.values()).toEqual([ + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.values()).toEqual([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2', 'neo4j:bookmark:v1:tx3' ]) }) - it('should be possible to construct bookmark from null', () => { - const bookmark = new Bookmark(null) + it('should be possible to construct bookmarks from null', () => { + const bookmarks = new Bookmarks(null) - expect(bookmark.isEmpty()).toBeTruthy() - expect(bookmark.values()).toEqual([]) + expect(bookmarks.isEmpty()).toBeTruthy() + expect(bookmarks.values()).toEqual([]) }) - it('should be possible to construct bookmark from undefined', () => { - const bookmark = new Bookmark(undefined) + it('should be possible to construct bookmarks from undefined', () => { + const bookmarks = new Bookmarks(undefined) - expect(bookmark.isEmpty()).toBeTruthy() - expect(bookmark.values()).toEqual([]) + expect(bookmarks.isEmpty()).toBeTruthy() + expect(bookmarks.values()).toEqual([]) }) - it('should be possible to construct bookmark from an empty string', () => { - const bookmark = new Bookmark('') + it('should be possible to construct bookmarks from an empty string', () => { + const bookmarks = new Bookmarks('') - expect(bookmark.isEmpty()).toBeTruthy() - expect(bookmark.values()).toEqual([]) + expect(bookmarks.isEmpty()).toBeTruthy() + expect(bookmarks.values()).toEqual([]) }) - it('should be possible to construct bookmark from empty array', () => { - const bookmark = new Bookmark([]) + it('should be possible to construct bookmarks from empty array', () => { + const bookmarks = new Bookmarks([]) - expect(bookmark.isEmpty()).toBeTruthy() - expect(bookmark.values()).toEqual([]) + expect(bookmarks.isEmpty()).toBeTruthy() + expect(bookmarks.values()).toEqual([]) }) - it('should be possible to construct bookmark from nested arrays', () => { - const bookmark = new Bookmark([ + it('should be possible to construct bookmarks from nested arrays', () => { + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', ['neo4j:bookmark:v1:tx2'], [ @@ -83,8 +83,8 @@ describe('#unit Bookmark', () => { ] ]) - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.values()).toEqual([ + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.values()).toEqual([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2', 'neo4j:bookmark:v1:tx3', @@ -94,8 +94,8 @@ describe('#unit Bookmark', () => { ]) }) - it('should be possible to construct bookmark from nested arrays with null and undefined elements', () => { - const bookmark = new Bookmark([ + it('should be possible to construct bookmarks from nested arrays with null and undefined elements', () => { + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', null, undefined, @@ -107,8 +107,8 @@ describe('#unit Bookmark', () => { ] ]) - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.values()).toEqual([ + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.values()).toEqual([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2', 'neo4j:bookmark:v1:tx3', @@ -118,39 +118,39 @@ describe('#unit Bookmark', () => { ]) }) - it('should not be possible to construct bookmark from object', () => { - expect(() => new Bookmark({})).toThrowError(TypeError) + it('should not be possible to construct bookmarks from object', () => { + expect(() => new Bookmarks({})).toThrowError(TypeError) expect( - () => new Bookmark({ bookmark: 'neo4j:bookmark:v1:tx1' }) + () => new Bookmarks({ bookmarks: 'neo4j:bookmark:v1:tx1' }) ).toThrowError(TypeError) }) - it('should not be possible to construct bookmark from number array', () => { - expect(() => new Bookmark([1, 2, 3])).toThrowError(TypeError) + it('should not be possible to construct bookmarks from number array', () => { + expect(() => new Bookmarks([1, 2, 3])).toThrowError(TypeError) }) - it('should not be possible to construct bookmark from mixed array', () => { + it('should not be possible to construct bookmarks from mixed array', () => { expect( - () => new Bookmark(['neo4j:bookmark:v1:tx1', 2, 'neo4j:bookmark:v1:tx3']) + () => new Bookmarks(['neo4j:bookmark:v1:tx1', 2, 'neo4j:bookmark:v1:tx3']) ).toThrowError(TypeError) }) - it('should keep unparsable bookmark', () => { - const bookmark = new Bookmark('neo4j:bookmark:v1:txWrong') + it('should keep unparsable bookmarks', () => { + const bookmarks = new Bookmarks('neo4j:bookmark:v1:txWrong') - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.values()).toEqual(['neo4j:bookmark:v1:txWrong']) + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.values()).toEqual(['neo4j:bookmark:v1:txWrong']) }) it('should keep unparsable bookmarks', () => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx42', 'neo4j:bookmark:v1:txWrong', 'neo4j:bookmark:v1:tx4242' ]) - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.values()).toEqual([ + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.values()).toEqual([ 'neo4j:bookmark:v1:tx42', 'neo4j:bookmark:v1:txWrong', 'neo4j:bookmark:v1:tx4242' @@ -158,31 +158,31 @@ describe('#unit Bookmark', () => { }) it('should turn into empty transaction params when empty', () => { - const bookmark = new Bookmark(null) + const bookmarks = new Bookmarks(null) - expect(bookmark.isEmpty()).toBeTruthy() - expect(bookmark.asBeginTransactionParameters()).toEqual({}) + expect(bookmarks.isEmpty()).toBeTruthy() + expect(bookmarks.asBeginTransactionParameters()).toEqual({}) }) - it('should turn into transaction params when represents single bookmark', () => { - const bookmark = new Bookmark('neo4j:bookmark:v1:tx142') + it('should turn into transaction params when represents single bookmarks', () => { + const bookmarks = new Bookmarks('neo4j:bookmark:v1:tx142') - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.asBeginTransactionParameters()).toEqual({ + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.asBeginTransactionParameters()).toEqual({ bookmarks: ['neo4j:bookmark:v1:tx142'] }) }) it('should turn into transaction params when represents multiple bookmarks', () => { - const bookmark = new Bookmark([ + const bookmarks = new Bookmarks([ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx3', 'neo4j:bookmark:v1:tx42', 'neo4j:bookmark:v1:tx5' ]) - expect(bookmark.isEmpty()).toBeFalsy() - expect(bookmark.asBeginTransactionParameters()).toEqual({ + expect(bookmarks.isEmpty()).toBeFalsy() + expect(bookmarks.asBeginTransactionParameters()).toEqual({ bookmarks: [ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx3', @@ -192,24 +192,24 @@ describe('#unit Bookmark', () => { }) }) - it('should expose bookmark values', () => { - expect(new Bookmark(undefined).values()).toEqual([]) - expect(new Bookmark(null).values()).toEqual([]) + it('should expose bookmarks values', () => { + expect(new Bookmarks(undefined).values()).toEqual([]) + expect(new Bookmarks(null).values()).toEqual([]) - const bookmarkString = 'neo4j:bookmark:v1:tx123' - expect(new Bookmark(bookmarkString).values()).toEqual([bookmarkString]) + const bookmarksString = 'neo4j:bookmark:v1:tx123' + expect(new Bookmarks(bookmarksString).values()).toEqual([bookmarksString]) - const bookmarkStrings = [ + const bookmarksStrings = [ 'neo4j:bookmark:v1:tx1', 'neo4j:bookmark:v1:tx2', 'neo4j:bookmark:v1:tx3' ] - expect(new Bookmark(bookmarkStrings).values()).toEqual(bookmarkStrings) + expect(new Bookmarks(bookmarksStrings).values()).toEqual(bookmarksStrings) }) - it('should expose empty bookmark value', () => { - const bookmark = Bookmark.empty() - expect(bookmark).toBeDefined() - expect(bookmark.isEmpty()).toBeTruthy() + it('should expose empty bookmarks value', () => { + const bookmarks = Bookmarks.empty() + expect(bookmarks).toBeDefined() + expect(bookmarks.isEmpty()).toBeTruthy() }) }) diff --git a/packages/neo4j-driver/test/internal/connection-channel.test.js b/packages/neo4j-driver/test/internal/connection-channel.test.js index 01bdd49ab..69d661e1e 100644 --- a/packages/neo4j-driver/test/internal/connection-channel.test.js +++ b/packages/neo4j-driver/test/internal/connection-channel.test.js @@ -35,7 +35,7 @@ import { ResultStreamObserver } from '../../../bolt-connection/lib/bolt' const { logger: { Logger }, - bookmark: { Bookmark }, + bookmarks: { Bookmarks }, txConfig: { TxConfig }, serverAddress: { ServerAddress } } = internal @@ -112,7 +112,7 @@ describe('#integration ChannelConnection', () => { 'RETURN 1.0', {}, { - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty(), mode: WRITE } @@ -257,7 +257,7 @@ describe('#integration ChannelConnection', () => { .run( 'RETURN 1', {}, - { bookmark: Bookmark.empty(), txConfig: TxConfig.empty() } + { bookmarks: Bookmarks.empty(), txConfig: TxConfig.empty() } ), done ) diff --git a/packages/neo4j-driver/test/internal/fake-session.js b/packages/neo4j-driver/test/internal/fake-session.js index 5825af943..8f37f2aa6 100644 --- a/packages/neo4j-driver/test/internal/fake-session.js +++ b/packages/neo4j-driver/test/internal/fake-session.js @@ -44,8 +44,8 @@ export default class FakeSession { return Promise.resolve() } - withBookmark (bookmark) { - this._lastBookmark = bookmark + withBookmarks (bookmarks) { + this._lastBookmarks = bookmarks return this } diff --git a/packages/neo4j-driver/test/internal/node/routing.driver.boltkit.test.js b/packages/neo4j-driver/test/internal/node/routing.driver.boltkit.test.js index 0be4e04b9..2c4e1a6b5 100644 --- a/packages/neo4j-driver/test/internal/node/routing.driver.boltkit.test.js +++ b/packages/neo4j-driver/test/internal/node/routing.driver.boltkit.test.js @@ -386,7 +386,7 @@ describe('#stub-routing routing driver with stub server', () => { 60000 ) - it('should pass bookmark from transaction to transaction', async () => { + it('should pass bookmarks from transaction to transaction', async () => { if (!boltStub.supported) { return } @@ -406,7 +406,7 @@ describe('#stub-routing routing driver with stub server', () => { const writeTx = session.beginTransaction() await writeTx.run("CREATE (n {name:'Bob'})") await writeTx.commit() - expect(session.lastBookmark()).toEqual(['neo4j:bookmark:v1:tx4242']) + expect(session.lastBookmarks()).toEqual(['neo4j:bookmark:v1:tx4242']) const readTx = session.beginTransaction() const result = await readTx.run('MATCH (n) RETURN n.name AS name') @@ -415,7 +415,7 @@ describe('#stub-routing routing driver with stub server', () => { expect(records[0].get('name')).toEqual('Bob') await readTx.commit() - expect(session.lastBookmark()).toEqual(['neo4j:bookmark:v1:tx424242']) + expect(session.lastBookmarks()).toEqual(['neo4j:bookmark:v1:tx424242']) await session.close() await driver.close() diff --git a/packages/neo4j-driver/test/internal/shared-neo4j.js b/packages/neo4j-driver/test/internal/shared-neo4j.js index dde00c2a9..3de62fc21 100644 --- a/packages/neo4j-driver/test/internal/shared-neo4j.js +++ b/packages/neo4j-driver/test/internal/shared-neo4j.js @@ -152,7 +152,7 @@ const defaultConfig = { // HTTP server should keep listening on default address 'dbms.connector.http.listen_address': 'localhost:7474', - // shorten the default time to wait for the bookmark from 30 to 5 seconds + // shorten the default time to wait for the bookmarks from 30 to 5 seconds 'dbms.transaction.bookmark_ready_timeout': '5s', // make TLS optional @@ -308,20 +308,20 @@ function restart (configOverride) { startNeo4j() } -async function cleanupAndGetProtocolVersionAndBookmark (driver) { +async function cleanupAndGetProtocolVersionAndBookmarks (driver) { const session = driver.session({ defaultAccessMode: neo4j.session.WRITE }) try { const result = await session.writeTransaction(tx => tx.run('MATCH (n) DETACH DELETE n') ) - return [result.summary.server.protocolVersion, session.lastBookmark()] + return [result.summary.server.protocolVersion, session.lastBookmarks()] } finally { await session.close() } } async function cleanupAndGetProtocolVersion (driver) { - const [protocolVersion] = await cleanupAndGetProtocolVersionAndBookmark( + const [protocolVersion] = await cleanupAndGetProtocolVersionAndBookmarks( driver ) return protocolVersion @@ -382,7 +382,7 @@ export default { authToken: authToken, logging: debugLogging, cleanupAndGetProtocolVersion: cleanupAndGetProtocolVersion, - cleanupAndGetProtocolVersionAndBookmark, + cleanupAndGetProtocolVersionAndBookmarks, tlsConfig: tlsConfig, getEdition: getEdition, hostname: hostname, diff --git a/packages/neo4j-driver/test/rx/transaction.test.js b/packages/neo4j-driver/test/rx/transaction.test.js index 783a0620b..8ceb107fd 100644 --- a/packages/neo4j-driver/test/rx/transaction.test.js +++ b/packages/neo4j-driver/test/rx/transaction.test.js @@ -389,28 +389,28 @@ describe('#integration-rx transaction', () => { await verifyFailToRunQueryAfterTxcIsComplete(false) }) - it('should update bookmark', async () => { + it('should update bookmarks', async () => { if (protocolVersion < 4.0) { return } - const bookmark0 = session.lastBookmark() + const bookmarks0 = session.lastBookmarks() const txc1 = await session.beginTransaction().toPromise() await verifyCanCreateNode(txc1, 20) await verifyCanCommit(txc1) - const bookmark1 = session.lastBookmark() + const bookmarks1 = session.lastBookmarks() const txc2 = await session.beginTransaction().toPromise() await verifyCanCreateNode(txc2, 21) await verifyCanCommit(txc2) - const bookmark2 = session.lastBookmark() + const bookmarks2 = session.lastBookmarks() - expect(bookmark0).toEqual([]) - expect(bookmark1).toBeTruthy() - expect(bookmark1).not.toEqual(bookmark0) - expect(bookmark2).toBeTruthy() - expect(bookmark2).not.toEqual(bookmark1) + expect(bookmarks0).toEqual([]) + expect(bookmarks1).toBeTruthy() + expect(bookmarks1).not.toEqual(bookmarks0) + expect(bookmarks2).toBeTruthy() + expect(bookmarks2).not.toEqual(bookmarks1) }) it('should propagate failures from queries', async () => { diff --git a/packages/neo4j-driver/test/session.test.js b/packages/neo4j-driver/test/session.test.js index 21e97eaf4..b174f83cb 100644 --- a/packages/neo4j-driver/test/session.test.js +++ b/packages/neo4j-driver/test/session.test.js @@ -380,7 +380,7 @@ describe('#integration session', () => { expect(() => session.run({ cypher: 'CREATE ()' })).toThrowError(TypeError) }, 70000) - it('should fail nicely for illegal bookmark', () => { + it('should fail nicely for illegal bookmarks', () => { expect(() => session.beginTransaction(42)).toThrowError(TypeError) expect(() => session.beginTransaction(42)).toThrowError(TypeError) expect(() => session.beginTransaction([42.0, 42.0])).toThrowError(TypeError) @@ -535,10 +535,10 @@ describe('#integration session', () => { }) }, 70000) - it('should update last bookmark after every read tx commit', done => { - // new session without initial bookmark + it('should update last bookmarks after every read tx commit', done => { + // new session without initial bookmarks session = driver.session() - expect(session.lastBookmark()).toEqual([]) + expect(session.lastBookmarks()).toEqual([]) const tx = session.beginTransaction() tx.run('RETURN 42 as answer').then(result => { @@ -547,37 +547,37 @@ describe('#integration session', () => { expect(records[0].get('answer').toNumber()).toEqual(42) tx.commit().then(() => { - verifyBookmark(session.lastBookmark()) + verifyBookmarks(session.lastBookmarks()) done() }) }) }, 70000) - it('should update last bookmark after every write tx commit', done => { - const bookmarkBefore = session.lastBookmark() + it('should update last bookmarks after every write tx commit', done => { + const bookmarksBefore = session.lastBookmarks() const tx = session.beginTransaction() tx.run('CREATE ()').then(() => { tx.commit().then(() => { - const bookmarkAfter = session.lastBookmark() - expect(bookmarkAfter).toBeDefined() - expect(bookmarkAfter).not.toBeNull() - expect(bookmarkAfter).not.toEqual(bookmarkBefore) + const bookmarksAfter = session.lastBookmarks() + expect(bookmarksAfter).toBeDefined() + expect(bookmarksAfter).not.toBeNull() + expect(bookmarksAfter).not.toEqual(bookmarksBefore) done() }) }) }, 70000) - it('should not lose last bookmark after run', done => { + it('should not lose last bookmarks after run', done => { const tx = session.beginTransaction() tx.run('CREATE ()').then(() => { tx.commit().then(() => { - const bookmarkBefore = session.lastBookmark() - verifyBookmark(bookmarkBefore) + const bookmarksBefore = session.lastBookmarks() + verifyBookmarks(bookmarksBefore) session.run('CREATE ()').then(() => { - verifyBookmark(session.lastBookmark()) + verifyBookmarks(session.lastBookmarks()) done() }) }) @@ -585,9 +585,9 @@ describe('#integration session', () => { }, 70000) it('should commit read transaction', done => { - // new session without initial bookmark + // new session without initial bookmarks session = driver.session() - expect(session.lastBookmark()).toEqual([]) + expect(session.lastBookmarks()).toEqual([]) const resultPromise = session.readTransaction(tx => tx.run('RETURN 42 AS answer') @@ -596,13 +596,13 @@ describe('#integration session', () => { resultPromise.then(result => { expect(result.records.length).toEqual(1) expect(result.records[0].get('answer').toNumber()).toEqual(42) - verifyBookmark(session.lastBookmark()) + verifyBookmarks(session.lastBookmarks()) done() }) }, 70000) it('should commit write transaction', done => { - const bookmarkBefore = session.lastBookmark() + const bookmarksBefore = session.lastBookmarks() const resultPromise = session.writeTransaction(tx => tx.run('CREATE (n:Node {id: 42}) RETURN n.id AS answer') ) @@ -612,9 +612,9 @@ describe('#integration session', () => { expect(result.records[0].get('answer').toNumber()).toEqual(42) expect(result.summary.counters.updates().nodesCreated).toEqual(1) - const bookmarkAfter = session.lastBookmark() - verifyBookmark(bookmarkAfter) - expect(bookmarkAfter).not.toEqual(bookmarkBefore) + const bookmarksAfter = session.lastBookmarks() + verifyBookmarks(bookmarksAfter) + expect(bookmarksAfter).not.toEqual(bookmarksBefore) countNodes('Node', 'id', 42).then(count => { expect(count).toEqual(1) @@ -630,7 +630,7 @@ describe('#integration session', () => { .then(result => { tx.commit() .then(() => { - resolve({ result: result, bookmark: session.lastBookmark() }) + resolve({ result: result, bookmarks: session.lastBookmarks() }) }) .catch(error => reject(error)) }) @@ -639,11 +639,11 @@ describe('#integration session', () => { }) resultPromise.then(outcome => { - const bookmark = outcome.bookmark + const bookmarks = outcome.bookmarks const result = outcome.result - verifyBookmark(bookmark) - expect(session.lastBookmark()).toEqual(bookmark) // expect bookmark to not change + verifyBookmarks(bookmarks) + expect(session.lastBookmarks()).toEqual(bookmarks) // expect bookmarks to not change expect(result.records.length).toEqual(1) expect(result.records[0].get('answer').toNumber()).toEqual(42) @@ -659,7 +659,7 @@ describe('#integration session', () => { .then(result => { tx.commit() .then(() => { - resolve({ result: result, bookmark: session.lastBookmark() }) + resolve({ result: result, bookmarks: session.lastBookmarks() }) }) .catch(error => reject(error)) }) @@ -668,11 +668,11 @@ describe('#integration session', () => { }) resultPromise.then(outcome => { - const bookmark = outcome.bookmark + const bookmarks = outcome.bookmarks const result = outcome.result - verifyBookmark(bookmark) - expect(session.lastBookmark()).toEqual(bookmark) // expect bookmark to not change + verifyBookmarks(bookmarks) + expect(session.lastBookmarks()).toEqual(bookmarks) // expect bookmarks to not change expect(result.records.length).toEqual(1) expect(result.records[0].get('answer').toNumber()).toEqual(42) @@ -686,7 +686,7 @@ describe('#integration session', () => { }, 70000) it('should not commit rolled back read transaction', done => { - const bookmarkBefore = session.lastBookmark() + const bookmarksBefore = session.lastBookmarks() const resultPromise = session.readTransaction(tx => { return new Promise((resolve, reject) => { tx.run('RETURN 42 AS answer') @@ -704,14 +704,14 @@ describe('#integration session', () => { resultPromise.then(result => { expect(result.records.length).toEqual(1) expect(result.records[0].get('answer').toNumber()).toEqual(42) - expect(session.lastBookmark()).toBe(bookmarkBefore) // expect bookmark to not change + expect(session.lastBookmarks()).toBe(bookmarksBefore) // expect bookmarks to not change done() }) }, 70000) it('should not commit rolled back write transaction', done => { - const bookmarkBefore = session.lastBookmark() + const bookmarksBefore = session.lastBookmarks() const resultPromise = session.writeTransaction(tx => { return new Promise((resolve, reject) => { tx.run('CREATE (n:Node {id: 42}) RETURN n.id AS answer') @@ -730,7 +730,7 @@ describe('#integration session', () => { expect(result.records.length).toEqual(1) expect(result.records[0].get('answer').toNumber()).toEqual(42) expect(result.summary.counters.updates().nodesCreated).toEqual(1) - expect(session.lastBookmark()).toBe(bookmarkBefore) // expect bookmark to not change + expect(session.lastBookmarks()).toBe(bookmarksBefore) // expect bookmarks to not change countNodes('Node', 'id', 42).then(count => { expect(count).toEqual(0) @@ -844,16 +844,19 @@ describe('#integration session', () => { it('should send multiple bookmarks', async () => { const nodeCount = 17 - const bookmarks = [] + const allBookmarks = [] for (let i = 0; i < nodeCount; i++) { - const bookmark = await runQueryAndGetBookmark(driver) - bookmarks.push(bookmark) + const bookmarks = await runQueryAndGetBookmarks(driver) + allBookmarks.push(bookmarks) } - expect(_.uniq(bookmarks).length).toEqual(nodeCount) - bookmarks.forEach(bookmark => expect(_.isArray(bookmark)).toBeTruthy()) + expect(_.uniq(allBookmarks).length).toEqual(nodeCount) + allBookmarks.forEach(bookmarks => expect(_.isArray(bookmarks)).toBeTruthy()) - const session = driver.session({ defaultAccessMode: READ, bookmarks }) + const session = driver.session({ + defaultAccessMode: READ, + bookmarks: allBookmarks + }) try { const result = await session.run('MATCH (n) RETURN count(n)') const count = result.records[0].get(0).toInt() @@ -1146,9 +1149,9 @@ describe('#integration session', () => { return idleConnections.length } - function verifyBookmark (bookmark) { - expect(bookmark).toBeDefined() - expect(bookmark).not.toBeNull() + function verifyBookmarks (bookmarks) { + expect(bookmarks).toBeDefined() + expect(bookmarks).not.toBeNull() } function expectTransactionTerminatedError (error) { @@ -1173,7 +1176,7 @@ describe('#integration session', () => { }) } - function runQueryAndGetBookmark (driver) { + function runQueryAndGetBookmarks (driver) { const session = driver.session() const tx = session.beginTransaction() @@ -1182,9 +1185,9 @@ describe('#integration session', () => { .then(() => { tx.commit() .then(() => { - const bookmark = session.lastBookmark() + const bookmarks = session.lastBookmarks() session.close().then(() => { - resolve(bookmark) + resolve(bookmarks) }) }) .catch(error => reject(error)) diff --git a/packages/neo4j-driver/test/stress-test.js b/packages/neo4j-driver/test/stress-test.js index a88f245e9..4da7f9c97 100644 --- a/packages/neo4j-driver/test/stress-test.js +++ b/packages/neo4j-driver/test/stress-test.js @@ -77,7 +77,7 @@ export default async function execute () { const [ protocolVersion, bookmarks - ] = await sharedNeo4j.cleanupAndGetProtocolVersionAndBookmark(driver) + ] = await sharedNeo4j.cleanupAndGetProtocolVersionAndBookmarks(driver) console.time('Basic-stress-test') const printStats = () => { console.timeEnd('Basic-stress-test') @@ -156,8 +156,8 @@ function createCommands (context) { function createUniqueCommands (context) { const clusterSafeCommands = [ readQueryInTxFunctionCommand(context), - readQueryInTxFunctionWithBookmarkCommand(context), - writeQueryInTxFunctionWithBookmarkCommand(context), + readQueryInTxFunctionWithBookmarksCommand(context), + writeQueryInTxFunctionWithBookmarksCommand(context), writeQueryInTxFunctionCommand(context) ] @@ -168,13 +168,13 @@ function createUniqueCommands (context) { return [ ...clusterSafeCommands, readQueryCommand(context), - readQueryWithBookmarkCommand(context), + readQueryWithBookmarksCommand(context), readQueryInTxCommand(context), - readQueryInTxWithBookmarkCommand(context), + readQueryInTxWithBookmarksCommand(context), writeQueryCommand(context), - writeQueryWithBookmarkCommand(context), + writeQueryWithBookmarksCommand(context), writeQueryInTxCommand(context), - writeQueryInTxWithBookmarkCommand(context) + writeQueryInTxWithBookmarksCommand(context) ] } @@ -182,7 +182,7 @@ function readQueryCommand (context) { return queryCommand(context, READ_QUERY, () => noParams(), READ, false) } -function readQueryWithBookmarkCommand (context) { +function readQueryWithBookmarksCommand (context) { return queryCommand(context, READ_QUERY, () => noParams(), READ, true) } @@ -200,11 +200,11 @@ function readQueryInTxFunctionCommand (context) { ) } -function readQueryInTxWithBookmarkCommand (context) { +function readQueryInTxWithBookmarksCommand (context) { return queryInTxCommand(context, READ_QUERY, () => noParams(), READ, true) } -function readQueryInTxFunctionWithBookmarkCommand (context) { +function readQueryInTxFunctionWithBookmarksCommand (context) { return queryInTxFunctionCommand( context, READ_QUERY, @@ -218,7 +218,7 @@ function writeQueryCommand (context) { return queryCommand(context, WRITE_QUERY, () => randomParams(), WRITE, false) } -function writeQueryWithBookmarkCommand (context) { +function writeQueryWithBookmarksCommand (context) { return queryCommand(context, WRITE_QUERY, () => randomParams(), WRITE, true) } @@ -242,7 +242,7 @@ function writeQueryInTxFunctionCommand (context) { ) } -function writeQueryInTxWithBookmarkCommand (context) { +function writeQueryInTxWithBookmarksCommand (context) { return queryInTxCommand( context, WRITE_QUERY, @@ -252,7 +252,7 @@ function writeQueryInTxWithBookmarkCommand (context) { ) } -function writeQueryInTxFunctionWithBookmarkCommand (context) { +function writeQueryInTxFunctionWithBookmarksCommand (context) { return queryInTxFunctionCommand( context, WRITE_QUERY, @@ -262,7 +262,13 @@ function writeQueryInTxFunctionWithBookmarkCommand (context) { ) } -function queryCommand (context, query, paramsSupplier, accessMode, useBookmark) { +function queryCommand ( + context, + query, + paramsSupplier, + accessMode, + useBookmarks +) { return callback => { const commandId = context.nextCommandId() if (isCluster()) { @@ -272,7 +278,7 @@ function queryCommand (context, query, paramsSupplier, accessMode, useBookmark) callback() return } - const session = newSession(context, accessMode, useBookmark) + const session = newSession(context, accessMode, useBookmarks) const params = paramsSupplier() context.log(commandId, `About to run ${accessMode} query`) @@ -303,12 +309,12 @@ function queryInTxFunctionCommand ( query, paramsSupplier, accessMode, - useBookmark + useBookmarks ) { return callback => { const commandId = context.nextCommandId() const params = paramsSupplier() - const session = newSession(context, accessMode, useBookmark) + const session = newSession(context, accessMode, useBookmarks) context.log(commandId, `About to run ${accessMode} query in TX function`) @@ -321,7 +327,7 @@ function queryInTxFunctionCommand ( resultPromise .then(result => { - context.queryCompleted(result, accessMode, session.lastBookmark()) + context.queryCompleted(result, accessMode, session.lastBookmarks()) context.log(commandId, 'Transaction function executed successfully') return session @@ -353,7 +359,7 @@ function queryInTxCommand ( query, paramsSupplier, accessMode, - useBookmark + useBookmarks ) { return callback => { const commandId = context.nextCommandId() @@ -364,7 +370,7 @@ function queryInTxCommand ( callback() return } - const session = newSession(context, accessMode, useBookmark) + const session = newSession(context, accessMode, useBookmarks) const tx = session.beginTransaction() const params = paramsSupplier() @@ -387,7 +393,7 @@ function queryInTxCommand ( } }) .then(() => { - context.queryCompleted(result, accessMode, session.lastBookmark()) + context.queryCompleted(result, accessMode, session.lastBookmarks()) context.log(commandId, 'Transaction committed successfully') return session.close().then(() => { @@ -532,11 +538,11 @@ function noParams () { return {} } -function newSession (context, accessMode, useBookmark) { - if (useBookmark || isCluster()) { +function newSession (context, accessMode, useBookmarks) { + if (useBookmarks || isCluster()) { return context.driver.session({ defaultAccessMode: accessMode, - bookmarks: context.bookmark + bookmarks: context.bookmarks }) } return context.driver.session({ defaultAccessMode: accessMode }) @@ -564,9 +570,9 @@ function arraysEqual (array1, array2) { } class Context { - constructor (driver, loggingEnabled, protocolVersion, bookmark) { + constructor (driver, loggingEnabled, protocolVersion, bookmarks) { this.driver = driver - this.bookmark = bookmark + this.bookmarks = bookmarks this.createdNodesCount = 0 this._commandIdCouter = 0 this._loggingEnabled = loggingEnabled @@ -590,7 +596,7 @@ class Context { ) } - queryCompleted (result, accessMode, bookmark) { + queryCompleted (result, accessMode, bookmarks) { const serverInfo = result.summary.server this.protocolVersion = serverInfo.protocolVersion @@ -604,8 +610,8 @@ class Context { (this.readServersWithQueryCount[serverAddress] || 0) + 1 } - if (bookmark) { - this.bookmark = bookmark + if (bookmarks) { + this.bookmarks = bookmarks } } diff --git a/packages/neo4j-driver/test/stress.test.js b/packages/neo4j-driver/test/stress.test.js index ef23f14e1..2e1f9dc58 100644 --- a/packages/neo4j-driver/test/stress.test.js +++ b/packages/neo4j-driver/test/stress.test.js @@ -136,8 +136,8 @@ describe('#integration stress tests', () => { function createUniqueCommands (context) { const clusterSafeCommands = [ readQueryInTxFunctionCommand(context), - readQueryInTxFunctionWithBookmarkCommand(context), - writeQueryInTxFunctionWithBookmarkCommand(context), + readQueryInTxFunctionWithBookmarksCommand(context), + writeQueryInTxFunctionWithBookmarksCommand(context), writeQueryInTxFunctionCommand(context) ] @@ -148,13 +148,13 @@ describe('#integration stress tests', () => { return [ ...clusterSafeCommands, readQueryCommand(context), - readQueryWithBookmarkCommand(context), + readQueryWithBookmarksCommand(context), readQueryInTxCommand(context), - readQueryInTxWithBookmarkCommand(context), + readQueryInTxWithBookmarksCommand(context), writeQueryCommand(context), - writeQueryWithBookmarkCommand(context), + writeQueryWithBookmarksCommand(context), writeQueryInTxCommand(context), - writeQueryInTxWithBookmarkCommand(context) + writeQueryInTxWithBookmarksCommand(context) ] } @@ -162,7 +162,7 @@ describe('#integration stress tests', () => { return queryCommand(context, READ_QUERY, () => noParams(), READ, false) } - function readQueryWithBookmarkCommand (context) { + function readQueryWithBookmarksCommand (context) { return queryCommand(context, READ_QUERY, () => noParams(), READ, true) } @@ -180,11 +180,11 @@ describe('#integration stress tests', () => { ) } - function readQueryInTxWithBookmarkCommand (context) { + function readQueryInTxWithBookmarksCommand (context) { return queryInTxCommand(context, READ_QUERY, () => noParams(), READ, true) } - function readQueryInTxFunctionWithBookmarkCommand (context) { + function readQueryInTxFunctionWithBookmarksCommand (context) { return queryInTxFunctionCommand( context, READ_QUERY, @@ -204,7 +204,7 @@ describe('#integration stress tests', () => { ) } - function writeQueryWithBookmarkCommand (context) { + function writeQueryWithBookmarksCommand (context) { return queryCommand(context, WRITE_QUERY, () => randomParams(), WRITE, true) } @@ -228,7 +228,7 @@ describe('#integration stress tests', () => { ) } - function writeQueryInTxWithBookmarkCommand (context) { + function writeQueryInTxWithBookmarksCommand (context) { return queryInTxCommand( context, WRITE_QUERY, @@ -238,7 +238,7 @@ describe('#integration stress tests', () => { ) } - function writeQueryInTxFunctionWithBookmarkCommand (context) { + function writeQueryInTxFunctionWithBookmarksCommand (context) { return queryInTxFunctionCommand( context, WRITE_QUERY, @@ -253,7 +253,7 @@ describe('#integration stress tests', () => { query, paramsSupplier, accessMode, - useBookmark + useBookmarks ) { return callback => { const commandId = context.nextCommandId() @@ -264,7 +264,7 @@ describe('#integration stress tests', () => { callback() return } - const session = newSession(context, accessMode, useBookmark) + const session = newSession(context, accessMode, useBookmarks) const params = paramsSupplier() context.log(commandId, `About to run ${accessMode} query`) @@ -295,12 +295,12 @@ describe('#integration stress tests', () => { query, paramsSupplier, accessMode, - useBookmark + useBookmarks ) { return callback => { const commandId = context.nextCommandId() const params = paramsSupplier() - const session = newSession(context, accessMode, useBookmark) + const session = newSession(context, accessMode, useBookmarks) context.log(commandId, `About to run ${accessMode} query in TX function`) @@ -313,7 +313,7 @@ describe('#integration stress tests', () => { resultPromise .then(result => { - context.queryCompleted(result, accessMode, session.lastBookmark()) + context.queryCompleted(result, accessMode, session.lastBookmarks()) context.log(commandId, 'Transaction function executed successfully') return session @@ -345,7 +345,7 @@ describe('#integration stress tests', () => { query, paramsSupplier, accessMode, - useBookmark + useBookmarks ) { return callback => { const commandId = context.nextCommandId() @@ -356,7 +356,7 @@ describe('#integration stress tests', () => { callback() return } - const session = newSession(context, accessMode, useBookmark) + const session = newSession(context, accessMode, useBookmarks) const tx = session.beginTransaction() const params = paramsSupplier() @@ -379,7 +379,11 @@ describe('#integration stress tests', () => { } }) .then(() => { - context.queryCompleted(result, accessMode, session.lastBookmark()) + context.queryCompleted( + result, + accessMode, + session.lastBookmarks() + ) context.log(commandId, 'Transaction committed successfully') return session.close().then(() => { @@ -609,11 +613,11 @@ describe('#integration stress tests', () => { return {} } - function newSession (context, accessMode, useBookmark) { - if (useBookmark) { + function newSession (context, accessMode, useBookmarks) { + if (useBookmarks) { return context.driver.session({ defaultAccessMode: accessMode, - bookmarks: [context.bookmark] + bookmarks: [context.bookmarks] }) } return context.driver.session({ defaultAccessMode: accessMode }) @@ -643,7 +647,7 @@ describe('#integration stress tests', () => { class Context { constructor (driver, loggingEnabled) { this.driver = driver - this.bookmark = null + this.bookmarks = null this.createdNodesCount = 0 this._commandIdCouter = 0 this._loggingEnabled = loggingEnabled @@ -666,7 +670,7 @@ describe('#integration stress tests', () => { ) } - queryCompleted (result, accessMode, bookmark) { + queryCompleted (result, accessMode, bookmarks) { const serverInfo = result.summary.server this.protocolVersion = serverInfo.protocolVersion @@ -680,8 +684,8 @@ describe('#integration stress tests', () => { (this.readServersWithQueryCount[serverAddress] || 0) + 1 } - if (bookmark) { - this.bookmark = bookmark + if (bookmarks) { + this.bookmarks = bookmarks } } diff --git a/packages/neo4j-driver/test/transaction.test.js b/packages/neo4j-driver/test/transaction.test.js index 1f98f8131..6a1878ddc 100644 --- a/packages/neo4j-driver/test/transaction.test.js +++ b/packages/neo4j-driver/test/transaction.test.js @@ -215,15 +215,15 @@ describe('#integration transaction', () => { .catch(console.log) }, 60000) - it('should throw when provided string (bookmark) parameter', () => { + it('should throw when provided string (bookmarks) parameter', () => { expect(() => session.beginTransaction('bookmark')).toThrowError(TypeError) }, 60000) - it('should throw when provided string[] (bookmark) parameter', () => { + it('should throw when provided string[] (bookmarks) parameter', () => { expect(() => session.beginTransaction(['bookmark'])).toThrowError(TypeError) }, 60000) - it('should fail to run query for unreachable bookmark', done => { + it('should fail to run query for unreachable bookmarks', done => { const tx1 = session.beginTransaction() tx1 .run('CREATE ()') @@ -233,11 +233,11 @@ describe('#integration transaction', () => { tx1 .commit() .then(() => { - expectValidLastBookmark(session) + expectValidLastBookmarks(session) - const unreachableBookmark = session.lastBookmark() + '0' + const unreachableBookmarks = session.lastBookmarks() + '0' const session2 = driver.session({ - bookmarks: [unreachableBookmark] + bookmarks: [unreachableBookmarks] }) const tx2 = session2.beginTransaction() tx2.run('CREATE ()').catch(error => { @@ -467,9 +467,9 @@ describe('#integration transaction', () => { expect(error.code).toBe('Neo.ClientError.Statement.SyntaxError') } - function expectValidLastBookmark (session) { - expect(session.lastBookmark()).toBeDefined() - expect(session.lastBookmark()).not.toBeNull() + function expectValidLastBookmarks (session) { + expect(session.lastBookmarks()).toBeDefined() + expect(session.lastBookmarks()).not.toBeNull() } function testConnectionTimeout (encrypted, done) { diff --git a/packages/neo4j-driver/test/types/export.test.ts b/packages/neo4j-driver/test/types/export.test.ts index c846968c8..8121604c5 100644 --- a/packages/neo4j-driver/test/types/export.test.ts +++ b/packages/neo4j-driver/test/types/export.test.ts @@ -17,7 +17,7 @@ * limitations under the License. */ -import { Bookmark } from 'neo4j-driver-core/types/internal/bookmark' +import { Bookmarks } from 'neo4j-driver-core/types/internal/bookmarks' import driver, { DateTime, RxSession, @@ -56,7 +56,7 @@ const driverConfiguration1 = driver.driver('driver', undefined, {}) const session = new Session({ mode: 'READ', connectionProvider: new ConnectionProvider(), - bookmark: Bookmark.empty(), + bookmarks: Bookmarks.empty(), database: 'default', config: {}, reactive: false, diff --git a/packages/neo4j-driver/test/types/session-rx.test.ts b/packages/neo4j-driver/test/types/session-rx.test.ts index 53675c5a0..995d83034 100644 --- a/packages/neo4j-driver/test/types/session-rx.test.ts +++ b/packages/neo4j-driver/test/types/session-rx.test.ts @@ -74,7 +74,7 @@ const txConfig7: TransactionConfig = { } const tx1: Observable = rxSession.beginTransaction() -const bookmark: null | string = rxSession.lastBookmark() +const bookmarks: null | string = rxSession.lastBookmarks() const observable1: Observable = rxSession.readTransaction( (tx: RxTransaction) => { diff --git a/packages/neo4j-driver/test/types/session.test.ts b/packages/neo4j-driver/test/types/session.test.ts index c3aaa107a..c427f23b3 100644 --- a/packages/neo4j-driver/test/types/session.test.ts +++ b/packages/neo4j-driver/test/types/session.test.ts @@ -55,7 +55,7 @@ const txConfig7: TransactionConfig = { } const tx1: Transaction = session.beginTransaction() -const bookmark: string[] = session.lastBookmark() +const bookmarks: string[] = session.lastBookmarks() const promise1: Promise = session.readTransaction((tx: Transaction) => { return 10 @@ -173,4 +173,4 @@ const promise6: Promise = session.writeTransaction( txConfig4 ) -const lastBookmark: string[] = session.lastBookmark() +const lastBookmarks: string[] = session.lastBookmarks() diff --git a/packages/neo4j-driver/types/session-rx.d.ts b/packages/neo4j-driver/types/session-rx.d.ts index 2a629b6b6..e1fa83d75 100644 --- a/packages/neo4j-driver/types/session-rx.d.ts +++ b/packages/neo4j-driver/types/session-rx.d.ts @@ -33,7 +33,7 @@ declare interface RxSession { beginTransaction(config?: TransactionConfig): Observable - lastBookmark(): string | null + lastBookmarks(): string | null readTransaction( work: RxTransactionWork, diff --git a/packages/testkit-backend/scratch.js b/packages/testkit-backend/scratch.js new file mode 100644 index 000000000..9284a9880 --- /dev/null +++ b/packages/testkit-backend/scratch.js @@ -0,0 +1,3 @@ +import {Driver} from 'neo4j-driver-lite'; + +console.log(Driver.READ); diff --git a/packages/testkit-backend/src/request-handlers.js b/packages/testkit-backend/src/request-handlers.js index 4686d67c5..ba7f6b3d0 100644 --- a/packages/testkit-backend/src/request-handlers.js +++ b/packages/testkit-backend/src/request-handlers.js @@ -292,7 +292,7 @@ export function TransactionRollback (context, data, wire) { export function SessionLastBookmarks (context, data, wire) { const { sessionId } = data const session = context.getSession(sessionId) - const bookmarks = session.lastBookmark() + const bookmarks = session.lastBookmarks() wire.writeResponse('Bookmarks', { bookmarks }) } @@ -410,7 +410,7 @@ export function ForcedRoutingTableUpdate (context, { driverId, database, bookmar return provider._freshRoutingTable ({ accessMode: 'READ', database, - bookmark: bookmarks, + bookmarks: bookmarks, onDatabaseNameResolved: () => {} }) .then(() => wire.writeResponse("Driver", { "id": driverId }))