Skip to content

Commit efc1b48

Browse files
authored
Merge pull request #525 from keboola/roman-pst-1973-store-final-result
PST-1973 (service-container): Store final job result
2 parents a832f92 + 41baf88 commit efc1b48

File tree

4 files changed

+43
-20
lines changed

4 files changed

+43
-20
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ name_prefix = "${NAME_PREFIX}"
3939
EOF
4040
4141
cat <<EOF > .env.local
42+
TEST_HOSTNAME_SUFFIX=keboola.com
4243
TEST_STORAGE_API_URL=https://connection.keboola.com
4344
TEST_STORAGE_API_TOKEN=
4445
TEST_STORAGE_API_TOKEN_MASTER=

provisioning/local/.terraform.lock.hcl

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/JobPatchData.php

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,25 @@
66

77
use JsonSerializable;
88
use Keboola\JobQueueInternalClient\Exception\ClientException;
9-
use Keboola\JobQueueInternalClient\JobFactory\Job;
9+
use Keboola\JobQueueInternalClient\Result\JobMetrics;
1010
use Keboola\JobQueueInternalClient\Result\JobResult;
1111

1212
class JobPatchData implements JsonSerializable
1313
{
14-
/** @var string */
15-
private $status;
16-
17-
/** @var string */
18-
private $desiredStatus;
19-
20-
/** @var JobResult|null */
21-
private $result;
22-
23-
/** @var array */
24-
private $usageData;
25-
26-
/** @var string|null */
27-
private $runnerId;
14+
private ?string $status = null;
15+
private ?string $desiredStatus = null;
16+
private ?JobResult $result = null;
17+
private ?JobMetrics $metrics = null;
18+
private ?array $usageData = null;
19+
private ?string $runnerId = null;
2820

2921
public function jsonSerialize(): array
3022
{
3123
return array_filter([
3224
'status' => $this->status,
3325
'desiredStatus' => $this->desiredStatus,
34-
'result' => is_null($this->result) ? null : $this->result->jsonSerialize(),
26+
'result' => $this->result?->jsonSerialize(),
27+
'metrics' => $this->metrics?->jsonSerialize(),
3528
'usageData' => $this->usageData,
3629
'runnerId' => $this->runnerId,
3730
]);
@@ -91,6 +84,17 @@ public function getResult(): ?JobResult
9184
return $this->result;
9285
}
9386

87+
public function setMetrics(?JobMetrics $metrics): JobPatchData
88+
{
89+
$this->metrics = $metrics;
90+
return $this;
91+
}
92+
93+
public function getMetrics(): ?JobMetrics
94+
{
95+
return $this->metrics;
96+
}
97+
9498
public function setUsageData(array $usageData): JobPatchData
9599
{
96100
$this->usageData = $usageData;

tests/JobPatchDataTest.php

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
namespace Keboola\JobQueueInternalClient\Tests;
66

77
use Keboola\JobQueueInternalClient\Exception\ClientException;
8-
use Keboola\JobQueueInternalClient\JobFactory\Job;
98
use Keboola\JobQueueInternalClient\JobFactory\JobInterface;
109
use Keboola\JobQueueInternalClient\JobPatchData;
10+
use Keboola\JobQueueInternalClient\Result\JobMetrics;
1111
use Keboola\JobQueueInternalClient\Result\JobResult;
1212
use PHPUnit\Framework\TestCase;
1313

@@ -20,7 +20,9 @@ public function testAccessors(): void
2020
->setStatus(JobInterface::STATUS_PROCESSING)
2121
->setDesiredStatus(JobInterface::DESIRED_STATUS_PROCESSING)
2222
->setResult((new JobResult())->setMessage('processing'))
23-
->setUsageData(['foo' => 'bar']);
23+
->setMetrics((new JobMetrics())->setBackendSize('large'))
24+
->setUsageData(['foo' => 'bar'])
25+
->setRunnerId('runner-id');
2426

2527
$expectedResult = [
2628
'message' => 'processing',
@@ -33,19 +35,33 @@ public function testAccessors(): void
3335
'tables' => [],
3436
],
3537
];
38+
$expectedMetrics = [
39+
'storage' => [
40+
'inputTablesBytesSum' => null,
41+
'outputTablesBytesSum' => null,
42+
],
43+
'backend' => [
44+
'size' => 'large',
45+
'containerSize' => null,
46+
'context' => null,
47+
],
48+
];
3649
self::assertSame(JobInterface::STATUS_PROCESSING, $jobPatchData->getStatus());
3750
self::assertSame(JobInterface::DESIRED_STATUS_PROCESSING, $jobPatchData->getDesiredStatus());
38-
$result = is_null($jobPatchData->getResult()) ?: $jobPatchData->getResult()->jsonSerialize();
39-
self::assertSame($expectedResult, $result);
51+
self::assertSame($expectedResult, $jobPatchData->getResult()?->jsonSerialize());
52+
self::assertSame($expectedMetrics, $jobPatchData->getMetrics()?->jsonSerialize());
4053
self::assertSame(['foo' => 'bar'], $jobPatchData->getUsageData());
54+
self::assertSame('runner-id', $jobPatchData->getRunnerId());
4155
self::assertSame(
4256
[
4357
'status' => JobInterface::STATUS_PROCESSING,
4458
'desiredStatus' => JobInterface::DESIRED_STATUS_PROCESSING,
4559
'result' => $expectedResult,
60+
'metrics' => $expectedMetrics,
4661
'usageData' => [
4762
'foo' => 'bar',
4863
],
64+
'runnerId' => 'runner-id',
4965
],
5066
$jobPatchData->jsonSerialize(),
5167
);

0 commit comments

Comments
 (0)