From 4fd738d4e61796df018adccbcf54f06cf98a6d68 Mon Sep 17 00:00:00 2001 From: Rouven Bauer Date: Mon, 7 Feb 2022 15:22:36 +0100 Subject: [PATCH 1/3] Properly handle TestKit's FrontendError --- .../testkit-backend/src/controller/local.js | 23 ++++++++++++------- .../testkit-backend/src/request-handlers.js | 21 ++++++++++------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/packages/testkit-backend/src/controller/local.js b/packages/testkit-backend/src/controller/local.js index a4faddaee..be0924e2b 100644 --- a/packages/testkit-backend/src/controller/local.js +++ b/packages/testkit-backend/src/controller/local.js @@ -1,6 +1,7 @@ import Context from '../context' import Controller from './interface' import stringify from '../stringify' +import { isFrontendError } from '../request-handlers' /** @@ -24,7 +25,7 @@ export default class LocalController extends Controller { closeContext (contextId) { this._contexts.delete(contextId) } - + async handle (contextId, { name, data }) { if (!this._contexts.has(contextId)) { throw new Error(`Context ${contextId} does not exist`) @@ -58,15 +59,21 @@ export default class LocalController extends Controller { _writeError (contextId, e) { if (e.name) { - const id = this._contexts.get(contextId).addError(e) - this._writeResponse(contextId, 'DriverError', { - id, - msg: e.message + ' (' + e.code + ')', - code: e.code - }) + if (isFrontendError(e)) { + this._writeResponse(contextId, 'FrontendError', { + msg: 'Simulating the client code throwing some error.', + }) + } else { + const id = this._contexts.get(contextId).addError(e) + this._writeResponse(contextId, 'DriverError', { + id, + msg: e.message + ' (' + e.code + ')', + code: e.code + }) + } return } this._writeBackendError(contextId, e) } - + } diff --git a/packages/testkit-backend/src/request-handlers.js b/packages/testkit-backend/src/request-handlers.js index a6403e471..1a1269ef6 100644 --- a/packages/testkit-backend/src/request-handlers.js +++ b/packages/testkit-backend/src/request-handlers.js @@ -1,7 +1,7 @@ import neo4j from './neo4j' -import { - cypherToNative, - nativeToCypher, +import { + cypherToNative, + nativeToCypher, } from './cypher-native-binders.js' import { nativeToTestkitSummary, @@ -21,6 +21,14 @@ const SUPPORTED_TLS = (() => { return []; })(); +export function throwFrontendError() { + throw new Error("TestKit FrontendError") +} + +export function isFrontendError(error) { + return error.message === 'TestKit FrontendError' +} + export function NewDriver (context, data, wire) { const { uri, @@ -107,8 +115,7 @@ export function DriverClose (context, data, wire) { .then(() => { wire.writeResponse('Driver', { id: driverId }) }) - .catch(err => wire.writeError(err)) - .finally(() => context.removeDriver(driverId)) + .catch(err => wire.writeError(err)) } export function NewSession (context, data, wire) { @@ -213,8 +220,6 @@ export function ResultPeek (context, data, wire) { } export function ResultConsume (context, data, wire) { - - const { resultId } = data const result = context.getResult(resultId) @@ -276,7 +281,7 @@ export function RetryablePositive (context, data, wire) { export function RetryableNegative (context, data, wire) { const { sessionId, errorId } = data - const error = context.getError(errorId) || new Error('Client error') + const error = context.getError(errorId) || new Error('TestKit FrontendError') context.getTxsBySessionId(sessionId).forEach(tx => { tx.reject(error) }) From bdd014e2d7c71cd665f1c2ed00004ea1d919bdc1 Mon Sep 17 00:00:00 2001 From: Rouven Bauer Date: Fri, 11 Feb 2022 13:05:29 +0100 Subject: [PATCH 2/3] Add TestKit test skip for unified tx lifetime --- packages/testkit-backend/src/skipped-tests/common.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/testkit-backend/src/skipped-tests/common.js b/packages/testkit-backend/src/skipped-tests/common.js index 6af9f7b49..547347488 100644 --- a/packages/testkit-backend/src/skipped-tests/common.js +++ b/packages/testkit-backend/src/skipped-tests/common.js @@ -129,6 +129,10 @@ const skippedTests = [ skip( 'Results are always valid but don\'t return records when out of scope', ifStartsWith('stub.iteration.test_result_scope.TestResultScope.') + ), + skip( + 'Driver (still) allows explicit managing of managed transaction', + ifEquals('stub.tx_lifetime.test_tx_lifetime.TestTxLifetime.test_managed_tx_raises_tx_managed_exec') ) ] From 0cf23c37e16b53f5efcb266e67f7ecd5eb13c5f1 Mon Sep 17 00:00:00 2001 From: Rouven Bauer Date: Tue, 1 Mar 2022 14:54:57 +0100 Subject: [PATCH 3/3] Skip flaky tests --- packages/testkit-backend/src/skipped-tests/common.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/testkit-backend/src/skipped-tests/common.js b/packages/testkit-backend/src/skipped-tests/common.js index 2c0c6c924..e8ae62731 100644 --- a/packages/testkit-backend/src/skipped-tests/common.js +++ b/packages/testkit-backend/src/skipped-tests/common.js @@ -139,6 +139,14 @@ const skippedTests = [ skip( 'Driver (still) allows explicit managing of managed transaction', ifEquals('stub.tx_lifetime.test_tx_lifetime.TestTxLifetime.test_managed_tx_raises_tx_managed_exec') + ), + skip( + 'Flaky tests, requires investigation', + ifEndsWith('.test_should_fail_when_reading_from_unexpectedly_interrupting_readers_using_tx_function') + ), + skip( + 'Flaky tests, requires investigation', + ifEndsWith('.test_should_fail_when_writing_to_unexpectedly_interrupting_writers_using_tx_function') ) ]