Skip to content

Commit 83dec6f

Browse files
committed
object tests updates post unused functions removal
This commit removes unused functions and updates object tests accordingly. These changes help reduce the dependency on gcpService only used functions in cloudserver tests, and also enables us to remove wrappers around GCP SDK calls, making the tests more straightforward and easier to maintain. Issue: CLDSRV-826
1 parent 45ef2f0 commit 83dec6f

File tree

14 files changed

+632
-643
lines changed

14 files changed

+632
-643
lines changed

tests/functional/raw-node/test/GCP/object/completeMpu.js

Lines changed: 59 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
const assert = require('assert');
22
const async = require('async');
33
const arsenal = require('arsenal');
4+
const { ListObjectsCommand } = require('@aws-sdk/client-s3');
45
const { GCP, GcpUtils } = arsenal.storage.data.external.GCP;
56
const {
6-
gcpRequestRetry,
7-
gcpClientRetry,
8-
setBucketClass,
97
gcpMpuSetup,
108
genUniqID,
9+
gcpRetry,
1110
} = require('../../../utils/gcpUtils');
1211
const { getRealAwsConfig } =
1312
require('../../../../aws-node-sdk/test/support/awsConfig');
13+
const {
14+
CreateBucketCommand,
15+
DeleteBucketCommand,
16+
} = require('@aws-sdk/client-s3');
1417

1518
const credentialOne = 'gcpbackend';
1619
const bucketNames = {
1720
main: {
1821
Name: `somebucket-${genUniqID()}`,
19-
Type: 'MULTI_REGIONAL',
2022
},
2123
mpu: {
2224
Name: `mpubucket-${genUniqID()}`,
23-
Type: 'MULTI_REGIONAL',
2425
},
2526
};
2627
const numParts = 1024;
@@ -49,29 +50,28 @@ function listObjectsPaginated(gcpClient, bucketName, cb) {
4950
params.Marker = marker;
5051
}
5152

52-
return gcpClientRetry(gcpClient.listObjects.bind(gcpClient), params, (err, res) => {
53-
if (err) {
54-
return cb(err);
55-
}
56-
57-
const contents = (res && res.Contents) || [];
58-
objects.push(...contents);
53+
const command = new ListObjectsCommand(params);
54+
return gcpClient.send(command)
55+
.then(res => {
56+
const contents = (res && res.Contents) || [];
57+
objects.push(...contents);
5958

60-
const isTruncated = Boolean(res && res.IsTruncated);
61-
if (!isTruncated) {
62-
return cb(null, objects);
63-
}
59+
const isTruncated = Boolean(res && res.IsTruncated);
60+
if (!isTruncated) {
61+
return cb(null, objects);
62+
}
6463

65-
// AWS listObjects(V1) pagination: prefer NextMarker, fallback to last key.
66-
marker = (res && res.NextMarker) ||
67-
(contents.length ? contents[contents.length - 1].Key : undefined);
64+
// AWS listObjects(V1) pagination: prefer NextMarker, fallback to last key.
65+
marker = (res && res.NextMarker) ||
66+
(contents.length ? contents[contents.length - 1].Key : undefined);
6867

69-
if (!marker) {
70-
return cb(null, objects);
71-
}
68+
if (!marker) {
69+
return cb(null, objects);
70+
}
7271

73-
return _list();
74-
});
72+
return _list();
73+
})
74+
.catch(err => cb(err));
7575
}
7676

