Skip to content

Commit 87af2b4

Browse files
committed
fixed bookmakrs test
1 parent 28ddfe8 commit 87af2b4

File tree

7 files changed

+21
-94
lines changed

7 files changed

+21
-94
lines changed

src/Bolt/BoltConnection.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,6 @@ private function buildRunExtra(?string $database, ?float $timeout, BookmarkHolde
374374
$extra['tx_metadata'] = $metadataArray;
375375
}
376376
}
377-
378377
}
379378

380379
return $extra;

src/Bolt/Session.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ private function startTransaction(TransactionConfiguration $config, SessionConfi
190190
$this->getLogger()?->log(LogLevel::INFO, 'Starting transaction', ['config' => $config, 'sessionConfig' => $sessionConfig]);
191191
try {
192192
$connection = $this->acquireConnection($config, $sessionConfig);
193+
$connection->discardUnconsumedResults();
193194
$connection->begin($this->config->getDatabase(), $config->getTimeout(), $this->bookmarkHolder, $config->getMetaData());
194195
} catch (Neo4jException $e) {
195196
if (isset($connection) && $connection->getServerState() === 'FAILED') {

src/Databags/TransactionConfiguration.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,7 @@ public function getTimeout(): ?float
6767
{
6868
return $this->timeout;
6969
}
70-
/**
71-
* Get the configured bookmarks for causal consistency.
72-
*
73-
* @return array<string>|null
74-
*/
75-
public function getBookmarks(): ?array
76-
{
77-
return $this->bookmarks;
78-
}
70+
7971

8072
/**
8173
* Creates a new transaction object with the provided timeout.

testkit-backend/src/Requests/SessionBeginTransactionRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function getTxMeta(): iterable
4848
return $this->txMeta ?? [];
4949
}
5050

51-
public function getTimeout(): int|null
51+
public function getTimeout(): ?int
5252
{
5353
return $this->timeout;
5454
}

testkit-backend/src/Requests/SessionReadTransactionRequest.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,19 @@ final class SessionReadTransactionRequest
2323
private ?int $timeout;
2424
private array $bookmarks; // ADD THIS
2525

26-
2726
/**
2827
* @param iterable<string, array|scalar|null>|null $txMeta
2928
*/
3029
public function __construct(
3130
Uuid $sessionId,
3231
?iterable $txMeta = null,
3332
?int $timeout = null,
34-
array $bookmarks = [] // ADD THIS
35-
33+
array $bookmarks = [], // ADD THIS
3634
) {
3735
$this->sessionId = $sessionId;
3836
$this->txMeta = $txMeta ?? [];
3937
$this->timeout = $timeout;
4038
$this->bookmarks = $bookmarks; // ADD THIS
41-
4239
}
4340

4441
public function getSessionId(): Uuid

testkit-backend/testkit.sh

Lines changed: 10 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -37,80 +37,20 @@ pip install -r requirements.txt
3737
echo "Starting tests..."
3838

3939
EXIT_CODE=0
40-
#
41-
#python3 -m unittest tests.neo4j.test_authentication.TestAuthenticationBasic || EXIT_CODE=1
42-
#python3 -m unittest tests.neo4j.test_bookmarks.TestBookmarks || EXIT_CODE=1
43-
#
44-
## This test is still failing so we skip it
45-
## python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_autocommit_transactions_should_support_timeouttest_autocommit_transactions_should_support_timeout|| EXIT_CODE=1
46-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_iteration_smaller_than_fetch_size
47-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_can_return_node
48-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_can_return_relationship
49-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_can_return_path
50-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_autocommit_transactions_should_support_metadata
51-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_regex_in_parameter
52-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_regex_inline
53-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_iteration_larger_than_fetch_size
54-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_partial_iteration
55-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_simple_query
56-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_session_reuse
57-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_iteration_nested
58-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_recover_from_invalid_query
59-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_recover_from_fail_on_streaming
60-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_updates_last_bookmark
61-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_fails_on_bad_syntax
62-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_fails_on_missing_parameter
63-
#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_long_string
64-
#
65-
### This test is still failing so we skip it test_direct_driver
66-
#python3 -m unittest tests.neo4j.test_direct_driver.TestDirectDriver.test_custom_resolver|| EXIT_CODE=1
67-
#python3 -m unittest tests.neo4j.test_direct_driver.TestDirectDriver.test_fail_nicely_when_using_http_port|| EXIT_CODE=1
68-
#python3 -m unittest tests.neo4j.test_direct_driver.TestDirectDriver.test_supports_multi_db|| EXIT_CODE=1
69-
#python3 -m unittest tests.neo4j.test_direct_driver.TestDirectDriver.test_multi_db|| EXIT_CODE=1
70-
#python3 -m unittest tests.neo4j.test_direct_driver.TestDirectDriver.test_multi_db_various_databases|| EXIT_CODE=1
71-
#
72-
##test_summary
73-
#python3 -m unittest tests.neo4j.test_summary.TestSummary || EXIT_CODE=1
7440

75-
76-
#stub
77-
#test-basic-query
78-
#python3 -m unittest tests.stub.basic_query.test_basic_query.TestBasicQuery.test_4x4_populates_node_element_id_with_id
79-
#python3 -m unittest tests.stub.basic_query.test_basic_query.TestBasicQuery.test_5x0_populates_node_element_id_with_string
80-
#python3 -m unittest tests.stub.basic_query.test_basic_query.TestBasicQuery.test_4x4_populates_rel_element_id_with_id
81-
#python3 -m unittest tests.stub.basic_query.test_basic_query.TestBasicQuery.test_4x4_populates_path_element_ids_with_long
82-
83-
84-
#bookmarks
8541
#TestBookmarksV4
86-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_on_unused_sessions_are_returned #fixed
87-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_session_run #fixed
88-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_tx_run #fixed
89-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_sequence_of_writing_and_reading_tx
90-
91-
#TestBookmarksV5
92-
##
93-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_bookmarks_can_be_set # fixed
94-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_last_bookmark #fixed
95-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_send_and_receive_bookmarks_read_tx #fixed
96-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_send_and_receive_bookmarks_write_tx
97-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_sequence_of_writing_and_reading_tx
98-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_send_and_receive_multiple_bookmarks_write_tx
99-
100-
#test-session-run
101-
#python3 -m unittest tests.stub.session_run.test_session_run.TestSessionRun.test_discard_on_session_close_untouched_result
102-
#python3 -m unittest tests.stub.session_run.test_session_run.TestSessionRun.test_discard_on_session_close_unfinished_result
103-
#python3 -m unittest tests.stub.session_run.test_session_run.TestSessionRun.test_no_discard_on_session_close_finished_result
104-
#python3 -m unittest tests.stub.session_run.test_session_run.TestSessionRun.test_raises_error_on_session_run
105-
106-
#bookmarks
107-
#TestBookmarksV4
108-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_on_unused_sessions_are_returned
109-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_session_run
110-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_tx_run
111-
#python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_sequence_of_writing_and_reading_tx
42+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_on_unused_sessions_are_returned
43+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_session_run
44+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_bookmarks_tx_run
45+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v4.TestBookmarksV4.test_sequence_of_writing_and_reading_tx
11246

11347

48+
#TestBookmarksV5
49+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_bookmarks_can_be_set || EXIT_CODE=1
50+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_last_bookmark || EXIT_CODE=1
51+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_send_and_receive_bookmarks_write_tx || EXIT_CODE=1
52+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_sequence_of_writing_and_reading_tx || EXIT_CODE=1
53+
python3 -m unittest tests.stub.bookmarks.test_bookmarks_v5.TestBookmarksV5.test_send_and_receive_multiple_bookmarks_write_tx || EXIT_CODE=1
11454
#test_summary
11555

11656
exit $EXIT_CODE

tests/Integration/ComplexQueryTest.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public function testDiscardAfterTimeout(): void
270270

271271
// First, let's debug what timeout value is actually being sent
272272
$config = TransactionConfiguration::default()->withTimeout(2);
273-
echo "Config timeout: " . $config->getTimeout() . " seconds\n";
273+
echo 'Config timeout: '.$config->getTimeout()." seconds\n";
274274

275275
try {
276276
$result = $this->getSession(['bolt', 'neo4j'])
@@ -280,25 +280,23 @@ public function testDiscardAfterTimeout(): void
280280
$firstResult = $result->first();
281281
echo "Got first result, attempting to get 'x' value...\n";
282282
$value = $firstResult->get('x');
283-
echo "Successfully got value: " . $value . "\n";
283+
echo 'Successfully got value: '.$value."\n";
284284

285285
// If we reach here, no timeout occurred
286286
$this->fail('Query completed successfully - no timeout occurred. This suggests the timeout is not being applied correctly.');
287-
288287
} catch (Neo4jException $e) {
289-
echo "Neo4jException caught: " . $e->getMessage() . "\n";
290-
echo "Neo4j Code: " . $e->getNeo4jCode() . "\n";
288+
echo 'Neo4jException caught: '.$e->getMessage()."\n";
289+
echo 'Neo4j Code: '.$e->getNeo4jCode()."\n";
291290
self::assertStringContainsString('Neo.ClientError.Transaction.TransactionTimedOut', $e->getNeo4jCode());
292-
293291
} catch (ConnectionTimeoutException $e) {
294-
echo "ConnectionTimeoutException: " . $e->getMessage() . "\n";
292+
echo 'ConnectionTimeoutException: '.$e->getMessage()."\n";
295293
$this->fail('Connection timeout occurred instead of transaction timeout');
296-
297294
} catch (Exception $e) {
298-
echo "Other exception: " . get_class($e) . " - " . $e->getMessage() . "\n";
295+
echo 'Other exception: '.get_class($e).' - '.$e->getMessage()."\n";
299296
throw $e; // Re-throw for debugging
300297
}
301298
}
299+
302300
public function testTimeoutNoReturn(): void
303301
{
304302
$result = $this->getSession(['bolt', 'neo4j'])

0 commit comments

Comments
 (0)