mirror of
https://github.com/ceph/go-ceph
synced 2025-03-06 03:18:23 +00:00
rgw/admin: add test for versioning and object lock
Signed-off-by: Seena Fallah <seenafallah@gmail.com>
This commit is contained in:
parent
828899d89b
commit
1f461a1617
@ -11,6 +11,8 @@ const (
|
||||
CephOctopus
|
||||
CephPacific
|
||||
CephQuincy
|
||||
CephReef
|
||||
CephSquid
|
||||
CephUnknown
|
||||
)
|
||||
|
||||
@ -31,6 +33,10 @@ func CephVersionOfString(vname string) CephVersion {
|
||||
return CephPacific
|
||||
case "quincy":
|
||||
return CephQuincy
|
||||
case "reef":
|
||||
return CephReef
|
||||
case "squid":
|
||||
return CephSquid
|
||||
default:
|
||||
return CephUnknown
|
||||
}
|
||||
|
@ -7,6 +7,9 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
"github.com/ceph/go-ceph/internal/util"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
@ -16,11 +19,11 @@ func (suite *RadosGWTestSuite) TestBucket() {
|
||||
co, err := New(suite.endpoint, suite.accessKey, suite.secretKey, newDebugHTTPClient(http.DefaultClient))
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
s3, err := newS3Agent(suite.accessKey, suite.secretKey, suite.endpoint, true)
|
||||
s3Agent, err := newS3Agent(suite.accessKey, suite.secretKey, suite.endpoint, true)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
beforeCreate := time.Now()
|
||||
err = s3.createBucket(suite.bucketTestName)
|
||||
err = s3Agent.createBucket(suite.bucketTestName)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
suite.T().Run("list buckets", func(_ *testing.T) {
|
||||
@ -36,7 +39,69 @@ func (suite *RadosGWTestSuite) TestBucket() {
|
||||
})
|
||||
|
||||
suite.T().Run("info existing bucket", func(_ *testing.T) {
|
||||
_, err := co.GetBucketInfo(context.Background(), Bucket{Bucket: suite.bucketTestName})
|
||||
bucketInfo, err := co.GetBucketInfo(context.Background(), Bucket{Bucket: suite.bucketTestName})
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// check if versioning is disabled
|
||||
switch {
|
||||
case util.CurrentCephVersion() < util.CephQuincy:
|
||||
// No action needed for versions below CephQuincy
|
||||
case util.CurrentCephVersion() == util.CephReef:
|
||||
assert.False(suite.T(), *bucketInfo.VersioningEnabled)
|
||||
assert.False(suite.T(), *bucketInfo.Versioned)
|
||||
default:
|
||||
assert.Equal(suite.T(), "off", *bucketInfo.Versioning)
|
||||
}
|
||||
|
||||
// check if object lock is disabled
|
||||
if util.CurrentCephVersion() >= util.CephQuincy {
|
||||
assert.False(suite.T(), bucketInfo.ObjectLockEnabled)
|
||||
}
|
||||
})
|
||||
|
||||
suite.T().Run("enable versioning", func(t *testing.T) {
|
||||
if util.CurrentCephVersion() < util.CephQuincy {
|
||||
t.Skip("versioning is not reported in bucket stats")
|
||||
}
|
||||
|
||||
_, err := s3Agent.Client.PutBucketVersioning(context.Background(), &s3.PutBucketVersioningInput{
|
||||
Bucket: &suite.bucketTestName,
|
||||
VersioningConfiguration: &types.VersioningConfiguration{Status: types.BucketVersioningStatusEnabled},
|
||||
})
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// check if versioning is enabled
|
||||
bucketInfo, err := co.GetBucketInfo(context.Background(), Bucket{Bucket: suite.bucketTestName})
|
||||
assert.NoError(suite.T(), err)
|
||||
if util.CurrentCephVersion() == util.CephReef {
|
||||
assert.True(suite.T(), *bucketInfo.VersioningEnabled)
|
||||
assert.True(suite.T(), *bucketInfo.Versioned)
|
||||
} else {
|
||||
assert.Equal(suite.T(), "enabled", *bucketInfo.Versioning)
|
||||
}
|
||||
})
|
||||
|
||||
suite.T().Run("enable bucket object lock", func(t *testing.T) {
|
||||
if util.CurrentCephVersion() < util.CephQuincy {
|
||||
t.Skip("bucket object lock is not reported in bucket stats")
|
||||
}
|
||||
|
||||
const bucketName = "bucket-object-lock"
|
||||
|
||||
// create bucket with object lock enabled
|
||||
_, err := s3Agent.Client.CreateBucket(context.Background(), &s3.CreateBucketInput{
|
||||
Bucket: aws.String(bucketName),
|
||||
ObjectLockEnabledForBucket: aws.Bool(true),
|
||||
})
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// check if object lock is enabled
|
||||
bucketInfo, err := co.GetBucketInfo(context.Background(), Bucket{Bucket: bucketName})
|
||||
assert.NoError(suite.T(), err)
|
||||
assert.True(suite.T(), bucketInfo.ObjectLockEnabled)
|
||||
|
||||
// remove bucket
|
||||
err = co.RemoveBucket(context.Background(), Bucket{Bucket: bucketName})
|
||||
assert.NoError(suite.T(), err)
|
||||
})
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user