7777
return _list();
@@ -87,7 +87,7 @@ function emptyBucket(gcpClient, bucketName, cb) {
8787
Bucket: bucketName,
8888
Key: object.Key,
8989
};
90-
return gcpClientRetry(gcpClient.deleteObject.bind(gcpClient), deleteParams, next);
90+
return gcpClient.deleteObject(deleteParams, next);
9191
}, cb);
9292
});
9393
}
@@ -100,39 +100,47 @@ describe('GCP: Complete MPU', function testSuite() {
100100
before(done => {
101101
config = getRealAwsConfig(credentialOne);
102102
gcpClient = new GCP(config);
103-
async.eachSeries(bucketNames,
104-
(bucket, next) => gcpRequestRetry({
105-
method: 'PUT',
106-
bucket: bucket.Name,
107-
authCredentials: config.credentials,
108-
requestBody: setBucketClass(bucket.Type),
109-
}, 0, err => {
110-
if (err) {
111-
process.stdout.write(`err in creating bucket ${err}\n`);
112-
}
113-
return next(err);
114-
}),
115-
done);
103+
const buckets = Object.values(bucketNames);
104+
async.eachSeries(
105+
buckets,
106+
(bucket, next) => gcpRetry(
107+
gcpClient,
108+
() => new CreateBucketCommand({ Bucket: bucket.Name }),
109+
null,
110+
err => {
111+
if (err) {
112+
process.stdout.write(
113+
`err in creating bucket ${err}\n`);
114+
}
115+
return next(err);
116+
},
117+
),
118+
done,
119+
);
116120
});
117121

118122
after(done => {
119-
async.eachSeries(bucketNames,
123+
const buckets = Object.values(bucketNames);
124+
async.eachSeries(
125+
buckets,
120126
(bucket, next) => emptyBucket(gcpClient, bucket.Name, err => {
121127
assert.equal(err, null,
122128
`Expected success, but got error ${err}`);
123-
gcpRequestRetry({
124-
method: 'DELETE',
125-
bucket: bucket.Name,
126-
authCredentials: config.credentials,
127-
}, 0, err => {
128-
if (err) {
129-
process.stdout.write(
130-
`err in deleting bucket ${err}\n`);
131-
}
132-
return next(err);
133-
});
129+
gcpRetry(
130+
gcpClient,
131+
() => new DeleteBucketCommand({ Bucket: bucket.Name }),
132+
null,
133+
error => {
134+
if (error) {
135+
process.stdout.write(
136+
`err in deleting bucket ${error}\n`);
137+
}
138+
return next(error);
139+
},
140+
);
134141
}),
135-
done);
142+
done,
143+
);
136144
});
137145

138146
describe('when MPU has 0 parts', () => {

tests/functional/raw-node/test/GCP/object/copy.js

Lines changed: 52 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ const assert = require('assert');
22
const async = require('async');
33
const arsenal = require('arsenal');
44
const { GCP } = arsenal.storage.data.external.GCP;
5-
const { makeGcpRequest } = require('../../../utils/makeRequest');
6-
const { gcpRequestRetry, genUniqID } = require('../../../utils/gcpUtils');
5+
const { genUniqID, gcpRetry } = require('../../../utils/gcpUtils');
76
const { getRealAwsConfig } =
87
require('../../../../aws-node-sdk/test/support/awsConfig');
8+
const {
9+
CreateBucketCommand,
10+
DeleteBucketCommand,
11+
PutObjectCommand,
12+
} = require('@aws-sdk/client-s3');
913

1014
const credentialOne = 'gcpbackend';
1115
const bucketName = `somebucket-${genUniqID()}`;
@@ -15,30 +19,25 @@ describe('GCP: COPY Object', function testSuite() {
1519
const config = getRealAwsConfig(credentialOne);
1620
const gcpClient = new GCP(config);
1721

18-
before(done => {
19-
gcpRequestRetry({
20-
method: 'PUT',
21-
bucket: bucketName,
22-
authCredentials: config.credentials,
23-
}, 0, err => {
24-
if (err) {
25-
process.stdout.write(`err in creating bucket ${err}\n`);
26-
}
27-
return done(err);
28-
});
22+
before(async () => {
23+
await gcpRetry(
24+
gcpClient,
25+
() => new CreateBucketCommand({ Bucket: bucketName }),
26+
);
2927
});
3028

3129
after(done => {
32-
gcpRequestRetry({
33-
method: 'DELETE',
34-
bucket: bucketName,
35-
authCredentials: config.credentials,
36-
}, 0, err => {
37-
if (err) {
38-
process.stdout.write(`err in creating bucket ${err}\n`);
39-
}
40-
return done(err);
41-
});
30+
gcpRetry(
31+
gcpClient,
32+
() => new DeleteBucketCommand({ Bucket: bucketName }),
33+
null,
34+
err => {
35+
if (err) {
36+
process.stdout.write(`err in deleting bucket ${err}\n`);
37+
}
38+
return done(err);
39+
},
40+
);
4241
});
4342

4443
describe('without existing object in bucket', () => {
@@ -63,41 +62,38 @@ describe('GCP: COPY Object', function testSuite() {
6362
this.currentTest.key = `somekey-${genUniqID()}`;
6463
this.currentTest.copyKey = `copykey-${genUniqID()}`;
6564
this.currentTest.initValue = `${genUniqID()}`;
66-
makeGcpRequest({
67-
method: 'PUT',
68-
bucket: bucketName,
69-
objectKey: this.currentTest.copyKey,
70-
headers: {
71-
'x-goog-meta-value': this.currentTest.initValue,
65+
const cmd = new PutObjectCommand({
66+
Bucket: bucketName,
67+
Key: this.currentTest.copyKey,
68+
Metadata: {
69+
value: this.currentTest.initValue,
7270
},
73-
authCredentials: config.credentials,
74-
}, (err, res) => {
75-
if (err) {
76-
process.stdout.write(`err in creating object ${err}\n`);
77-
}
78-
this.currentTest.contentHash = res.headers['x-goog-hash'];
79-
return done(err);
8071
});
72+
gcpClient.send(cmd)
73+
.then(res => {
74+
this.currentTest.ETag = res.ETag;
75+
return done();
76+
})
77+
.catch(err => {
78+
process.stdout.write(`err in creating object ${err}\n`);
79+
return done(err);
80+
});
8181
});
8282

8383
afterEach(function afterFn(done) {
8484
async.parallel([
85-
next => makeGcpRequest({
86-
method: 'DELETE',
87-
bucket: bucketName,
88-
objectKey: this.currentTest.key,
89-
authCredentials: config.credentials,
85+
next => gcpClient.deleteObject({
86+
Bucket: bucketName,
87+
Key: this.currentTest.key,
9088
}, err => {
9189
if (err) {
9290
process.stdout.write(`err in deleting object ${err}\n`);
9391
}
9492
return next(err);
9593
}),
96-
next => makeGcpRequest({
97-
method: 'DELETE',
98-
bucket: bucketName,
99-
objectKey: this.currentTest.copyKey,
100-
authCredentials: config.credentials,
94+
next => gcpClient.deleteObject({
95+
Bucket: bucketName,
96+
Key: this.currentTest.copyKey,
10197
}, err => {
10298
if (err) {
10399
process.stdout
@@ -125,20 +121,17 @@ describe('GCP: COPY Object', function testSuite() {
125121
`Expected success, but got error ${err}`);
126122
return next();
127123
}),
128-
next => makeGcpRequest({
129-
method: 'HEAD',
130-
bucket: bucketName,
131-
objectKey: this.test.key,
132-
authCredentials: config.credentials,
124+
next => gcpClient.headObject({
125+
Bucket: bucketName,
126+
Key: this.test.key,
133127
}, (err, res) => {
134128
if (err) {
135129
process.stdout
136130
.write(`err in retrieving object ${err}\n`);
137131
return next(err);
138132
}
139-
assert.strictEqual(this.test.contentHash,
140-
res.headers['x-goog-hash']);
141-
assert.notStrictEqual(res.headers['x-goog-meta-value'],
133+
assert.strictEqual(res.ETag, this.test.ETag);
134+
assert.notStrictEqual(res.Metadata.value,
142135
this.test.initValue);
143136
return next();
144137
}),
@@ -158,20 +151,17 @@ describe('GCP: COPY Object', function testSuite() {
158151
`Expected success, but got error ${err}`);
159152
return next();
160153
}),
161-
next => makeGcpRequest({
162-
method: 'HEAD',
163-
bucket: bucketName,
164-
objectKey: this.test.key,
165-
authCredentials: config.credentials,
154+
next => gcpClient.headObject({
155+
Bucket: bucketName,
156+
Key: this.test.key,
166157
}, (err, res) => {
167158
if (err) {
168159
process.stdout
169160
.write(`err in retrieving object ${err}\n`);
170161
return next(err);
171162
}
172-
assert.strictEqual(this.test.contentHash,
173-
res.headers['x-goog-hash']);
174-
assert.strictEqual(res.headers['x-goog-meta-value'],
163+
assert.strictEqual(res.ETag, this.test.ETag);
164+
assert.strictEqual(res.Metadata.value,
175165
this.test.initValue);
176166
return next();
177167
}),

0 commit comments

Comments
 (0)