Skip to content

Commit ca2905f

Browse files
committed
adapt object tests with new functions and send commands
1 parent beeee48 commit ca2905f

File tree

12 files changed

+534
-682
lines changed

12 files changed

+534
-682
lines changed

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

Lines changed: 47 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
const assert = require('assert');
22
const async = require('async');
33
const arsenal = require('arsenal');
4+
const { promisify } = require('util');
5+
const { ListObjectsCommand } = require('@aws-sdk/client-s3');
46
const { GCP, GcpUtils } = arsenal.storage.data.external.GCP;
57
const {
6-
gcpRequestRetry,
7-
gcpClientRetry,
8-
setBucketClass,
98
gcpMpuSetup,
109
genUniqID,
10+
gcpRetry,
11+
waitForBucketReady,
1112
} = require('../../../utils/gcpUtils');
1213
const { getRealAwsConfig } =
1314
require('../../../../aws-node-sdk/test/support/awsConfig');
15+
const {
16+
CreateBucketCommand,
17+
DeleteBucketCommand,
18+
} = require('@aws-sdk/client-s3');
1419

1520
const credentialOne = 'gcpbackend';
1621
const bucketNames = {
@@ -49,29 +54,28 @@ function listObjectsPaginated(gcpClient, bucketName, cb) {
4954
params.Marker = marker;
5055
}
5156

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);
57+
const command = new ListObjectsCommand(params);
58+
return gcpClient.send(command)
59+
.then(res => {
60+
const contents = (res && res.Contents) || [];
61+
objects.push(...contents);
5962

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

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);
68+
// AWS listObjects(V1) pagination: prefer NextMarker, fallback to last key.
69+
marker = (res && res.NextMarker) ||
70+
(contents.length ? contents[contents.length - 1].Key : undefined);
6871

69-
if (!marker) {
70-
return cb(null, objects);
71-
}
72+
if (!marker) {
73+
return cb(null, objects);
74+
}
7275

73-
return _list();
74-
});
76+
return _list();
77+
})
78+
.catch(err => cb(err));
7579
}
7680

