Skip to content

Commit 9ba51a2

Browse files
continue refactor 2
1 parent cbd8eac commit 9ba51a2

File tree

9 files changed

+273
-318
lines changed

9 files changed

+273
-318
lines changed

tests/zenko_tests/node_tests/backbeat/IngestionUtility.js

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -109,36 +109,26 @@ class IngestionUtility extends ReplicationUtility {
109109

110110
waitUntilIngested(bucketName, key, versionId, cb) {
111111
let status;
112-
let attemptCount = 0;
113-
const maxAttempts = 90; // 3 minutes max (90 * 2 seconds = 180 seconds)
114112
const expectedCode = 'NotFound';
115113
return async.doWhilst(
116-
callback => {
117-
attemptCount++;
118-
if (attemptCount > maxAttempts) {
119-
return callback(new Error(`Ingestion timeout: Object ${bucketName}/${key} not ingested after ${maxAttempts * 2} seconds`));
120-
}
121-
this.s3.send(new HeadObjectCommand({
122-
Bucket: bucketName,
123-
Key: key,
124-
VersionId: versionId,
125-
}))
126-
.then(() => {
127-
status = true;
128-
return callback();
129-
})
130-
.catch(err => {
131-
if (err.name !== expectedCode) {
132-
return callback(err);
133-
}
134-
status = false;
135-
return setTimeout(callback, 2000);
136-
});
137-
},
114+
callback => this.s3.send(new HeadObjectCommand({
115+
Bucket: bucketName,
116+
Key: key,
117+
VersionId: versionId,
118+
}))
119+
.then(() => {
120+
status = true;
121+
return callback();
122+
})
123+
.catch(err => {
124+
if (err.name !== expectedCode) {
125+
return callback(err);
126+
}
127+
status = false;
128+
return setTimeout(callback, 2000);
129+
}),
138130
() => !status,
139-
err => {
140-
cb(err);
141-
},
131+
cb,
142132
);
143133
}
144134

tests/zenko_tests/node_tests/backbeat/ReplicationUtility.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ class ReplicationUtility {
6161
return cb();
6262
}
6363

64-
// Use individual DeleteObjectCommand calls for all S3 clients to avoid Content-MD5 issues
65-
// This is more reliable than DeleteObjectsCommand and works consistently across all S3-compatible endpoints
6664
const deletePromises = versionList.map(item => {
6765
const params = {
6866
Bucket: bucketName,
@@ -74,13 +72,9 @@ class ReplicationUtility {
7472
return this.s3.send(new DeleteObjectCommand(params));
7573
});
7674

77-
Promise.all(deletePromises)
78-
.then(() => {
79-
cb();
80-
})
81-
.catch(err => {
82-
cb(err);
83-
});
75+
return Promise.all(deletePromises)
76+
.then(() => cb())
77+
.catch(err => cb(err));
8478
}
8579

8680
_setS3Client(s3Client) {

tests/zenko_tests/node_tests/backbeat/tests/crr/awsBackend.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const copyKey = `${key}-copy`;
1818
const copySource = `/${srcBucket}/${key}`;
1919
// eslint-disable-next-line
2020
const keyutf8 = `${keyPrefix}/%EA%9D%8崰㈌㒈保轖䳷䀰⺩ቆ楪僷ꈅꓜ퇬枅࿷염곞召㸾⌙ꪊᆐ庍뉆䌗↎幐냂詴 끴鹲萯⇂쫤ᛩ꺶㖭簹릍铰᫫暨鿐魪셑蛃춧㡡竺뫁噛̷ᗰⷑ錜⑔痴䧫㾵᏷ำꎆ꼵껪멷㄀誕㳓腜쒃컹㑻鳃삚舿췈孨੦⮀NJ곓⵪꺼꜈嗼뫘悕錸瑺⁤⑬১㵀⡸Ҏ礄䧛졼⮦ٞ쫁퓡垻ㆩꝿ詀펉ᆙ舑䜾힑藪碙ꀎꂰ췊Ᏻ 㘺幽醛잯ද汧Ꟑꛒⶨ쪸숞헹㭔ꡔᘼ뺓ᡆ᡾ᑟ䅅퀭耓弧⢠⇙폪ް蛧⃪Ἔ돫ꕢ븥ヲ캂䝄쟐颺ᓾ둾Ұ껗礞ᾰ瘹蒯硳풛瞋襎奺熝妒컚쉴⿂㽝㝳駵鈚䄖戭䌸᫲ᇁ䙪鸮ᐴ稫ⶭ뀟ھ⦿䴳稉ꉕ捈袿놾띐✯伤䃫⸧ꠏ瘌틳藔ˋ㫣敀䔩㭘식↴⧵佶痊牌ꪌ搒꾛æᤈべ쉴挜炩⽍舘ꆗ줣徭Z䐨 敗羥誜嘳ֶꫜ걵ࣀ묟ኋ拃秷䨸菥䟆곘縧멀煣⧃⏶혣뎧邕⢄⭖陙䣎灏ꗛ僚䌁䠒䲎둘ꪎ傩쿌ᨌ뀻阥눉넠猌ㆯ㰢船戦跏灳蝒礯鞰諾벥煸珬㟑孫鞹Ƭꄹ孙ꢱ钐삺ᓧ鈠䁞〯蘼᫩헸ῖ"`;
21-
const REPLICATION_TIMEOUT = 500000;
21+
const REPLICATION_TIMEOUT = 300000;
2222

2323
describe('Replication with AWS backend', function () {
2424
// eslint-disable-next-line

tests/zenko_tests/node_tests/backbeat/tests/ingestion/ingestionS3C.js

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -56,25 +56,15 @@ describe('Ingesting existing data from RING S3C bucket', () => {
5656
ingestionSrcBucket,
5757
OBJ_KEY,
5858
Buffer.alloc(1),
59-
(err, objData) => {
60-
if (err) {
61-
return next(err);
62-
}
63-
next(err, objData);
64-
},
59+
next,
6560
);
6661
},
6762
// create ingestion bucket
6863
(objData, next) => {
6964
scalityUtils.createIngestionBucket(
7065
INGESTION_DEST_BUCKET,
7166
location,
72-
err => {
73-
if (err) {
74-
return next(err, objData);
75-
}
76-
next(err, objData);
77-
},
67+
err => next(err, objData),
7868
);
7969
},
8070
// compare object
@@ -85,12 +75,7 @@ describe('Ingesting existing data from RING S3C bucket', () => {
8575
OBJ_KEY,
8676
objData.VersionId,
8777
undefined,
88-
err => {
89-
if (err) {
90-
return next(err);
91-
}
92-
next();
93-
},
78+
next,
9479
);
9580
},
9681
], done));
@@ -409,9 +394,7 @@ describe('Ingesting existing data from RING S3C bucket', () => {
409394
scalityUtils.createIngestionBucket(
410395
INGESTION_DEST_BUCKET,
411396
srcNonVersionedLocation,
412-
(err) => {
413-
next(err);
414-
},
397+
next,
415398
);
416399
},
417400
next => {
@@ -429,35 +412,20 @@ describe('Ingesting existing data from RING S3C bucket', () => {
429412
// Handle case where Versions or DeleteMarkers might be undefined/null
430413
const versions = data.Versions || [];
431414
const deleteMarkers = data.DeleteMarkers || [];
432-
if (versions.length !== nonVersionedObjectCount) {
433-
const error = new Error(`Expected ${nonVersionedObjectCount} objects but found ${versions.length} in bucket ${ingestionNonVersionedSrcBucket}`);
434-
return next(error);
435-
}
436-
437-
if (deleteMarkers.length !== 0) {
438-
const error = new Error(`Expected 0 delete markers but found ${deleteMarkers.length} in bucket ${ingestionNonVersionedSrcBucket}`);
439-
return next(error);
440-
}
441-
442-
// Process objects serially to avoid overwhelming the ingestion service
443-
async.forEachSeries(versions, (version, cb) => {
415+
assert.strictEqual(versions.length, nonVersionedObjectCount);
416+
assert.strictEqual(deleteMarkers.length, 0);
417+
async.forEach(versions, (version, cb) => {
444418
scalityUtils.compareObjectsRINGS3C(
445419
ingestionNonVersionedSrcBucket,
446420
INGESTION_DEST_BUCKET,
447421
version.Key,
448422
'null',
449423
undefined,
450-
(err) => {
451-
cb(err);
452-
},
424+
cb,
453425
);
454-
}, (err) => {
455-
next(err);
456-
});
426+
}, next);
457427
},
458-
], (err) => {
459-
done(err);
460-
});
428+
], done);
461429
});
462430
});
463431

