You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.2 KiB
77 lines
2.2 KiB
package s3api
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3err"
|
|
)
|
|
|
|
func TestParseStorageClassDiskTypeMap(t *testing.T) {
|
|
mappings, err := parseStorageClassDiskTypeMap("STANDARD_IA=ssd,GLACIER=hdd")
|
|
if err != nil {
|
|
t.Fatalf("parseStorageClassDiskTypeMap returned error: %v", err)
|
|
}
|
|
|
|
if got, want := mappings["STANDARD_IA"], "ssd"; got != want {
|
|
t.Fatalf("STANDARD_IA mapping mismatch: got %q want %q", got, want)
|
|
}
|
|
if got, want := mappings["GLACIER"], "hdd"; got != want {
|
|
t.Fatalf("GLACIER mapping mismatch: got %q want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestParseStorageClassDiskTypeMapRejectsInvalidInput(t *testing.T) {
|
|
testCases := []string{
|
|
"INVALID=ssd",
|
|
"STANDARD_IA=",
|
|
"STANDARD_IA",
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
if _, err := parseStorageClassDiskTypeMap(tc); err == nil {
|
|
t.Fatalf("expected parse failure for %q", tc)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestResolveEffectiveStorageClass(t *testing.T) {
|
|
header := make(http.Header)
|
|
header.Set(s3_constants.AmzStorageClass, "standard_ia")
|
|
sc, code := resolveEffectiveStorageClass(header, nil)
|
|
if code != s3err.ErrNone {
|
|
t.Fatalf("expected no error, got %v", code)
|
|
}
|
|
if sc != "STANDARD_IA" {
|
|
t.Fatalf("expected STANDARD_IA, got %q", sc)
|
|
}
|
|
|
|
header = make(http.Header)
|
|
sc, code = resolveEffectiveStorageClass(header, map[string][]byte{
|
|
s3_constants.AmzStorageClass: []byte("GLACIER"),
|
|
})
|
|
if code != s3err.ErrNone {
|
|
t.Fatalf("expected no error for entry metadata, got %v", code)
|
|
}
|
|
if sc != "GLACIER" {
|
|
t.Fatalf("expected GLACIER, got %q", sc)
|
|
}
|
|
|
|
sc, code = resolveEffectiveStorageClass(header, nil)
|
|
if code != s3err.ErrNone {
|
|
t.Fatalf("expected no error for default class, got %v", code)
|
|
}
|
|
if sc != defaultStorageClass {
|
|
t.Fatalf("expected default storage class %q, got %q", defaultStorageClass, sc)
|
|
}
|
|
}
|
|
|
|
func TestResolveEffectiveStorageClassRejectsInvalidHeader(t *testing.T) {
|
|
header := make(http.Header)
|
|
header.Set(s3_constants.AmzStorageClass, "not-a-class")
|
|
_, code := resolveEffectiveStorageClass(header, nil)
|
|
if code != s3err.ErrInvalidStorageClass {
|
|
t.Fatalf("expected ErrInvalidStorageClass, got %v", code)
|
|
}
|
|
}
|