Skip to content

Commit 5a20659

Browse files
committed
Cleanup tests and fix broken regressions
1 parent 2c44919 commit 5a20659

File tree

13 files changed

+155
-216
lines changed

13 files changed

+155
-216
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,6 @@
8484
"scripts": {
8585
"fix-cs": "./vendor/bin/php-cs-fixer fix",
8686
"check-cs": "./vendor/bin/php-cs-fixer fix --dry-run",
87-
"psalm": "./vendor/bin/psalm"
87+
"psalm": "./vendor/bin/psalm --show-info"
8888
}
8989
}

src/Bolt/BoltConnection.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public function getProtocol(): ConnectionProtocol
128128
/**
129129
* @psalm-mutation-free
130130
*/
131-
public function getAccessMode(): AccessMode
131+
public function getAccessMode(): ?AccessMode
132132
{
133133
return $this->config->getAccessMode();
134134
}
@@ -217,7 +217,7 @@ public function begin(?string $database, ?float $timeout, BookmarkHolder $holder
217217
{
218218
$this->consumeResults();
219219

220-
$extra = $this->buildRunExtra($database, $timeout, $holder, AccessMode::WRITE(), $txMetaData);
220+
$extra = $this->buildRunExtra($database, $timeout, $holder, null, $txMetaData);
221221
$message = $this->messageFactory->createBeginMessage($extra);
222222
$response = $message->send()->getResponse();
223223
$this->assertNoFailure($response);
@@ -249,7 +249,7 @@ public function run(
249249
array $parameters,
250250
?string $database,
251251
?float $timeout,
252-
BookmarkHolder $holder,
252+
?BookmarkHolder $holder,
253253
?AccessMode $mode,
254254
?iterable $tsxMetadata,
255255
): array {
@@ -295,7 +295,6 @@ public function protocol(): V4_4|V5|V5_1|V5_2|V5_3|V5_4
295295
public function pull(?int $qid, ?int $fetchSize): array
296296
{
297297
$extra = $this->buildResultExtra($fetchSize, $qid);
298-
$this->logger?->log(LogLevel::DEBUG, 'PULL', $extra);
299298

300299
$tbr = [];
301300
$message = $this->messageFactory->createPullMessage($extra);
@@ -331,7 +330,7 @@ public function close(): void
331330
}
332331
}
333332

334-
private function buildRunExtra(?string $database, ?float $timeout, BookmarkHolder $holder, ?AccessMode $mode, ?iterable $metadata): array
333+
private function buildRunExtra(?string $database, ?float $timeout, ?BookmarkHolder $holder, ?AccessMode $mode, ?iterable $metadata): array
335334
{
336335
$extra = [];
337336
if ($database !== null) {
@@ -341,7 +340,7 @@ private function buildRunExtra(?string $database, ?float $timeout, BookmarkHolde
341340
$extra['tx_timeout'] = (int) ($timeout * 1000);
342341
}
343342

344-
if (!$holder->getBookmark()->isEmpty()) {
343+
if ($holder && !$holder->getBookmark()->isEmpty()) {
345344
$extra['bookmarks'] = $holder->getBookmark()->values();
346345
}
347346

@@ -366,7 +365,7 @@ private function buildResultExtra(?int $fetchSize, ?int $qid): array
366365
$extra['n'] = $fetchSize;
367366
}
368367

369-
if ($qid !== null) {
368+
if ($qid !== null && $qid >= 0) {
370369
$extra['qid'] = $qid;
371370
}
372371

@@ -420,6 +419,10 @@ public function assertNoFailure(Response $response): void
420419
*/
421420
public function discardUnconsumedResults(): void
422421
{
422+
if (!in_array($this->protocol()->serverState, [ServerState::STREAMING, ServerState::TX_STREAMING], true)) {
423+
return;
424+
}
425+
423426
$this->logger?->log(LogLevel::DEBUG, 'Discarding unconsumed results');
424427

425428
$this->subscribedResults = array_values(array_filter(

src/Bolt/BoltUnmanagedTransaction.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public function __construct(
5252
private readonly TransactionConfiguration $tsxConfig,
5353
private readonly BookmarkHolder $bookmarkHolder,
5454
private readonly BoltMessageFactory $messageFactory,
55+
private readonly bool $isInstantTransaction,
5556
) {
5657
}
5758

@@ -147,8 +148,8 @@ public function runStatement(Statement $statement): SummarizedResult
147148
$parameters->toArray(),
148149
$this->database,
149150
$this->tsxConfig->getTimeout(),
150-
$this->bookmarkHolder,
151-
$this->config->getAccessMode(),
151+
$this->isInstantTransaction ? $this->bookmarkHolder : null, // let the begin transaction pass the bookmarks if it is a managed transaction
152+
$this->isInstantTransaction ? $this->config->getAccessMode() : null, // let the begin transaction decide if it is a managed transaction
152153
$this->tsxConfig->getMetaData()
153154
);
154155
} catch (Throwable $e) {

src/Bolt/Session.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ private function beginInstantTransaction(
195195
$tsxConfig,
196196
$this->bookmarkHolder,
197197
new BoltMessageFactory($connection, $this->getLogger()),
198+
true,
198199
);
199200
}
200201

@@ -246,6 +247,7 @@ private function startTransaction(TransactionConfiguration $config, SessionConfi
246247
$config,
247248
$this->bookmarkHolder,
248249
new BoltMessageFactory($connection, $this->getLogger()),
250+
false
249251
);
250252
}
251253

src/Client.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ private function startSession(?string $alias, SessionConfiguration $configuratio
130130

131131
public function writeTransaction(callable $tsxHandler, ?string $alias = null, ?TransactionConfiguration $config = null)
132132
{
133-
if ($this->defaultSessionConfiguration->getAccessMode() === AccessMode::WRITE()) {
133+
$accessMode = $this->defaultSessionConfiguration->getAccessMode();
134+
if ($accessMode === null || $accessMode === AccessMode::WRITE()) {
134135
$session = $this->getSession($alias);
135136
} else {
136137
$sessionConfig = $this->defaultSessionConfiguration->withAccessMode(AccessMode::WRITE());

src/Common/ConnectionConfiguration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function __construct(
2727
private string $serverAgent,
2828
private readonly UriInterface $serverAddress,
2929
private readonly ConnectionProtocol $protocol,
30-
private readonly AccessMode $accessMode,
30+
private readonly ?AccessMode $accessMode,
3131
private readonly ?DatabaseInfo $databaseInfo,
3232
private readonly string $encryptionLevel,
3333
) {
@@ -54,7 +54,7 @@ public function getProtocol(): ConnectionProtocol
5454
return $this->protocol;
5555
}
5656

57-
public function getAccessMode(): AccessMode
57+
public function getAccessMode(): ?AccessMode
5858
{
5959
return $this->accessMode;
6060
}

src/Contracts/ConnectionInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public function getProtocol(): ConnectionProtocol;
7575
*
7676
* @psalm-mutation-free
7777
*/
78-
public function getAccessMode(): AccessMode;
78+
public function getAccessMode(): ?AccessMode;
7979

8080
/**
8181
* Returns the information about the database the connection reaches.

src/Databags/SessionConfiguration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ public function getFetchSize(): int
117117
*
118118
* @psalm-suppress ImpureMethodCall
119119
*/
120-
public function getAccessMode(): AccessMode
120+
public function getAccessMode(): ?AccessMode
121121
{
122-
return $this->accessMode ?? AccessMode::WRITE();
122+
return $this->accessMode;
123123
}
124124

125125
/**

src/Neo4j/Neo4jConnectionPool.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,9 @@ public function getLogger(): ?Neo4jLogger
185185
/**
186186
* @throws Exception
187187
*/
188-
private function getNextServer(RoutingTable $table, AccessMode $mode): Uri
188+
private function getNextServer(RoutingTable $table, ?AccessMode $mode): Uri
189189
{
190-
if (AccessMode::WRITE() === $mode) {
190+
if ($mode === null || AccessMode::WRITE() === $mode) {
191191
$servers = $table->getWithRole(RoutingRoles::LEADER());
192192
} else {
193193
$servers = $table->getWithRole(RoutingRoles::FOLLOWER());

testkit-backend/src/Handlers/NewSession.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,13 @@ public function handle($request): SessionResponse
4141
{
4242
$driver = $this->repository->getDriver($request->driverId);
4343

44-
$config = SessionConfiguration::default()
45-
->withAccessMode($request->accessMode === 'r' ? AccessMode::READ() : AccessMode::WRITE());
44+
$config = SessionConfiguration::default();
45+
46+
if ($request->accessMode === 'r') {
47+
$config = $config->withAccessMode(AccessMode::READ());
48+
} elseif ($request->accessMode === 'w') {
49+
$config = $config->withAccessMode(AccessMode::WRITE());
50+
}
4651

4752
if ($request->bookmarks !== null) {
4853
$config = $config->withBookmarks([new Bookmark($request->bookmarks)]);
@@ -52,7 +57,9 @@ public function handle($request): SessionResponse
5257
$config = $config->withDatabase($request->database);
5358
}
5459

55-
$config = $config->withFetchSize($request->fetchSize ?? 1);
60+
if ($request->fetchSize !== null) {
61+
$config = $config->withFetchSize($request->fetchSize);
62+
}
5663

5764
$session = $driver->createSession($config);
5865
$id = Uuid::v4();

0 commit comments

Comments
 (0)