7781
return _list();
@@ -87,7 +91,7 @@ function emptyBucket(gcpClient, bucketName, cb) {
8791
Bucket: bucketName,
8892
Key: object.Key,
8993
};
90-
return gcpClientRetry(gcpClient.deleteObject.bind(gcpClient), deleteParams, next);
94+
return gcpClient.deleteObject(deleteParams, next);
9195
}, cb);
9296
});
9397
}
@@ -97,42 +101,30 @@ describe('GCP: Complete MPU', function testSuite() {
97101
let config;
98102
let gcpClient;
99103

100-
before(done => {
104+
before(async () => {
101105
config = getRealAwsConfig(credentialOne);
102106
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);
107+
const buckets = Object.values(bucketNames);
108+
await async.eachSeries(
109+
buckets,
110+
async bucket => {
111+
const cmd = new CreateBucketCommand({ Bucket: bucket.Name });
112+
await gcpRetry(gcpClient, cmd);
113+
await waitForBucketReady(gcpClient, bucket.Name);
114+
},
115+
);
116116
});
117117

118-
after(done => {
119-
async.eachSeries(bucketNames,
120-
(bucket, next) => emptyBucket(gcpClient, bucket.Name, err => {
121-
assert.equal(err, null,
122-
`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-
});
134-
}),
135-
done);
118+
after(async () => {
119+
const buckets = Object.values(bucketNames);
120+
await async.eachSeries(
121+
buckets,
122+
async bucket => {
123+
await promisify(emptyBucket)(gcpClient, bucket.Name);
124+
const cmd = new DeleteBucketCommand({ Bucket: bucket.Name });
125+
await gcpRetry(gcpClient, cmd);
126+
},
127+
);
136128
});
137129

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

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

Lines changed: 40 additions & 64 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,18 @@ 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

31-
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-
});
29+
after(async () => {
30+
await gcpRetry(
31+
gcpClient,
32+
new DeleteBucketCommand({ Bucket: bucketName }),
33+
);
4234
});
4335

4436
describe('without existing object in bucket', () => {
@@ -59,45 +51,35 @@ describe('GCP: COPY Object', function testSuite() {
5951
});
6052

6153
describe('with existing object in bucket', () => {
62-
beforeEach(function beforeFn(done) {
54+
beforeEach(async function beforeFn() {
6355
this.currentTest.key = `somekey-${genUniqID()}`;
6456
this.currentTest.copyKey = `copykey-${genUniqID()}`;
6557
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,
58+
const cmd = new PutObjectCommand({
59+
Bucket: bucketName,
60+
Key: this.currentTest.copyKey,
61+
Metadata: {
62+
value: this.currentTest.initValue,
7263
},
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);
8064
});
65+
const res = await gcpClient.send(cmd);
66+
this.currentTest.ETag = res.ETag;
8167
});
8268

8369
afterEach(function afterFn(done) {
8470
async.parallel([
85-
next => makeGcpRequest({
86-
method: 'DELETE',
87-
bucket: bucketName,
88-
objectKey: this.currentTest.key,
89-
authCredentials: config.credentials,
71+
next => gcpClient.deleteObject({
72+
Bucket: bucketName,
73+
Key: this.currentTest.key,
9074
}, err => {
9175
if (err) {
9276
process.stdout.write(`err in deleting object ${err}\n`);
9377
}
9478
return next(err);
9579
}),
96-
next => makeGcpRequest({
97-
method: 'DELETE',
98-
bucket: bucketName,
99-
objectKey: this.currentTest.copyKey,
100-
authCredentials: config.credentials,
80+
next => gcpClient.deleteObject({
81+
Bucket: bucketName,
82+
Key: this.currentTest.copyKey,
10183
}, err => {
10284
if (err) {
10385
process.stdout
@@ -125,20 +107,17 @@ describe('GCP: COPY Object', function testSuite() {
125107
`Expected success, but got error ${err}`);
126108
return next();
127109
}),
128-
next => makeGcpRequest({
129-
method: 'HEAD',
130-
bucket: bucketName,
131-
objectKey: this.test.key,
132-
authCredentials: config.credentials,
110+
next => gcpClient.headObject({
111+
Bucket: bucketName,
112+
Key: this.test.key,
133113
}, (err, res) => {
134114
if (err) {
135115
process.stdout
136116
.write(`err in retrieving object ${err}\n`);
137117
return next(err);
138118
}
139-
assert.strictEqual(this.test.contentHash,
140-
res.headers['x-goog-hash']);
141-
assert.notStrictEqual(res.headers['x-goog-meta-value'],
119+
assert.strictEqual(res.ETag, this.test.ETag);
120+
assert.notStrictEqual(res.Metadata.value,
142121
this.test.initValue);
143122
return next();
144123
}),
@@ -158,20 +137,17 @@ describe('GCP: COPY Object', function testSuite() {
158137
`Expected success, but got error ${err}`);
159138
return next();
160139
}),
161-
next => makeGcpRequest({
162-
method: 'HEAD',
163-
bucket: bucketName,
164-
objectKey: this.test.key,
165-
authCredentials: config.credentials,
140+
next => gcpClient.headObject({
141+
Bucket: bucketName,
142+
Key: this.test.key,
166143
}, (err, res) => {
167144
if (err) {
168145
process.stdout
169146
.write(`err in retrieving object ${err}\n`);
170147
return next(err);
171148
}
172-
assert.strictEqual(this.test.contentHash,
173-
res.headers['x-goog-hash']);
174-
assert.strictEqual(res.headers['x-goog-meta-value'],
149+
assert.strictEqual(res.ETag, this.test.ETag);
150+
assert.strictEqual(res.Metadata.value,
175151
this.test.initValue);
176152
return next();
177153
}),

0 commit comments

Comments
 (0)