Skip to content

Commit 9293dbb

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

File tree

1 file changed

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

1 file changed

+33
-2
lines changed

features/sqs/step_definitions/sqs.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,41 @@
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+
try {
14+
if (url.includes("aws-js-sdk-")) {
15+
const created = Number(url.split("aws-js-sdk-")[1]);
16+
const now = Date.now();
17+
const dateLimit = new Date("2022-01-01").getTime();
18+
const ONE_HOUR = 60 * 60 * 1000;
19+
20+
// Avoid deleting any queues created very recently,
21+
// since another test could be running against them.
22+
23+
if (now - created > ONE_HOUR && created > dateLimit) {
24+
await this.service.deleteQueue({
25+
QueueUrl: url,
26+
});
27+
console.log("Deleting stale SQS queue", url, "created at", new Date(created));
28+
} else {
29+
console.log("Skipping cleanup of", url, "created at", new Date(created));
30+
}
31+
}
32+
} catch (e) {
33+
// queue cleanup errors are considered non-fatal to E2E.
34+
console.warn("Error during SQS queue cleanup: ", e);
35+
36+
// potential throttling issue, wait and continue.
37+
console.log("Waiting 1s.");
38+
await new Promise((r) => setTimeout(r, 1000));
39+
}
40+
}
1041
});

0 commit comments

Comments
 (0)