Add logging for automation triggers

[MAILPOET-5568]
This commit is contained in:
Jan Jakes
2023-09-05 12:44:36 +02:00
committed by Aschepikov
parent 4b0a8bc06c
commit ef97e4d05a
2 changed files with 47 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
namespace MailPoet\Automation\Engine\Control; namespace MailPoet\Automation\Engine\Control;
use MailPoet\Automation\Engine\Data\AutomationRun; use MailPoet\Automation\Engine\Data\AutomationRun;
use MailPoet\Automation\Engine\Data\AutomationRunLog;
use MailPoet\Automation\Engine\Data\StepRunArgs; use MailPoet\Automation\Engine\Data\StepRunArgs;
use MailPoet\Automation\Engine\Data\Subject; use MailPoet\Automation\Engine\Data\Subject;
use MailPoet\Automation\Engine\Exceptions; use MailPoet\Automation\Engine\Exceptions;
@@ -31,6 +32,9 @@ class TriggerHandler {
/** @var StepScheduler */ /** @var StepScheduler */
private $stepScheduler; private $stepScheduler;
/** @var StepRunLoggerFactory */
private $stepRunLoggerFactory;
/** @var WordPress */ /** @var WordPress */
private $wordPress; private $wordPress;
@@ -41,6 +45,7 @@ class TriggerHandler {
SubjectTransformerHandler $subjectTransformerHandler, SubjectTransformerHandler $subjectTransformerHandler,
FilterHandler $filterHandler, FilterHandler $filterHandler,
StepScheduler $stepScheduler, StepScheduler $stepScheduler,
StepRunLoggerFactory $stepRunLoggerFactory,
WordPress $wordPress WordPress $wordPress
) { ) {
$this->automationStorage = $automationStorage; $this->automationStorage = $automationStorage;
@@ -49,6 +54,7 @@ class TriggerHandler {
$this->subjectTransformerHandler = $subjectTransformerHandler; $this->subjectTransformerHandler = $subjectTransformerHandler;
$this->filterHandler = $filterHandler; $this->filterHandler = $filterHandler;
$this->stepScheduler = $stepScheduler; $this->stepScheduler = $stepScheduler;
$this->stepRunLoggerFactory = $stepRunLoggerFactory;
$this->wordPress = $wordPress; $this->wordPress = $wordPress;
} }
@@ -90,9 +96,14 @@ class TriggerHandler {
continue; continue;
} }
$automationRunId = $this->automationRunStorage->createAutomationRun($automationRun); $automationRunId = $this->automationRunStorage->createAutomationRun($automationRun);
$automationRun->setId($automationRunId); $automationRun->setId($automationRunId);
$this->stepScheduler->scheduleNextStep($stepRunArgs); $this->stepScheduler->scheduleNextStep($stepRunArgs);
$logger = $this->stepRunLoggerFactory->createLogger($automationRunId, $step->getId(), AutomationRunLog::TYPE_TRIGGER);
$logger->logStepData($step);
$logger->logSuccess();
} }
} }
} }

View File

@@ -9,6 +9,7 @@ use MailPoet\Automation\Engine\Data\FilterGroup;
use MailPoet\Automation\Engine\Data\Filters; use MailPoet\Automation\Engine\Data\Filters;
use MailPoet\Automation\Engine\Data\Step; use MailPoet\Automation\Engine\Data\Step;
use MailPoet\Automation\Engine\Data\Subject; use MailPoet\Automation\Engine\Data\Subject;
use MailPoet\Automation\Engine\Storage\AutomationRunLogStorage;
use MailPoet\Automation\Engine\Storage\AutomationRunStorage; use MailPoet\Automation\Engine\Storage\AutomationRunStorage;
use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject; use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject; use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
@@ -28,6 +29,9 @@ class TriggerHandlerTest extends \MailPoetTest {
/** @var AutomationRunStorage */ /** @var AutomationRunStorage */
private $automationRunStorage; private $automationRunStorage;
/** @var AutomationRunLogStorage */
private $automationRunLogStorage;
/** @var SegmentsRepository */ /** @var SegmentsRepository */
private $segmentRepository; private $segmentRepository;
@@ -37,6 +41,7 @@ class TriggerHandlerTest extends \MailPoetTest {
public function _before() { public function _before() {
$this->testee = $this->diContainer->get(TriggerHandler::class); $this->testee = $this->diContainer->get(TriggerHandler::class);
$this->automationRunStorage = $this->diContainer->get(AutomationRunStorage::class); $this->automationRunStorage = $this->diContainer->get(AutomationRunStorage::class);
$this->automationRunLogStorage = $this->diContainer->get(AutomationRunLogStorage::class);
$this->segmentRepository = $this->diContainer->get(SegmentsRepository::class); $this->segmentRepository = $this->diContainer->get(SegmentsRepository::class);
$this->segments = [ $this->segments = [
@@ -196,4 +201,35 @@ class TriggerHandlerTest extends \MailPoetTest {
$this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]); $this->testee->processTrigger($trigger, [$segmentSubject, $subscriberSubject]);
$this->assertCount(1, $this->automationRunStorage->getAutomationRunsForAutomation($automation)); $this->assertCount(1, $this->automationRunStorage->getAutomationRunsForAutomation($automation));
} }
public function testItLogs(): void {
$trigger = $this->diContainer->get(SomeoneSubscribesTrigger::class);
$automation1 = $this->tester->createAutomation('Test 1', new Step('trigger-1', Step::TYPE_TRIGGER, $trigger->getKey(), [], []));
$automation2 = $this->tester->createAutomation('Test 2', new Step('trigger-2', Step::TYPE_TRIGGER, $trigger->getKey(), [], []));
$segmentSubject = new Subject(SegmentSubject::KEY, ['segment_id' => $this->segments['segment_1']->getId()]);
$this->testee->processTrigger($trigger, [$segmentSubject]);
$runs1 = $this->automationRunStorage->getAutomationRunsForAutomation($automation1);
$this->assertCount(1, $runs1);
$logs1 = $this->automationRunLogStorage->getLogsForAutomationRun($runs1[0]->getId());
$this->assertCount(1, $logs1);
$this->assertSame($runs1[0]->getId(), $logs1[0]->getAutomationRunId());
$this->assertSame('trigger-1', $logs1[0]->getStepId());
$this->assertSame($trigger->getKey(), $logs1[0]->getStepKey());
$this->assertSame('complete', $logs1[0]->getStatus());
$this->assertSame(1, $logs1[0]->getRunNumber());
$runs2 = $this->automationRunStorage->getAutomationRunsForAutomation($automation2);
$this->assertCount(1, $runs2);
$logs2 = $this->automationRunLogStorage->getLogsForAutomationRun($runs2[0]->getId());
$this->assertCount(1, $logs2);
$this->assertSame($runs2[0]->getId(), $logs2[0]->getAutomationRunId());
$this->assertSame('trigger-2', $logs2[0]->getStepId());
$this->assertSame($trigger->getKey(), $logs2[0]->getStepKey());
$this->assertSame('complete', $logs2[0]->getStatus());
$this->assertSame(1, $logs2[0]->getRunNumber());
}
} }