mirror of
https://github.com/minio/minio.git
synced 2024-12-26 23:25:54 -05:00
Merge pull request #225 from fkautz/pr_out_donut_now_tests_amount_written_should_match_expected_amount_to_write
This commit is contained in:
commit
a067fdb59d
@ -19,6 +19,7 @@ package v1
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"github.com/minio-io/minio/pkg/utils/checksum/crc32c"
|
"github.com/minio-io/minio/pkg/utils/checksum/crc32c"
|
||||||
@ -101,10 +102,13 @@ func Write(target io.Writer, reader io.Reader, length uint64) error {
|
|||||||
checksumChannel := make(chan checksumValue)
|
checksumChannel := make(chan checksumValue)
|
||||||
go generateChecksum(sumReader, checksumChannel)
|
go generateChecksum(sumReader, checksumChannel)
|
||||||
teeReader := io.TeeReader(reader, sumWriter)
|
teeReader := io.TeeReader(reader, sumWriter)
|
||||||
_, err = io.Copy(target, teeReader)
|
dataLength, err := io.Copy(target, teeReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if uint64(dataLength) != length {
|
||||||
|
return errors.New("Specified data length and amount written mismatched")
|
||||||
|
}
|
||||||
sumWriter.Close()
|
sumWriter.Close()
|
||||||
dataChecksum := <-checksumChannel
|
dataChecksum := <-checksumChannel
|
||||||
if dataChecksum.err != nil {
|
if dataChecksum.err != nil {
|
||||||
|
@ -124,3 +124,9 @@ func (s *MySuite) TestSingleWrite(c *C) {
|
|||||||
// ensure no extra data is in the file
|
// ensure no extra data is in the file
|
||||||
c.Assert(testBuffer.Len(), Equals, 0)
|
c.Assert(testBuffer.Len(), Equals, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *MySuite) TestLengthMismatchInWrite(c *C) {
|
||||||
|
var testData bytes.Buffer
|
||||||
|
err := Write(&testData, bytes.NewBufferString("hello, world"), 5)
|
||||||
|
c.Assert(err, Not(IsNil))
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user