From 22d4928695b22ecc68fdbeb4443590a045521292 Mon Sep 17 00:00:00 2001 From: Bernardo Guerreiro Date: Tue, 6 Feb 2024 16:36:22 +0000 Subject: [PATCH] feat(fargate): emit phaseStarted and phaseCompleted events to cloud --- .../platform/aws-ecs/legacy/run-cluster.js | 8 ++++++ .../platform/aws-ecs/legacy/sqs-reporter.js | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/packages/artillery/lib/platform/aws-ecs/legacy/run-cluster.js b/packages/artillery/lib/platform/aws-ecs/legacy/run-cluster.js index 504f13252d..175ebdddff 100644 --- a/packages/artillery/lib/platform/aws-ecs/legacy/run-cluster.js +++ b/packages/artillery/lib/platform/aws-ecs/legacy/run-cluster.js @@ -1906,6 +1906,14 @@ async function listen(context, ee) { ee.emit('stats', stats); }); + r.on('phaseStarted', (phase) => { + global.artillery.globalEvents.emit('phaseStarted', phase); + }); + + r.on('phaseCompleted', (phase) => { + global.artillery.globalEvents.emit('phaseCompleted', phase); + }); + r.start(); }); } diff --git a/packages/artillery/lib/platform/aws-ecs/legacy/sqs-reporter.js b/packages/artillery/lib/platform/aws-ecs/legacy/sqs-reporter.js index 71cbb977aa..747db7f8b4 100644 --- a/packages/artillery/lib/platform/aws-ecs/legacy/sqs-reporter.js +++ b/packages/artillery/lib/platform/aws-ecs/legacy/sqs-reporter.js @@ -29,6 +29,9 @@ class SqsReporter extends EventEmitter { this.metricsByPeriod = {}; // individual intermediates by worker this.mergedPeriodMetrics = []; // merged intermediates for a period + this.phaseStartedEventsSeen = {}; + this.phaseCompletedEventsSeen = {}; + // Debug info: this.messagesProcessed = {}; this.metricsMessagesFromWorkers = {}; @@ -187,6 +190,28 @@ class SqsReporter extends EventEmitter { return; } + if (body.event === 'phaseStarted') { + if ( + typeof self.phaseStartedEventsSeen[body.phase.index] === 'undefined' + ) { + self.phaseStartedEventsSeen[body.phase.index] = Date.now(); + self.emit(body.event, body.phase); + } + + return; + } + + if (body.event === 'phaseCompleted') { + if ( + typeof self.phaseCompletedEventsSeen[body.phase.index] === 'undefined' + ) { + self.phaseCompletedEventsSeen[body.phase.index] = Date.now(); + self.emit(body.event, body.phase); + } + + return; + } + // 'done' event is from SQS Plugin - unused for now if (body.event === 'done') { return;