Skip to content

Commit 0323620

Browse files
committed
fix(e2e): clean up sqs before tests run
1 parent ff037e0 commit 0323620

File tree

1 file changed

+35
-2
lines changed
  • features/sqs/step_definitions

1 file changed

+35
-2
lines changed

features/sqs/step_definitions/sqs.js

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,43 @@
11
const { Before } = require("cucumber");
22

3-
Before({ tags: "@sqs" }, function (scenario, callback) {
3+
Before({ tags: "@sqs" }, async function (scenario) {
44
const { SQS } = require("../../../clients/client-sqs");
55
this.service = new SQS({
66
region: "us-east-1",
77
});
88
this.createdQueues = [];
9-
callback();
9+
10+
// delete any stale queues found before the test starts.
11+
const list = await this.service.listQueues({});
12+
for (const url of list.QueueUrls || []) {
13+
if (url.includes("/aws-js-sdk-")) {
14+
try {
15+
if (url.includes("aws-js-sdk-")) {
16+
const created = Number(url.split("aws-js-sdk-")[1]);
17+
const now = Date.now();
18+
const dateLimit = new Date("2022-01-01").getTime();
19+
const ONE_HOUR = 60 * 60 * 1000;
20+
21+
// Avoid deleting any queues created very recently,
22+
// since another test could be running against them.
23+
24+
if (now - created > ONE_HOUR && created > dateLimit) {
25+
await this.service.deleteQueue({
26+
QueueUrl: url,
27+
});
28+
console.log("Deleting stale SQS queue", url, "created at", new Date(created));
29+
} else {
30+
console.log("Skipping cleanup of", url, "created at", new Date(created));
31+
}
32+
}
33+
} catch (e) {
34+
// queue cleanup errors are considered non-fatal to E2E.
35+
console.warn("Error during SQS queue cleanup: ", e);
36+
37+
// potential throttling issue, wait and continue.
38+
console.log("Waiting 1s.");
39+
await new Promise((r) => setTimeout(r, 1000));
40+
}
41+
}
42+
}
1043
});

0 commit comments

Comments
 (0)