Skip to content

Commit 0c602dc

Browse files
committed
agent stuff
1 parent 2a94e5f commit 0c602dc

26 files changed

Lines changed: 1418 additions & 267 deletions

src/Agent/AgentCheckRegistration.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,17 @@ public function setNamespace(string $Namespace): self
127127
return $this;
128128
}
129129

130+
public function getPartition(): string
131+
{
132+
return $this->Partition;
133+
}
134+
135+
public function setPartition(string $Partition): self
136+
{
137+
$this->Partition = $Partition;
138+
return $this;
139+
}
140+
130141
public function jsonSerialize(): \stdClass
131142
{
132143
$out = parent::jsonSerialize();

src/Agent/AgentWeights.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,23 @@ public function getPassing(): int
4040
return $this->Passing;
4141
}
4242

43+
public function setPassing(int $Passing): self
44+
{
45+
$this->Passing = $Passing;
46+
return $this;
47+
}
48+
4349
public function getWarning(): int
4450
{
4551
return $this->Warning;
4652
}
4753

54+
public function setWarning(int $Warning): self
55+
{
56+
$this->Warning = $Warning;
57+
return $this;
58+
}
59+
4860
public static function jsonUnserialize(\stdClass $decoded): self
4961
{
5062
$n = new self();
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
<?php
2+
3+
namespace DCarbone\PHPConsulAPITests\Unit\Agent;
4+
5+
use DCarbone\PHPConsulAPI\Agent\AgentCheckRegistration;
6+
use PHPUnit\Framework\TestCase;
7+
8+
/**
9+
* @internal
10+
*/
11+
final class AgentCheckRegistrationTest extends TestCase
12+
{
13+
public function testConstructorDefaults(): void
14+
{
15+
$r = new AgentCheckRegistration();
16+
self::assertSame('', $r->getID());
17+
self::assertSame('', $r->ID);
18+
self::assertSame('', $r->getServiceID());
19+
self::assertSame('', $r->ServiceID);
20+
self::assertSame('', $r->getNamespace());
21+
self::assertSame('', $r->Namespace);
22+
self::assertSame('', $r->getPartition());
23+
self::assertSame('', $r->Partition);
24+
// inherited from AgentServiceCheck
25+
self::assertSame('', $r->getCheckID());
26+
self::assertSame('', $r->getName());
27+
self::assertSame([], $r->getArgs());
28+
}
29+
30+
public function testConstructorWithParams(): void
31+
{
32+
$r = new AgentCheckRegistration(
33+
ID: 'chk-1',
34+
ServiceID: 'svc-1',
35+
CheckID: 'chk-id',
36+
Name: 'health',
37+
Interval: '10s',
38+
HTTP: 'http://localhost:8080/health',
39+
Namespace: 'ns-1',
40+
Partition: 'pt-1',
41+
);
42+
self::assertSame('chk-1', $r->getID());
43+
self::assertSame('chk-1', $r->ID);
44+
self::assertSame('svc-1', $r->getServiceID());
45+
self::assertSame('ns-1', $r->getNamespace());
46+
self::assertSame('pt-1', $r->getPartition());
47+
// inherited
48+
self::assertSame('chk-id', $r->getCheckID());
49+
self::assertSame('health', $r->getName());
50+
self::assertSame('10s', $r->getInterval());
51+
self::assertSame('http://localhost:8080/health', $r->getHTTP());
52+
}
53+
54+
public function testFluentSetters(): void
55+
{
56+
$r = new AgentCheckRegistration();
57+
$result = $r->setID('id-1')
58+
->setServiceID('svc-1')
59+
->setNamespace('ns')
60+
->setPartition('pt');
61+
self::assertSame($r, $result);
62+
self::assertSame('id-1', $r->getID());
63+
self::assertSame('id-1', $r->ID);
64+
self::assertSame('svc-1', $r->getServiceID());
65+
self::assertSame('svc-1', $r->ServiceID);
66+
self::assertSame('ns', $r->getNamespace());
67+
self::assertSame('ns', $r->Namespace);
68+
self::assertSame('pt', $r->getPartition());
69+
self::assertSame('pt', $r->Partition);
70+
}
71+
72+
public function testJsonSerializeOmitsDefaults(): void
73+
{
74+
$r = new AgentCheckRegistration();
75+
$out = $r->jsonSerialize();
76+
self::assertInstanceOf(\stdClass::class, $out);
77+
self::assertObjectNotHasProperty('ID', $out);
78+
self::assertObjectNotHasProperty('ServiceID', $out);
79+
self::assertObjectNotHasProperty('Namespace', $out);
80+
self::assertObjectNotHasProperty('Partition', $out);
81+
}
82+
83+
public function testJsonSerializeWithValues(): void
84+
{
85+
$r = new AgentCheckRegistration(
86+
ID: 'chk-1',
87+
ServiceID: 'svc-1',
88+
CheckID: 'cid',
89+
HTTP: 'http://localhost/health',
90+
Interval: '5s',
91+
Namespace: 'ns',
92+
Partition: 'pt',
93+
);
94+
$out = $r->jsonSerialize();
95+
self::assertSame('chk-1', $out->ID);
96+
self::assertSame('svc-1', $out->ServiceID);
97+
self::assertSame('ns', $out->Namespace);
98+
self::assertSame('pt', $out->Partition);
99+
self::assertSame('cid', $out->CheckID);
100+
self::assertSame('http://localhost/health', $out->HTTP);
101+
self::assertSame('5s', $out->Interval);
102+
}
103+
}
104+

tests/Unit/Agent/AgentCheckTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace DCarbone\PHPConsulAPITests\Unit\Agent;
44

55
use DCarbone\PHPConsulAPI\Agent\AgentCheck;
6-
use DCarbone\PHPConsulAPI\Agent\AgentCheckUpdate;
76
use DCarbone\PHPConsulAPI\Health\HealthCheckDefinition;
87
use PHPUnit\Framework\TestCase;
98

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace DCarbone\PHPConsulAPITests\Unit\Agent;
4+
5+
use DCarbone\PHPConsulAPI\Agent\AgentCheck;
6+
use DCarbone\PHPConsulAPI\Agent\AgentChecksResponse;
7+
use PHPUnit\Framework\TestCase;
8+
9+
/**
10+
* @internal
11+
*/
12+
final class AgentChecksResponseTest extends TestCase
13+
{
14+
public function testDefaults(): void
15+
{
16+
$r = new AgentChecksResponse();
17+
self::assertSame([], $r->getValue());
18+
self::assertSame([], $r->Checks);
19+
self::assertNull($r->Err);
20+
}
21+
22+
public function testUnmarshalValue(): void
23+
{
24+
$obj = new \stdClass();
25+
$obj->Node = 'n1';
26+
$obj->CheckID = 'chk1';
27+
$obj->Name = 'test';
28+
$obj->Status = 'passing';
29+
$obj->Notes = '';
30+
$obj->Output = '';
31+
$obj->ServiceID = '';
32+
$obj->ServiceName = '';
33+
$obj->Type = '';
34+
$obj->Definition = new \stdClass();
35+
36+
$r = new AgentChecksResponse();
37+
$r->unmarshalValue(['chk1' => $obj]);
38+
39+
$checks = $r->getValue();
40+
self::assertCount(1, $checks);
41+
self::assertArrayHasKey('chk1', $checks);
42+
self::assertInstanceOf(AgentCheck::class, $checks['chk1']);
43+
self::assertSame('n1', $checks['chk1']->getNode());
44+
}
45+
46+
public function testOffsetAccess(): void
47+
{
48+
$r = new AgentChecksResponse();
49+
self::assertTrue(isset($r[0]));
50+
self::assertTrue(isset($r[1]));
51+
self::assertSame([], $r[0]);
52+
self::assertNull($r[1]);
53+
}
54+
}
55+
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
3+
namespace DCarbone\PHPConsulAPITests\Unit\Agent;
4+
5+
use DCarbone\PHPConsulAPI\Agent\AgentHealthServiceResponse;
6+
use DCarbone\PHPConsulAPI\Agent\AgentServiceChecksInfo;
7+
use DCarbone\PHPConsulAPI\PHPLib\Error;
8+
use PHPUnit\Framework\TestCase;
9+
10+
/**
11+
* @internal
12+
*/
13+
final class AgentHealthServiceResponseTest extends TestCase
14+
{
15+
public function testConstructorWithNullChecksInfo(): void
16+
{
17+
$r = new AgentHealthServiceResponse('passing', null, null);
18+
self::assertSame('passing', $r->getAggregatedStatus());
19+
self::assertSame('passing', $r->AggregatedStatus);
20+
self::assertNull($r->getAgentServiceChecksInfos());
21+
self::assertNull($r->AgentServiceChecksInfo);
22+
self::assertNull($r->Err);
23+
}
24+
25+
public function testConstructorWithChecksInfo(): void
26+
{
27+
$info = new \stdClass();
28+
$info->AggregatedStatus = 'passing';
29+
$info->Service = new \stdClass();
30+
$info->Service->ID = 'svc-1';
31+
$info->Service->Service = 'web';
32+
$info->Service->Port = 80;
33+
$info->Service->Address = '';
34+
$info->Service->Tags = [];
35+
$info->Service->Meta = new \stdClass();
36+
$info->Service->Kind = '';
37+
$info->Service->CreateIndex = 0;
38+
$info->Service->ModifyIndex = 0;
39+
$info->Checks = [];
40+
41+
$r = new AgentHealthServiceResponse('passing', $info, null);
42+
self::assertSame('passing', $r->getAggregatedStatus());
43+
self::assertInstanceOf(AgentServiceChecksInfo::class, $r->getAgentServiceChecksInfos());
44+
}
45+
46+
public function testConstructorWithError(): void
47+
{
48+
$err = new Error('something failed');
49+
$r = new AgentHealthServiceResponse('critical', null, $err);
50+
self::assertSame('critical', $r->getAggregatedStatus());
51+
self::assertSame($err, $r->Err);
52+
}
53+
54+
public function testOffsetAccess(): void
55+
{
56+
$r = new AgentHealthServiceResponse('passing', null, null);
57+
self::assertTrue(isset($r[0]));
58+
self::assertTrue(isset($r[1]));
59+
self::assertTrue(isset($r[2]));
60+
self::assertFalse(isset($r[3]));
61+
self::assertSame('passing', $r[0]);
62+
self::assertNull($r[1]);
63+
self::assertNull($r[2]);
64+
}
65+
}
66+
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
namespace DCarbone\PHPConsulAPITests\Unit\Agent;
4+
5+
use DCarbone\PHPConsulAPI\Agent\AgentHealthServicesResponse;
6+
use DCarbone\PHPConsulAPI\Agent\AgentServiceChecksInfo;
7+
use DCarbone\PHPConsulAPI\PHPLib\Error;
8+
use PHPUnit\Framework\TestCase;
9+
10+
/**
11+
* @internal
12+
*/
13+
final class AgentHealthServicesResponseTest extends TestCase
14+
{
15+
public function testConstructorEmptyCheckInfos(): void
16+
{
17+
$r = new AgentHealthServicesResponse('passing', [], null);
18+
self::assertSame('passing', $r->getAggregatedStatus());
19+
self::assertSame('passing', $r->AggregatedStatus);
20+
self::assertSame([], $r->getAgentServiceChecksInfos());
21+
self::assertNull($r->Err);
22+
}
23+
24+
public function testConstructorWithCheckInfos(): void
25+
{
26+
$info = new \stdClass();
27+
$info->AggregatedStatus = 'passing';
28+
$info->Service = new \stdClass();
29+
$info->Service->ID = 'svc-1';
30+
$info->Service->Service = 'web';
31+
$info->Service->Port = 80;
32+
$info->Service->Address = '';
33+
$info->Service->Tags = [];
34+
$info->Service->Meta = new \stdClass();
35+
$info->Service->Kind = '';
36+
$info->Service->CreateIndex = 0;
37+
$info->Service->ModifyIndex = 0;
38+
$info->Checks = [];
39+
40+
$r = new AgentHealthServicesResponse('passing', [$info], null);
41+
self::assertCount(1, $r->getAgentServiceChecksInfos());
42+
self::assertInstanceOf(AgentServiceChecksInfo::class, $r->getAgentServiceChecksInfos()[0]);
43+
}
44+
45+
public function testConstructorWithError(): void
46+
{
47+
$err = new Error('fail');
48+
$r = new AgentHealthServicesResponse('critical', [], $err);
49+
self::assertSame($err, $r->Err);
50+
}
51+
52+
public function testOffsetAccess(): void
53+
{
54+
$r = new AgentHealthServicesResponse('passing', [], null);
55+
self::assertTrue(isset($r[0]));
56+
self::assertTrue(isset($r[1]));
57+
self::assertTrue(isset($r[2]));
58+
self::assertFalse(isset($r[3]));
59+
self::assertSame('passing', $r[0]);
60+
self::assertSame([], $r[1]);
61+
self::assertNull($r[2]);
62+
}
63+
}
64+
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace DCarbone\PHPConsulAPITests\Unit\Agent;
4+
5+
use DCarbone\PHPConsulAPI\Agent\AgentMember;
6+
use DCarbone\PHPConsulAPI\Agent\AgentMembersResponse;
7+
use PHPUnit\Framework\TestCase;
8+
9+
/**
10+
* @internal
11+
*/
12+
final class AgentMembersResponseTest extends TestCase
13+
{
14+
public function testDefaults(): void
15+
{
16+
$r = new AgentMembersResponse();
17+
self::assertSame([], $r->getValue());
18+
self::assertSame([], $r->Members);
19+
self::assertNull($r->Err);
20+
}
21+
22+
public function testUnmarshalValue(): void
23+
{
24+
$obj = new \stdClass();
25+
$obj->Name = 'node-1';
26+
$obj->Addr = '10.0.0.1';
27+
$obj->Port = 8301;
28+
$obj->Tags = new \stdClass();
29+
$obj->Status = 1;
30+
$obj->ProtocolMin = 1;
31+
$obj->ProtocolMax = 5;
32+
$obj->ProtocolCur = 2;
33+
$obj->DelegateMin = 2;
34+
$obj->DelegateMax = 5;
35+
$obj->DelegateCur = 4;
36+
37+
$r = new AgentMembersResponse();
38+
$r->unmarshalValue([$obj]);
39+
40+
$members = $r->getValue();
41+
self::assertCount(1, $members);
42+
self::assertInstanceOf(AgentMember::class, $members[0]);
43+
self::assertSame('node-1', $members[0]->getName());
44+
}
45+
46+
public function testOffsetAccess(): void
47+
{
48+
$r = new AgentMembersResponse();
49+
self::assertTrue(isset($r[0]));
50+
self::assertTrue(isset($r[1]));
51+
self::assertSame([], $r[0]);
52+
self::assertNull($r[1]);
53+
}
54+
}
55+

0 commit comments

Comments
 (0)