Use completedAt timestamp for success and failures

[MAILPOET-4463]
This commit is contained in:
John Oleksowicz
2022-09-12 12:49:13 -05:00
committed by Jan Jakeš
parent 57cf547a8a
commit 2c2f15a562
3 changed files with 13 additions and 12 deletions

View File

@ -123,8 +123,8 @@ class StepHandler {
$log = new WorkflowRunLog($workflowRun->getId(), $step->getId(), $args);
try {
$this->stepRunners[$stepType]->run($step, $workflow, $workflowRun);
$log->markCompleted();
} catch (Exception $e) {
$log->markCompletedSuccessfully();
} catch (\Exception $e) {
$log->markFailed();
$log->addError($e);
throw $e;

View File

@ -121,13 +121,14 @@ class WorkflowRunLog {
];
}
public function markCompleted(): void {
public function markCompletedSuccessfully(): void {
$this->status = self::STATUS_COMPLETED;
$this->completedAt = new DateTimeImmutable();
}
public function markFailed(): void {
$this->status = self::STATUS_FAILED;
$this->completedAt = new DateTimeImmutable();
}
public function addError(\Exception $exception, string $userFacingMessage = ''): void {

View File

@ -115,6 +115,15 @@ class WorkflowRunLogTest extends \MailPoetTest {
expect($log->getCompletedAt())->isInstanceOf(\DateTimeImmutable::class);
}
public function testItAddsCompletedAtTimestampAfterFailing(): void {
$workflowRunLogs = $this->getLogsForAction(function() {
throw new \Exception('error');
});
expect($workflowRunLogs)->count(1);
$log = $workflowRunLogs[0];
expect($log->getCompletedAt())->isInstanceOf(\DateTimeImmutable::class);
}
public function testItLogsFailedStatusCorrectly(): void {
$workflowRunLogs = $this->getLogsForAction(function() {
throw new \Exception('error');
@ -124,15 +133,6 @@ class WorkflowRunLogTest extends \MailPoetTest {
expect($log->getStatus())->equals('failed');
}
public function testItDoesNotHaveCompletedAtIfItFailsToRun(): void {
$workflowRunLogs = $this->getLogsForAction(function() {
throw new \Exception('error');
});
expect($workflowRunLogs)->count(1);
$log = $workflowRunLogs[0];
expect($log->getCompletedAt())->null();
}
public function testItIncludesErrorOnFailure(): void {
$workflowRunLogs = $this->getLogsForAction(function() {
throw new \Exception('error', 12345);