diff --git a/test/browser/browser-utils.js b/test/browser/browser-utils.js index 001bbe817..0f3818a3f 100644 --- a/test/browser/browser-utils.js +++ b/test/browser/browser-utils.js @@ -13,8 +13,7 @@ if (process && process.browser) { exports.cleanBucket = async function (store, bucket, multiversion) { store.useBucket(bucket); let result; - const subres = {}; - const options = { subres }; + const options = { versionId: null }; if (!multiversion) { try { @@ -38,13 +37,11 @@ exports.cleanBucket = async function (store, bucket, multiversion) { }); } result[deleteKey] = result[deleteKey] || []; - for (let i = 0; i < result[deleteKey].length; i++) { - const obj = result[deleteKey][i]; - if (multiversion) { - subres.versionId = obj.versionId; - } - await store.delete(obj.name, options); - } + + await Promise.all(result[deleteKey].map(_ => + store.delete(_.name, multiversion ? + Object.assign({}, options, { versionId: _.versionId }) : + options))); } await handleDelete('objects'); if (multiversion) { @@ -55,11 +52,10 @@ exports.cleanBucket = async function (store, bucket, multiversion) { 'max-uploads': 1000 }); const uploads = result.uploads || []; - /* eslint no-await-in-loop: [0] */ - for (let i = 0; i < uploads.length; i++) { - const up = uploads[i]; - await store.abortMultipartUpload(up.name, up.uploadId); - } + await Promise.all(uploads.map(_ => store.abortMultipartUpload(_.name, _.uploadId))); + + const channels = (await store.listChannels()).channels.map(_ => _.Name); + await Promise.all(channels.map(_ => store.deleteChannel(_))); await store.deleteBucket(bucket); }; diff --git a/test/browser/browser.test.js b/test/browser/browser.test.js index b8fe4ae44..d67e3cab6 100644 --- a/test/browser/browser.test.js +++ b/test/browser/browser.test.js @@ -34,10 +34,7 @@ const cleanBucket = async (store) => { 'max-uploads': 1000 }); const uploads = result.uploads || []; - for (let i = 0; i < uploads.length; i++) { - const up = uploads[i]; - await store.abortMultipartUpload(up.name, up.uploadId); - } + await Promise.all(uploads.map(_ => store.abortMultipartUpload(_.name, _.uploadId))); }; describe('browser', () => { @@ -855,20 +852,16 @@ describe('browser', () => { 'max-uploads': 1000 }); const uploads = result.uploads || []; - for (let i = 0; i < uploads.length; i++) { - const up = uploads[i]; - await store.abortMultipartUpload(up.name, up.uploadId); - } + await Promise.all(uploads.map(_ => store.abortMultipartUpload(_.name, _.uploadId))); }); it('should list by key marker', async () => { const name = `${prefix}multipart/list-key`; - // var name = '/' - const ids = []; - for (let i = 0; i < 5; i++) { - const init = await store.initMultipartUpload(name + i); - ids.push(init.uploadId); - } + + const ids = (await Promise.all(Array(5) + .fill(1).map((v, i) => store.initMultipartUpload(name + i)))) + .map(_ => _.uploadId); + // list all uploads let result = await store.listUploads({ 'max-uploads': 10 @@ -895,12 +888,13 @@ describe('browser', () => { it('should list by id marker', async () => { const name = `${prefix}multipart/list-id`; - const ids = []; - for (let i = 0; i < 5; i++) { - const init = await store.initMultipartUpload(name); - ids.push(init.uploadId); - } - ids.sort(); + const ids = (await Promise.all(Array(5) + .fill(1) + // eslint-disable-next-line no-unused-vars + .map(_ => store.initMultipartUpload(name)))) + .map(_ => _.uploadId) + .sort(); + // list all uploads let result = await store.listUploads({ 'max-uploads': 10 @@ -926,20 +920,20 @@ describe('browser', () => { // it('should list by id & key marker', async () => { const fooName = `${prefix}multipart/list-foo`; - const fooIds = []; - for (let i = 0; i < 5; i++) { - const init = await store.initMultipartUpload(fooName); - fooIds.push(init.uploadId); - } - fooIds.sort(); + const fooIds = (await Promise.all(Array(5) + .fill(1) + // eslint-disable-next-line no-unused-vars + .map(_ => store.initMultipartUpload(fooName)))) + .map(_ => _.uploadId) + .sort(); const barName = `${prefix}multipart/list-bar`; - const barIds = []; - for (let i = 0; i < 5; i++) { - const result = await store.initMultipartUpload(barName); - barIds.push(result.uploadId); - } - barIds.sort(); + const barIds = (await Promise.all(Array(5) + .fill(5) + // eslint-disable-next-line no-unused-vars + .map(_ => store.initMultipartUpload(barName)))) + .map(_ => _.uploadId) + .sort(); // after 1 const result = await store.listUploads({ @@ -1181,16 +1175,22 @@ describe('browser', () => { const init = await store.initMultipartUpload(name); const { uploadId } = init; const partSize = 100 * 1024; - const dones = []; - for (let i = 1; i <= 10; i++) { - const start = (i - 1) * partSize; - const end = Math.min(i * partSize, file.size); - const part = await store.uploadPart(name, uploadId, i, file, start, end); - dones.push({ - number: i, - etag: part.res.headers.etag - }); - } + + const parts = await Promise.all(Array(10) + .fill(1) + .map((v, i) => + store.uploadPart( + name, + uploadId, + i + 1, + file, + i * partSize, + Math.min((i + 1) * partSize, 10 * 100 * 1024) + ))); + const dones = parts.map((_, i) => ({ + number: i + 1, + etag: _.etag + })); const result = await store.completeMultipartUpload(name, uploadId, dones); assert.equal(result.res.status, 200); diff --git a/test/node/bucket.test.js b/test/node/bucket.test.js index e36eacf07..496c19ec1 100644 --- a/test/node/bucket.test.js +++ b/test/node/bucket.test.js @@ -26,15 +26,13 @@ describe('test/bucket.test.js', () => { 'max-keys': 20 }); - /* eslint no-restricted-syntax: [0] */ - for (const bucketObj of bucketResult.buckets) { - if (bucketObj.name.startsWith('ali-oss')) { - /* eslint no-await-in-loop: [0] */ - config.region = bucketObj.region; - store = oss(config); - await utils.cleanBucket(store, bucketObj.name); - } - } + await Promise.all((bucketResult.buckets || []) + .filter(_ => _.name.startsWith('ali-oss')) + .map(_bucket => + utils.cleanBucket( + oss(Object.assign(config, { region: _bucket.region })), + _bucket.name + ))); config.region = defaultRegion; store = oss(config); @@ -199,11 +197,7 @@ describe('test/bucket.test.js', () => { before(async () => { // create 2 buckets listBucketsPrefix = `ali-oss-list-buckets-${prefix.replace(/[/.]/g, '-')}`; - for (let i = 0; i < 2; i++) { - const name = listBucketsPrefix + i; - const result = await store.putBucket(name); - assert.equal(result.res.status, 200); - } + await Promise.all(Array(2).fill(1).map((v, i) => store.putBucket(listBucketsPrefix + i))); }); it('should list buckets by prefix', async () => { @@ -226,14 +220,8 @@ describe('test/bucket.test.js', () => { } }); - /* eslint no-empty: [0] */ after(async () => { - for (let i = 0; i < 2; i++) { - const name = listBucketsPrefix + i; - try { - await store.deleteBucket(name); - } catch (err) {} - } + await Promise.all(Array(2).fill(1).map((v, i) => store.deleteBucket(listBucketsPrefix + i))); }); }); diff --git a/test/node/multipart.test.js b/test/node/multipart.test.js index a7aad8eda..dd46a8fd4 100644 --- a/test/node/multipart.test.js +++ b/test/node/multipart.test.js @@ -33,20 +33,14 @@ describe('test/multipart.test.js', () => { 'max-uploads': 1000 }); const uploads = result.uploads || []; - for (let i = 0; i < uploads.length; i++) { - const up = uploads[i]; - /* eslint no-await-in-loop: [0] */ - await store.abortMultipartUpload(up.name, up.uploadId); - } + await Promise.all(uploads.map(_ => store.abortMultipartUpload(_.name, _.uploadId))); }); it('should list by key marker', async () => { const name = `${prefix}multipart/list-key`; - const ids = []; - for (let i = 0; i < 5; i++) { - const result = await store.initMultipartUpload(name + i); - ids.push(result.uploadId); - } + const ids = (await Promise.all(Array(5) + .fill(1).map((v, i) => store.initMultipartUpload(name + i)))) + .map(_ => _.uploadId); // list all uploads let result = await store.listUploads({ 'max-uploads': 10 @@ -73,12 +67,10 @@ describe('test/multipart.test.js', () => { it('should list by id marker', async () => { const name = `${prefix}multipart/list-id`; - const ids = []; - for (let i = 0; i < 5; i++) { - const result = await store.initMultipartUpload(name); - ids.push(result.uploadId); - } - ids.sort(); + const ids = (await Promise.all(Array(5) + .fill(1) + .map(_ => store.initMultipartUpload(name)))) + .map(_ => _.uploadId).sort(); // list all uploads let result = await store.listUploads({ @@ -106,20 +98,18 @@ describe('test/multipart.test.js', () => { it('should list by id & key marker', async () => { const fooName = `${prefix}multipart/list-foo`; - const fooIds = []; - for (let i = 0; i < 5; i++) { - const result = await store.initMultipartUpload(fooName); - fooIds.push(result.uploadId); - } - fooIds.sort(); + const fooIds = (await Promise.all(Array(5) + .fill(1) + .map(_ => store.initMultipartUpload(fooName)))) + .map(_ => _.uploadId) + .sort(); const barName = `${prefix}multipart/list-bar`; - const barIds = []; - for (let i = 0; i < 5; i++) { - const result = await store.initMultipartUpload(barName); - barIds.push(result.uploadId); - } - barIds.sort(); + const barIds = (await Promise.all(Array(5) + .fill(5) + .map(_ => store.initMultipartUpload(barName)))) + .map(_ => _.uploadId) + .sort(); // after 1 let result = await store.listUploads({ @@ -410,16 +400,21 @@ describe('test/multipart.test.js', () => { const init = await store.initMultipartUpload(name); const { uploadId } = init; const partSize = 100 * 1024; - const dones = []; - for (let i = 1; i <= 10; i++) { - const start = (i - 1) * partSize; - const end = Math.min(i * partSize, 10 * 100 * 1024); - const part = await store.uploadPart(name, uploadId, i, fileName, start, end); - dones.push({ - number: i, - etag: part.etag - }); - } + const parts = await Promise.all(Array(10) + .fill(1) + .map((v, i) => + store.uploadPart( + name, + uploadId, + i + 1, + fileName, + i * partSize, + Math.min((i + 1) * partSize, 10 * 100 * 1024) + ))); + const dones = parts.map((_, i) => ({ + number: i + 1, + etag: _.etag + })); const result = await store.completeMultipartUpload(name, uploadId, dones); assert.equal(result.res.status, 200); @@ -562,21 +557,25 @@ describe('test/multipart.test.js', () => { const partSize = 100 * 1024;// 100kb const dones = []; - // if file part is 10 - for (let i = 1; i <= 10; i++) { + const uploadFn = async (i) => { const start = partSize * (i - 1); const end = Math.min(start + partSize, fileSize); const range = `${start}-${end - 1}`; - /* eslint no-await-in-loop: [0] */ - const part = await client.uploadPartCopy( - copyName - , result.uploadId, i, range, sourceData, {}, + const part = await store.uploadPartCopy( + copyName, + result.uploadId, + i, + range, + sourceData, + {} ); dones.push({ number: i, etag: part.res.headers.etag }); - } + }; + + await Promise.all(Array(10).fill(1).map((v, i) => uploadFn(i + 1))); const complete = await client.completeMultipartUpload(copyName, result.uploadId, dones); diff --git a/test/node/multiversion.test.js b/test/node/multiversion.test.js index 6983ce398..03288ed80 100644 --- a/test/node/multiversion.test.js +++ b/test/node/multiversion.test.js @@ -268,17 +268,16 @@ describe('test/multiversion.test.js', () => { before(async () => { await store.putBucketVersioning(bucket, enabled); let result; - for (let i = 0; i < 3; i++) { + const _createHistoryObject = async (i) => { name = name.replace('file', `file${i}`); - // eslint-disable-next-line no-await-in-loop result = await store.put(name, __filename); - // eslint-disable-next-line no-await-in-loop await store.delete(name); arr.push({ key: name, versionId: result.res.headers['x-oss-version-id'] }); - } + }; + await Promise.all(Array(3).fill(1).map((_, i) => _createHistoryObject(i))); }); it('should deleteMulti', async () => { @@ -750,12 +749,11 @@ describe('test/multiversion.test.js', () => { const partSize = 100 * 1024; // 100kb const dones = []; - // if file part is 10 - for (let i = 1; i <= 10; i++) { + + const uploadFn = async (i) => { const start = partSize * (i - 1); const end = Math.min(start + partSize, fileSize); const range = `${start}-${end - 1}`; - /* eslint no-await-in-loop: [0] */ const part = await store.uploadPartCopy( copyName, result.uploadId, @@ -768,7 +766,8 @@ describe('test/multiversion.test.js', () => { number: i, etag: part.res.headers.etag }); - } + }; + await Promise.all(Array(10).fill(1).map((v, i) => uploadFn(i + 1))); const complete = await store.completeMultipartUpload( copyName, diff --git a/test/node/object.test.js b/test/node/object.test.js index 5999bbd83..2b68a5163 100644 --- a/test/node/object.test.js +++ b/test/node/object.test.js @@ -1736,25 +1736,20 @@ describe('test/object.test.js', () => { }; const names = []; - /* eslint no-restricted-syntax: [0] */ - /* eslint guard-for-in: [0] */ - /* eslint no-await-in-loop: [0] */ - for (const k in keys) { - const key = prefixz + keys[k]; + const keyEncodingPut = async (kv) => { + const key = `${prefixz}${kv}`; let result = await store.put(key, Buffer.from('')); assert.equal(result.res.status, 200); - result = await store.list({ prefixz }); const objects = result.objects.map(obj => obj.name); assert(objects.indexOf(key) >= 0); - result = await store.head(key); assert.equal(result.res.status, 200); - - names.push(keys[k]); - } + names.push(kv); + }; + await Promise.all(Object.values(keys).map(kv => keyEncodingPut(kv))); const result = await store.deleteMulti(names); assert.equal(result.res.status, 200); diff --git a/test/node/rtmp.test.js b/test/node/rtmp.test.js index c18451075..ee3892304 100644 --- a/test/node/rtmp.test.js +++ b/test/node/rtmp.test.js @@ -112,19 +112,14 @@ describe('test/rtmp.test.js', () => { before(async () => { channelNum = 10; channelPrefix = 'channel-list-'; - - for (let i = 0; i < channelNum; i++) { + await Promise.all(Array(channelNum).fill(1).map((_, i) => { conf.Description = i; - /* eslint no-await-in-loop: [0] */ - await store.putChannel(channelPrefix + i, conf); - } + return store.putChannel(channelPrefix + i, conf); + })); }); after(async () => { - for (let i = 0; i < channelNum; i++) { - /* eslint no-await-in-loop: [0] */ - await store.deleteChannel(channelPrefix + i); - } + await Promise.all(Array(channelNum).fill(1).map((_, i) => store.deleteChannel(channelPrefix + i))); }); it('list channels using prefix/marker/max-keys', async () => { diff --git a/test/node/utils.js b/test/node/utils.js index a6b1a6af3..ac55f2878 100644 --- a/test/node/utils.js +++ b/test/node/utils.js @@ -73,13 +73,11 @@ exports.cleanBucket = async function (store, bucket, multiversion) { }); } result[deleteKey] = result[deleteKey] || []; - for (let i = 0; i < result[deleteKey].length; i++) { - const obj = result[deleteKey][i]; - if (multiversion) { - options.versionId = obj.versionId; - } - await store.delete(obj.name, options); - } + + await Promise.all(result[deleteKey].map(_ => + store.delete(_.name, multiversion ? + Object.assign({}, options, { versionId: _.versionId }) : + options))); } await handleDelete('objects'); if (multiversion) { @@ -90,11 +88,10 @@ exports.cleanBucket = async function (store, bucket, multiversion) { 'max-uploads': 1000 }); const uploads = result.uploads || []; - /* eslint no-await-in-loop: [0] */ - for (let i = 0; i < uploads.length; i++) { - const up = uploads[i]; - await store.abortMultipartUpload(up.name, up.uploadId); - } + await Promise.all(uploads.map(_ => store.abortMultipartUpload(_.name, _.uploadId))); + + const channels = (await store.listChannels()).channels.map(_ => _.Name); + await Promise.all(channels.map(_ => store.deleteChannel(_))); await store.deleteBucket(bucket); };