Fix storage class related issues (#5338)
- Update startup banner to print storage class in capitals. This makes it easier to identify different storage classes available. - Update response metadata to not send STANDARD storage class. This is in accordance with AWS S3 behaviour. - Update minio-go library to bring in storage class related changes. This is needed to make transparent translation of storage class headers for Minio S3 Gateway.
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -197,3 +198,100 @@ func TestIsMinioMetaBucketName(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tests RemoveStandardStorageClass method. Expectation is metadata map
|
||||
// should be cleared of x-amz-storage-class, if it is set to STANDARD
|
||||
func TestRemoveStandardStorageClass(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
metadata map[string]string
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "1",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "STANDARD"},
|
||||
want: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86"},
|
||||
},
|
||||
{
|
||||
name: "2",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "REDUCED_REDUNDANCY"},
|
||||
want: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "REDUCED_REDUNDANCY"},
|
||||
},
|
||||
{
|
||||
name: "3",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86"},
|
||||
want: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86"},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got := removeStandardStorageClass(tt.metadata); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("Test %s failed, expected %v, got %v", tt.name, tt.want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tests CleanMetadata method. Expectation is metadata map
|
||||
// should be cleared of etag, md5Sum and x-amz-storage-class, if it is set to STANDARD
|
||||
func TestCleanMetadata(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
metadata map[string]string
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "1",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "STANDARD"},
|
||||
want: map[string]string{"content-type": "application/octet-stream"},
|
||||
},
|
||||
{
|
||||
name: "2",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "REDUCED_REDUNDANCY"},
|
||||
want: map[string]string{"content-type": "application/octet-stream", "x-amz-storage-class": "REDUCED_REDUNDANCY"},
|
||||
},
|
||||
{
|
||||
name: "3",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "md5Sum": "abcde"},
|
||||
want: map[string]string{"content-type": "application/octet-stream"},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got := cleanMetadata(tt.metadata); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("Test %s failed, expected %v, got %v", tt.name, tt.want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tests CleanMetadataKeys method. Expectation is metadata map
|
||||
// should be cleared of keys passed to CleanMetadataKeys method
|
||||
func TestCleanMetadataKeys(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
metadata map[string]string
|
||||
keys []string
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "1",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "STANDARD", "md5": "abcde"},
|
||||
keys: []string{"etag", "md5"},
|
||||
want: map[string]string{"content-type": "application/octet-stream", "x-amz-storage-class": "STANDARD"},
|
||||
},
|
||||
{
|
||||
name: "2",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "x-amz-storage-class": "REDUCED_REDUNDANCY", "md5sum": "abcde"},
|
||||
keys: []string{"etag", "md5sum"},
|
||||
want: map[string]string{"content-type": "application/octet-stream", "x-amz-storage-class": "REDUCED_REDUNDANCY"},
|
||||
},
|
||||
{
|
||||
name: "3",
|
||||
metadata: map[string]string{"content-type": "application/octet-stream", "etag": "de75a98baf2c6aef435b57dd0fc33c86", "xyz": "abcde"},
|
||||
keys: []string{"etag", "xyz"},
|
||||
want: map[string]string{"content-type": "application/octet-stream"},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got := cleanMetadataKeys(tt.metadata, tt.keys...); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("Test %s failed, expected %v, got %v", tt.name, tt.want, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user