Skip to content

Commit 7e552b6

Browse files
CLDSRV-720: Try to clean all buckets before list
Test can fail if previous tests did not clean buckets
1 parent 3b05ec9 commit 7e552b6

1 file changed

Lines changed: 57 additions & 16 deletions

File tree

  • tests/functional/aws-node-sdk/test/service

tests/functional/aws-node-sdk/test/service/get.js

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,41 @@ const describeFn = process.env.AWS_ON_AIR
1212
? describe.skip
1313
: describe;
1414

15+
async function cleanBucket(bucketUtils, s3, Bucket) {
16+
try {
17+
await bucketUtils.empty(Bucket);
18+
await s3.deleteBucket({ Bucket }).promise();
19+
} catch (err) {
20+
process.stdout
21+
.write(`Error emptying and deleting bucket: ${err}\n`);
22+
// ignore the error and continue
23+
}
24+
}
25+
26+
async function cleanAllBuckets(bucketUtils, s3) {
27+
let listingLoop = true;
28+
let ContinuationToken;
29+
30+
process.stdout.write('Try cleaning all buckets before running the test\n');
31+
32+
while (listingLoop) {
33+
const list = await s3.listBuckets({ ContinuationToken }).promise();
34+
ContinuationToken = list.ContinuationToken;
35+
listingLoop = !!ContinuationToken;
36+
37+
if (list.Buckets.length) {
38+
process.stdout
39+
.write(`Found ${list.Buckets.length} buckets to clean:\n${
40+
JSON.stringify(list.Buckets, null, 2)}\n`);
41+
}
42+
43+
// clean sequentially to avoid overloading
44+
for (const bucket of list.Buckets) {
45+
await cleanBucket(bucketUtils, s3, bucket.Name);
46+
}
47+
}
48+
}
49+
1550
describeFn('GET Service - AWS.S3.listBuckets', function getService() {
1651
this.timeout(600000);
1752

@@ -98,22 +133,28 @@ describeFn('GET Service - AWS.S3.listBuckets', function getService() {
98133
s3 = bucketUtil.s3;
99134
s3.config.update({ maxRetries: 0 });
100135
s3.config.update({ httpOptions: { timeout: 0 } });
101-
async.eachLimit(createdBuckets, 10, (bucketName, moveOn) => {
102-
s3.createBucket({ Bucket: bucketName }, err => {
103-
if (bucketName.endsWith('000')) {
104-
// log to keep ci alive
105-
process.stdout
106-
.write(`creating bucket: ${bucketName}\n`);
107-
}
108-
moveOn(err);
109-
});
110-
},
111-
err => {
112-
if (err) {
113-
process.stdout.write(`err creating buckets: ${err}`);
114-
}
115-
done(err);
116-
});
136+
async.series([
137+
// if other tests failed to delete their buckets, listings might be wrong
138+
// try toclean all buckets before running the test
139+
next => cleanAllBuckets(bucketUtil, s3).then(next).catch(next),
140+
next =>
141+
async.eachLimit(createdBuckets, 10, (bucketName, moveOn) => {
142+
s3.createBucket({ Bucket: bucketName }, err => {
143+
if (bucketName.endsWith('000')) {
144+
// log to keep ci alive
145+
process.stdout
146+
.write(`creating bucket: ${bucketName}\n`);
147+
}
148+
moveOn(err);
149+
});
150+
},
151+
err => {
152+
if (err) {
153+
process.stdout.write(`err creating buckets: ${err}`);
154+
}
155+
next(err);
156+
})
157+
], done);
117158
});
118159

119160
after(done => {

0 commit comments

Comments
 (0)