@@ -2,14 +2,17 @@ const assert = require('assert');
22const async = require ( 'async' ) ;
33const arsenal = require ( 'arsenal' ) ;
44const { GCP } = arsenal . storage . data . external . GCP ;
5- const { genUniqID, gcpRetry } =
6- require ( '../../../utils/gcpUtils' ) ;
5+ const {
6+ genUniqID,
7+ gcpRetry,
8+ gcpCreateMultipartUploadWithRetry,
9+ waitForBucketReady,
10+ } = require ( '../../../utils/gcpUtils' ) ;
711const { getRealAwsConfig } =
812 require ( '../../../../aws-node-sdk/test/support/awsConfig' ) ;
913const {
1014 CreateBucketCommand,
1115 DeleteBucketCommand,
12- HeadBucketCommand,
1316} = require ( '@aws-sdk/client-s3' ) ;
1417
1518const credentialOne = 'gcpbackend' ;
@@ -26,54 +29,6 @@ describe('GCP: Initiate MPU', function testSuite() {
2629 this . timeout ( 180000 ) ;
2730 let config ;
2831 let gcpClient ;
29- const maxCreateAttempts = 6 ;
30- const retryDelayMs = attempt => ( attempt + 1 ) * 1000 ;
31- const isRetryableCreateError = err => err && (
32- err . name === 'NoSuchBucket'
33- || err . name === 'NotFound'
34- || err . $metadata ?. httpStatusCode === 404
35- || err . name === 'SlowDown'
36- || err . $metadata ?. httpStatusCode === 429
37- ) ;
38-
39- function waitForBucketReady ( bucketName ) {
40- const cmd = new HeadBucketCommand ( { Bucket : bucketName } ) ;
41- return gcpRetry ( gcpClient , cmd , {
42- maxAttempts : 6 ,
43- shouldRetry : err => err && (
44- err . name === 'NoSuchBucket'
45- || err . name === 'NotFound'
46- || err . $metadata ?. httpStatusCode === 404
47- || err . name === 'SlowDown'
48- || err . $metadata ?. httpStatusCode === 429
49- ) ,
50- getDelayMs : attempt => ( attempt + 1 ) * 1000 ,
51- } ) ;
52- }
53-
54- function createMultipartUploadWithRetry ( bucket , key , metadata ) {
55- return new Promise ( ( resolve , reject ) => {
56- const attemptCreate = attempt => {
57- gcpClient . createMultipartUpload ( {
58- Bucket : bucket ,
59- Key : key ,
60- Metadata : metadata ,
61- } , ( err , res ) => {
62- if ( ! err ) {
63- resolve ( res ) ;
64- return ;
65- }
66- if ( isRetryableCreateError ( err ) && attempt < maxCreateAttempts - 1 ) {
67- const delay = retryDelayMs ( attempt ) ;
68- setTimeout ( ( ) => attemptCreate ( attempt + 1 ) , delay ) ;
69- return ;
70- }
71- reject ( err ) ;
72- } ) ;
73- } ;
74- attemptCreate ( 0 ) ;
75- } ) ;
76- }
7732
7833 before ( async ( ) => {
7934 config = getRealAwsConfig ( credentialOne ) ;
@@ -86,7 +41,7 @@ describe('GCP: Initiate MPU', function testSuite() {
8641 gcpClient ,
8742 new CreateBucketCommand ( { Bucket : bucket . Name } ) ,
8843 ) ;
89- await waitForBucketReady ( bucket . Name ) ;
44+ await waitForBucketReady ( gcpClient , bucket . Name ) ;
9045 } ,
9146 ) ;
9247 } ) ;
@@ -108,11 +63,11 @@ describe('GCP: Initiate MPU', function testSuite() {
10863 const keyName = `somekey-${ genUniqID ( ) } ` ;
10964 const specialKey = `special-${ genUniqID ( ) } ` ;
11065
111- const createRes = await createMultipartUploadWithRetry (
112- bucketNames . mpu . Name ,
113- keyName ,
114- { special : specialKey } ,
115- ) ;
66+ const createRes = await gcpCreateMultipartUploadWithRetry ( gcpClient , {
67+ Bucket : bucketNames . mpu . Name ,
68+ Key : keyName ,
69+ Metadata : { special : specialKey } ,
70+ } ) ;
11671
11772 const mpuInitKey = `${ keyName } -${ createRes . UploadId } /init` ;
11873 const headRes = await new Promise ( ( resolve , reject ) => {
0 commit comments