tests/zenko_tests/node_tests/backbeat/tests/lifecycle/transition.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const assert = require('assert');
2-
const console = require('console');
32
const uuid = require('uuid/v4');
43
const { series } = require('async');
54

tests/zenko_tests/node_tests/cloudserver/keyFormatVersion/tests/nonVersionedBucket.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ const BUCKET_NAME = {
2424
const ownerInfo = {};
2525

2626
async function putObjects(bucketName) {
27-
for (let n = 0; n < 10; n++) {
28-
await s3.send(new PutObjectCommand({ Bucket: bucketName, Key: `key-${n}` }));
29-
}
27+
await Promise.all(Array.from({ length: 10 }, (_, n) => s3.send(new PutObjectCommand(
28+
{ Bucket: bucketName, Key: `key-${n}` },
29+
))));
3030
}
3131

3232
async function emptyBucket(bucketName) {
33-
for (let n = 0; n < 10; n++) {
34-
await s3.send(new DeleteObjectCommand({ Bucket: bucketName, Key: `key-${n}` }));
35-
}
33+
await Promise.all(Array.from({ length: 10 }, (_, n) => s3.send(new DeleteObjectCommand(
34+
{ Bucket: bucketName, Key: `key-${n}` },
35+
))));
3636
}
3737

3838
function expectedKeyList(startKey, endKey) {

tests/zenko_tests/node_tests/cloudserver/keyFormatVersion/tests/versionedBucket.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,21 @@ const ownerInfo = {};
3737

3838
async function putObjectVersions(objName, vFormat) {
3939
for (let i = 0; i < 3; i++) {
40-
const res = await s3.send(new PutObjectCommand({ Bucket: BUCKET_NAME[vFormat], Key: objName }));
41-
versionIds[vFormat][objName].push(res.VersionId);
40+
// eslint-disable-next-line no-await-in-loop
41+
const result = await s3.send(new PutObjectCommand(
42+
{ Bucket: BUCKET_NAME[vFormat], Key: objName },
43+
));
44+
versionIds[vFormat][objName].push(result.VersionId);
4245
}
4346
}
4447

4548
async function deleteObjectVersions(objName, vFormat) {
46-
for (let i = 0; i < 3; i++) {
47-
await s3.send(new DeleteObjectCommand({
48-
Bucket: BUCKET_NAME[vFormat],
49-
Key: objName,
50-
VersionId: versionIds[vFormat][objName][i],
51-
}));
52-
}
49+
const promises = Array.from({ length: 3 }, (_, i) => s3.send(new DeleteObjectCommand({
50+
Bucket: BUCKET_NAME[vFormat],
51+
Key: objName,
52+
VersionId: versionIds[vFormat][objName][i],
53+
})));
54+
await Promise.all(promises);
5355
}
5456

5557
describe('Cloudserver : keyFormatVersion : versioned bucket', () => {

tests/zenko_tests/node_tests/cloudserver/keyFormatVersion/tests/versioningSuspended.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,21 @@ const ownerInfo = {};
3737

3838
async function putObjectVersions(objName, vFormat) {
3939
for (let i = 0; i < 3; i++) {
40-
const res = await s3.send(new PutObjectCommand({ Bucket: BUCKET_NAME[vFormat], Key: objName }));
41-
versionIds[vFormat][objName].push(res.VersionId);
40+
// eslint-disable-next-line no-await-in-loop
41+
const result = await s3.send(new PutObjectCommand(
42+
{ Bucket: BUCKET_NAME[vFormat], Key: objName },
43+
));
44+
versionIds[vFormat][objName].push(result.VersionId);
4245
}
4346
}
4447

4548
async function deleteObjectVersions(objName, vFormat) {
46-
for (let i = 0; i < 3; i++) {
47-
await s3.send(new DeleteObjectCommand({
48-
Bucket: BUCKET_NAME[vFormat],
49-
Key: objName,
50-
VersionId: versionIds[vFormat][objName][i],
51-
}));
52-
}
49+
const promises = Array.from({ length: 3 }, (_, i) => s3.send(new DeleteObjectCommand({
50+
Bucket: BUCKET_NAME[vFormat],
51+
Key: objName,
52+
VersionId: versionIds[vFormat][objName][i],
53+
})));
54+
await Promise.all(promises);
5355
}
5456

5557
describe('Cloudserver : keyFormatVersion : versioning suspended bucket', () => {

0 commit comments

Comments
 (0)