Skip to content

Commit 5ff54d8

Browse files
committed
tests improved for cluster update
1 parent e1b2bed commit 5ff54d8

15 files changed

Lines changed: 327 additions & 21 deletions

src/Models/Request/CollectionUpdate/AbortTransferOperation.php renamed to src/Models/Request/ClusterUpdate/AbortTransferOperation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22
/**
3-
* @since Mar 2023
3+
* @since Dec 2023
44
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
55
*/
66

7-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
88

99
class AbortTransferOperation extends MoveShardOperation
1010
{

src/Models/Request/CollectionUpdate/CreateShardingKeyOperation.php renamed to src/Models/Request/ClusterUpdate/CreateShardingKeyOperation.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22
/**
3-
* @since Mar 2023
3+
* @since Dec 2023
44
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
55
*/
66

7-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
88

99
class CreateShardingKeyOperation implements Operation
1010
{
@@ -30,7 +30,7 @@ public function toArray(): array
3030
'shards_number' => $this->shardsNumber,
3131
'replication_factor' => $this->replicationFactor,
3232
'placement' => $this->placement,
33-
]);
33+
], static function($v) { return $v !== null; });
3434
}
3535

3636
public function setShardsNumber(int $shardsNumber): CreateShardingKeyOperation

src/Models/Request/CollectionUpdate/DropReplicaOperation.php renamed to src/Models/Request/ClusterUpdate/DropReplicaOperation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22
/**
3-
* @since Mar 2023
3+
* @since Dec 2023
44
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
55
*/
66

7-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
88

99
class DropReplicaOperation implements Operation
1010
{

src/Models/Request/CollectionUpdate/DropShardingKeyOperation.php renamed to src/Models/Request/ClusterUpdate/DropShardingKeyOperation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22
/**
3-
* @since Mar 2023
3+
* @since Dec 2023
44
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
55
*/
66

7-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
88

99
class DropShardingKeyOperation implements Operation
1010
{

src/Models/Request/CollectionUpdate/MoveShardOperation.php renamed to src/Models/Request/ClusterUpdate/MoveShardOperation.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<?php
22
/**
3-
* @since Mar 2023
3+
* @since Dec 2023
44
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
55
*/
66

7-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
8+
9+
use Qdrant\Exception\InvalidArgumentException;
810

911
class MoveShardOperation implements Operation
1012
{
@@ -28,11 +30,15 @@ public function toArray(): array
2830
'to_peer_id' => $this->toPeerId,
2931
'from_peer_id' => $this->fromPeerId,
3032
'method' => $this->method,
31-
]);
33+
], static function($v) { return $v !== null; });
3234
}
3335

3436
public function setMethod(string $method): MoveShardOperation
3537
{
38+
if (!in_array($method, ['snapshot', 'stream_records'])) {
39+
throw new InvalidArgumentException('Method could be snapshot or stream_record for operations');
40+
}
41+
3642
$this->method = $method;
3743

3844
return $this;

src/Models/Request/CollectionUpdate/Operation.php renamed to src/Models/Request/ClusterUpdate/Operation.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
<?php
22
/**
3-
* Operation
4-
*
5-
* @since Oct 2023
3+
* @since Dec 2023
64
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
75
*/
86

9-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
108

119
interface Operation
1210
{

src/Models/Request/CollectionUpdate/ReplicateShardOperation.php renamed to src/Models/Request/ClusterUpdate/ReplicateShardOperation.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22
/**
3-
* @since Mar 2023
3+
* @since Dec 2023
44
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
55
*/
66

7-
namespace Qdrant\Models\Request\CollectionUpdate;
7+
namespace Qdrant\Models\Request\ClusterUpdate;
88

99
class ReplicateShardOperation extends MoveShardOperation
1010
{

src/Models/Request/UpdateCollectionCluster.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace Qdrant\Models\Request;
1010

11-
use Qdrant\Models\Request\CollectionUpdate\Operation;
11+
use Qdrant\Models\Request\ClusterUpdate\Operation;
1212

1313
class UpdateCollectionCluster implements RequestModel
1414
{

tests/Integration/Endpoints/Collections/ClusterTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
use Qdrant\Endpoints\Collections;
99
use Qdrant\Exception\InvalidArgumentException;
10-
use Qdrant\Models\Request\CollectionUpdate\MoveShardOperation;
10+
use Qdrant\Models\Request\ClusterUpdate\MoveShardOperation;
11+
use Qdrant\Models\Request\UpdateCollectionCluster;
1112
use Qdrant\Tests\Integration\AbstractIntegration;
1213

1314
class ClusterTest extends AbstractIntegration
@@ -41,7 +42,7 @@ public function testClusterUpdate(): void
4142
$this->createCollections('sample-collection');
4243
$cluster->setCollectionName('sample-collection');
4344

44-
$operation = new MoveShardOperation(0, 1, 0);
45+
$operation = new UpdateCollectionCluster(new MoveShardOperation(0, 1, 0));
4546

4647
$response = $cluster->update($operation);
4748
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
/**
3+
* @since Oct 2023
4+
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
5+
*/
6+
7+
namespace Qdrant\Tests\Unit\Models\Request\ClusterUpdate;
8+
9+
use PHPUnit\Framework\TestCase;
10+
use Qdrant\Exception\InvalidArgumentException;
11+
use Qdrant\Models\Request\ClusterUpdate\AbortTransferOperation;
12+
use Qdrant\Models\Request\UpdateCollectionCluster;
13+
14+
class AbortTransferOperationTest extends TestCase
15+
{
16+
public function testBasic(): void
17+
{
18+
$config = new AbortTransferOperation(0, 2, 1);
19+
20+
$this->assertEquals([
21+
'shard_id' => 0,
22+
'to_peer_id' => 2,
23+
'from_peer_id' => 1,
24+
], $config->toArray());
25+
}
26+
27+
public function testWithUpdateCollectionCluster()
28+
{
29+
$config = new UpdateCollectionCluster(
30+
new AbortTransferOperation(0, 2, 1)
31+
);
32+
33+
$this->assertEquals([
34+
'abort_transfer' => [
35+
'shard_id' => 0,
36+
'to_peer_id' => 2,
37+
'from_peer_id' => 1,
38+
]
39+
], $config->toArray());
40+
}
41+
42+
public function testWithMethod(): void
43+
{
44+
$config = (new AbortTransferOperation(0, 2, 1))
45+
->setMethod('snapshot');
46+
47+
$this->assertEquals([
48+
'shard_id' => 0,
49+
'to_peer_id' => 2,
50+
'from_peer_id' => 1,
51+
'method' => 'snapshot'
52+
], $config->toArray());
53+
}
54+
55+
public function testWithInvalidMethod(): void
56+
{
57+
$this->expectException(InvalidArgumentException::class);
58+
$this->expectExceptionMessage('Method could be snapshot or stream_record for operations');
59+
$config = (new AbortTransferOperation(0, 2, 1))
60+
->setMethod('foo');
61+
}
62+
}

0 commit comments

Comments
 (0)