()
| 492 | } |
| 493 | |
| 494 | func 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. |
nothing calls this directly
no test coverage detected