From af235a9b2265f3bd7389360fc26246f17810335d Mon Sep 17 00:00:00 2001 From: DEFFO DENIS Date: Sun, 20 Aug 2023 15:16:12 -0400 Subject: [PATCH] add sqs queue url to platform opts --- packages/artillery/lib/cmds/run-lambda.js | 4 ++++ .../lib/platform/aws-lambda/index.js | 20 ++++++++++++------- .../test/cloud-e2e/run-lambda.test.js | 2 ++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/artillery/lib/cmds/run-lambda.js b/packages/artillery/lib/cmds/run-lambda.js index c74eb7f954..ab7764af2e 100644 --- a/packages/artillery/lib/cmds/run-lambda.js +++ b/packages/artillery/lib/cmds/run-lambda.js @@ -33,6 +33,10 @@ class RunLambdaCommand extends Command { flags['platform-opt'].push(`subnet-ids=${flags['subnet-ids']}`); } + if (flags['sqs-queue-url']) { + flags['platform-opt'].push(`sqs-queue-url=${flags['sqs-queue-url']}`); + } + flags.platform = 'aws:lambda'; RunCommand.runCommandImplementation(flags, argv, args); diff --git a/packages/artillery/lib/platform/aws-lambda/index.js b/packages/artillery/lib/platform/aws-lambda/index.js index b3db63ddc0..92c783d5ed 100644 --- a/packages/artillery/lib/platform/aws-lambda/index.js +++ b/packages/artillery/lib/platform/aws-lambda/index.js @@ -86,6 +86,8 @@ class PlatformLambda { this.lambdaRoleArn = platformConfig['lambda-role-arn'] || platformConfig['lambdaRoleArn']; + this.platformSqsQueueUrl = platformConfig['sqs-queue-url']; + this.platformOpts = platformOpts; this.artilleryArgs = []; @@ -297,7 +299,8 @@ class PlatformLambda { const s3path = await this.uploadLambdaZip(bucketName, zipfile); debug({ s3path }); this.lambdaZipPath = s3path; - const sqsQueueUrl = await this.createSQSQueue(this.region); + const sqsQueueUrl = platformSqsQueueUrl ? platformSqsQueueUrl : + await this.createSQSQueue(this.region); this.sqsQueueUrl = sqsQueueUrl; if (typeof this.lambdaRoleArn === 'undefined') { @@ -327,7 +330,7 @@ class PlatformLambda { poolSize: Math.min(self.platformOpts.count, 100) }, { - queueUrl: process.env.SQS_QUEUE_URL || this.sqsQueueUrl, + queueUrl: this.sqsQueueUrl, region: this.region, waitTimeSeconds: 10, messageAttributeNames: ['testId', 'workerId'], @@ -577,11 +580,14 @@ class PlatformLambda { }) .promise(); - await sqs - .deleteQueue({ - QueueUrl: this.sqsQueueUrl - }) - .promise(); + + if (typeof process.env.RETAIN_SQS_QUEUE === 'undefined' || process.env.RETAIN_SQS_QUEUE == false) { + await sqs + .deleteQueue({ + QueueUrl: this.sqsQueueUrl + }) + .promise(); + } if (typeof process.env.RETAIN_LAMBDA === 'undefined') { await lambda diff --git a/packages/artillery/test/cloud-e2e/run-lambda.test.js b/packages/artillery/test/cloud-e2e/run-lambda.test.js index 2716b8447d..72396d49e7 100644 --- a/packages/artillery/test/cloud-e2e/run-lambda.test.js +++ b/packages/artillery/test/cloud-e2e/run-lambda.test.js @@ -29,6 +29,8 @@ tap.test('Run a test on AWS Lambda', async (t) => { 'memory-size=3000', '--platform-opt', 'region=eu-west-1', + '--platform-opt', + 'sqs-queue-url="https://sqs.us-east-1.amazonaws.com/177715257436/MyQueue"', '--config', configPath, scenarioPath