mirror of
https://github.com/minio/minio.git
synced 2025-04-07 21:25:36 -04:00
Remove unused range parsing code and update tests (#6530)
This commit is contained in:
parent
1111419d4a
commit
387584356f
@ -43,34 +43,6 @@ func writeCopyPartErr(w http.ResponseWriter, err error, url *url.URL) {
|
|||||||
// http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html
|
// http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html
|
||||||
// for full details. This function treats an empty rangeString as
|
// for full details. This function treats an empty rangeString as
|
||||||
// referring to the whole resource.
|
// referring to the whole resource.
|
||||||
//
|
|
||||||
// In addition to parsing the range string, it also validates the
|
|
||||||
// specified range against the given object size, so that Copy API
|
|
||||||
// specific error can be returned.
|
|
||||||
func parseCopyPartRange(rangeString string, resourceSize int64) (offset, length int64, err error) {
|
|
||||||
var hrange *HTTPRangeSpec
|
|
||||||
if rangeString != "" {
|
|
||||||
hrange, err = parseRequestRangeSpec(rangeString)
|
|
||||||
if err != nil {
|
|
||||||
return -1, -1, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Require that both start and end are specified.
|
|
||||||
if hrange.IsSuffixLength || hrange.Start == -1 || hrange.End == -1 {
|
|
||||||
return -1, -1, errInvalidRange
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate specified range against object size.
|
|
||||||
if hrange.Start >= resourceSize || hrange.End >= resourceSize {
|
|
||||||
return -1, -1, errInvalidRangeSource
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return hrange.GetOffsetLength(resourceSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
// parseCopyPartRangeSpec transforms a range string (e.g. bytes=3-4) to HTTPRangeSpec
|
|
||||||
// and returns errors if weird values
|
|
||||||
func parseCopyPartRangeSpec(rangeString string) (hrange *HTTPRangeSpec, err error) {
|
func parseCopyPartRangeSpec(rangeString string) (hrange *HTTPRangeSpec, err error) {
|
||||||
hrange, err = parseRequestRangeSpec(rangeString)
|
hrange, err = parseRequestRangeSpec(rangeString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -19,7 +19,7 @@ package cmd
|
|||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
// Test parseCopyPartRange()
|
// Test parseCopyPartRange()
|
||||||
func TestParseCopyPartRange(t *testing.T) {
|
func TestParseCopyPartRangeSpec(t *testing.T) {
|
||||||
// Test success cases.
|
// Test success cases.
|
||||||
successCases := []struct {
|
successCases := []struct {
|
||||||
rangeString string
|
rangeString string
|
||||||
@ -29,16 +29,21 @@ func TestParseCopyPartRange(t *testing.T) {
|
|||||||
{"bytes=2-5", 2, 5},
|
{"bytes=2-5", 2, 5},
|
||||||
{"bytes=2-9", 2, 9},
|
{"bytes=2-9", 2, 9},
|
||||||
{"bytes=2-2", 2, 2},
|
{"bytes=2-2", 2, 2},
|
||||||
{"", 0, 9},
|
|
||||||
{"bytes=0000-0006", 0, 6},
|
{"bytes=0000-0006", 0, 6},
|
||||||
}
|
}
|
||||||
|
objectSize := int64(10)
|
||||||
|
|
||||||
for _, successCase := range successCases {
|
for _, successCase := range successCases {
|
||||||
start, length, err := parseCopyPartRange(successCase.rangeString, 10)
|
rs, err := parseCopyPartRangeSpec(successCase.rangeString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("expected: <nil>, got: %s", err)
|
t.Fatalf("expected: <nil>, got: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
start, length, err1 := rs.GetOffsetLength(objectSize)
|
||||||
|
if err1 != nil {
|
||||||
|
t.Fatalf("expected: <nil>, got: %s", err1)
|
||||||
|
}
|
||||||
|
|
||||||
if start != successCase.offsetBegin {
|
if start != successCase.offsetBegin {
|
||||||
t.Fatalf("expected: %d, got: %d", successCase.offsetBegin, start)
|
t.Fatalf("expected: %d, got: %d", successCase.offsetBegin, start)
|
||||||
}
|
}
|
||||||
@ -61,9 +66,11 @@ func TestParseCopyPartRange(t *testing.T) {
|
|||||||
"bytes=2 - 5",
|
"bytes=2 - 5",
|
||||||
"bytes=0-0,-1",
|
"bytes=0-0,-1",
|
||||||
"bytes=2-5 ",
|
"bytes=2-5 ",
|
||||||
|
"bytes=-1",
|
||||||
|
"bytes=1-",
|
||||||
}
|
}
|
||||||
for _, rangeString := range invalidRangeStrings {
|
for _, rangeString := range invalidRangeStrings {
|
||||||
if _, _, err := parseCopyPartRange(rangeString, 10); err == nil {
|
if _, err := parseCopyPartRangeSpec(rangeString); err == nil {
|
||||||
t.Fatalf("expected: an error, got: <nil> for range %s", rangeString)
|
t.Fatalf("expected: an error, got: <nil> for range %s", rangeString)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,8 +81,14 @@ func TestParseCopyPartRange(t *testing.T) {
|
|||||||
"bytes=20-30",
|
"bytes=20-30",
|
||||||
}
|
}
|
||||||
for _, rangeString := range errorRangeString {
|
for _, rangeString := range errorRangeString {
|
||||||
if _, _, err := parseCopyPartRange(rangeString, 10); err != errInvalidRangeSource {
|
rs, err := parseCopyPartRangeSpec(rangeString)
|
||||||
t.Fatalf("expected: %s, got: %s", errInvalidRangeSource, err)
|
if err == nil {
|
||||||
|
err1 := checkCopyPartRangeWithSize(rs, objectSize)
|
||||||
|
if err1 != errInvalidRangeSource {
|
||||||
|
t.Fatalf("expected: %s, got: %s", errInvalidRangeSource, err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
t.Fatalf("expected: %s, got: <nil>", errInvalidRangeSource)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user