Reproduces issue https://github.com/minio/minio-go/issues/1137
()
| 5667 | |
| 5668 | // Reproduces issue https://github.com/minio/minio-go/issues/1137 |
| 5669 | func testGetObjectReadAtWhenEOFWasReached() { |
| 5670 | // initialize logging params |
| 5671 | startTime := time.Now() |
| 5672 | testName := getFuncName() |
| 5673 | function := "GetObject(bucketName, objectName)" |
| 5674 | args := map[string]interface{}{} |
| 5675 | |
| 5676 | c, err := NewClient(ClientConfig{}) |
| 5677 | if err != nil { |
| 5678 | logError(testName, function, args, startTime, "", "MinIO client object creation failed", err) |
| 5679 | return |
| 5680 | } |
| 5681 | |
| 5682 | // Generate a new random bucket name. |
| 5683 | bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test-") |
| 5684 | args["bucketName"] = bucketName |
| 5685 | |
| 5686 | // Make a new bucket. |
| 5687 | err = c.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{Region: "us-east-1"}) |
| 5688 | if err != nil { |
| 5689 | logError(testName, function, args, startTime, "", "MakeBucket failed", err) |
| 5690 | return |
| 5691 | } |
| 5692 | |
| 5693 | defer cleanupBucket(bucketName, c) |
| 5694 | |
| 5695 | // Generate 33K of data. |
| 5696 | bufSize := dataFileMap["datafile-33-kB"] |
| 5697 | reader := getDataReader("datafile-33-kB") |
| 5698 | defer reader.Close() |
| 5699 | |
| 5700 | objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "") |
| 5701 | args["objectName"] = objectName |
| 5702 | |
| 5703 | buf, err := io.ReadAll(reader) |
| 5704 | if err != nil { |
| 5705 | logError(testName, function, args, startTime, "", "ReadAll failed", err) |
| 5706 | return |
| 5707 | } |
| 5708 | |
| 5709 | // Save the data |
| 5710 | _, err = c.PutObject(context.Background(), bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), minio.PutObjectOptions{ContentType: "binary/octet-stream"}) |
| 5711 | if err != nil { |
| 5712 | logError(testName, function, args, startTime, "", "PutObject failed", err) |
| 5713 | return |
| 5714 | } |
| 5715 | |
| 5716 | // read the data back |
| 5717 | r, err := c.GetObject(context.Background(), bucketName, objectName, minio.GetObjectOptions{}) |
| 5718 | if err != nil { |
| 5719 | logError(testName, function, args, startTime, "", "PutObject failed", err) |
| 5720 | return |
| 5721 | } |
| 5722 | |
| 5723 | // read directly |
| 5724 | buf1 := make([]byte, len(buf)) |
| 5725 | buf2 := make([]byte, 512) |
| 5726 |
no test coverage detected