MCPcopy
hub / github.com/minio/minio-go / testMetadataSizeLimit

Function testMetadataSizeLimit

functional_tests.go:494–549  ·  functional_tests.go::testMetadataSizeLimit
()

Source from the content-addressed store, hash-verified

492}
493
494func testMetadataSizeLimit() {
495 startTime := time.Now()
496 testName := getFuncName()
497 function := "PutObject(bucketName, objectName, reader, objectSize, opts)"
498 args := map[string]interface{}{
499 "bucketName": "",
500 "objectName": "",
501 "opts.UserMetadata": "",
502 }
503
504 c, err := NewClient(ClientConfig{})
505 if err != nil {
506 logError(testName, function, args, startTime, "", "MinIO client creation failed", err)
507 return
508 }
509
510 bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test-")
511 args["bucketName"] = bucketName
512
513 objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
514 args["objectName"] = objectName
515
516 err = c.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{Region: "us-east-1"})
517 if err != nil {
518 logError(testName, function, args, startTime, "", "Make bucket failed", err)
519 return
520 }
521
522 defer cleanupBucket(bucketName, c)
523
524 const HeaderSizeLimit = 8 * 1024
525 const UserMetadataLimit = 2 * 1024
526
527 // Meta-data greater than the 2 KB limit of AWS - PUT calls with this meta-data should fail
528 metadata := make(map[string]string)
529 metadata["X-Amz-Meta-Mint-Test"] = string(bytes.Repeat([]byte("m"), 1+UserMetadataLimit-len("X-Amz-Meta-Mint-Test")))
530 args["metadata"] = fmt.Sprint(metadata)
531
532 _, err = c.PutObject(context.Background(), bucketName, objectName, bytes.NewReader(nil), 0, minio.PutObjectOptions{UserMetadata: metadata})
533 if err == nil {
534 logError(testName, function, args, startTime, "", "Created object with user-defined metadata exceeding metadata size limits", nil)
535 return
536 }
537
538 // Meta-data (headers) greater than the 8 KB limit of AWS - PUT calls with this meta-data should fail
539 metadata = make(map[string]string)
540 metadata["X-Amz-Mint-Test"] = string(bytes.Repeat([]byte("m"), 1+HeaderSizeLimit-len("X-Amz-Mint-Test")))
541 args["metadata"] = fmt.Sprint(metadata)
542 _, err = c.PutObject(context.Background(), bucketName, objectName, bytes.NewReader(nil), 0, minio.PutObjectOptions{UserMetadata: metadata})
543 if err == nil {
544 logError(testName, function, args, startTime, "", "Created object with headers exceeding header size limits", nil)
545 return
546 }
547
548 logSuccess(testName, function, args, startTime)
549}
550
551// Tests various bucket supported formats.

Callers

nothing calls this directly

Calls 8

MakeBucketMethod · 0.95
PutObjectMethod · 0.95
getFuncNameFunction · 0.85
NewClientFunction · 0.85
logErrorFunction · 0.85
cleanupBucketFunction · 0.85
logSuccessFunction · 0.85
randStringFunction · 0.70

Tested by

no test coverage detected