MCPcopy Index your code
hub / github.com/scality/cloudserver / createMpuObject

Function createMpuObject

tests/unit/api/objectGetAttributes.js:259–315  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

257 const partBody = Buffer.from('I am a part\n', 'utf8');
258
259 const createMpuObject = async () => {
260 const initiateRequest = {
261 bucketName,
262 namespace,
263 objectKey: objectName,
264 headers: { host: `${bucketName}.s3.amazonaws.com` },
265 url: `/${objectName}?uploads`,
266 actionImplicitDenies: false,
267 };
268
269 const [result] = await initiateMultipartUploadAsync(authInfo, initiateRequest, log);
270 const json = await parseStringPromise(result);
271 const testUploadId = json.InitiateMultipartUploadResult.UploadId[0];
272 const partHash = crypto.createHash('md5').update(partBody).digest('hex');
273
274 const completeParts = [];
275 for (let i = 1; i <= partCount; i++) {
276 const partRequest = new DummyRequest(
277 {
278 bucketName,
279 namespace,
280 objectKey: objectName,
281 headers: {
282 host: `${bucketName}.s3.amazonaws.com`,
283 'content-length': '5242880',
284 },
285 parsedContentLength: 5242880,
286 url: `/${objectName}?partNumber=${i}&uploadId=${testUploadId}`,
287 query: {
288 partNumber: String(i),
289 uploadId: testUploadId,
290 },
291 partHash,
292 },
293 partBody,
294 );
295 await objectPutPartAsync(authInfo, partRequest, undefined, log);
296 completeParts.push(`<Part><PartNumber>${i}</PartNumber><ETag>"${partHash}"</ETag></Part>`);
297 }
298
299 const completeBody =
300 `<CompleteMultipartUpload>${completeParts.join('')}</CompleteMultipartUpload>`;
301
302 const completeRequest = {
303 bucketName,
304 namespace,
305 objectKey: objectName,
306 parsedHost: 's3.amazonaws.com',
307 url: `/${objectName}?uploadId=${testUploadId}`,
308 headers: { host: `${bucketName}.s3.amazonaws.com` },
309 query: { uploadId: testUploadId },
310 post: completeBody,
311 actionImplicitDenies: false,
312 };
313
314 await completeMultipartUploadAsync(authInfo, completeRequest, log);
315 };
316

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected