[#650] Add Copies Numbers for PostObject operation
All checks were successful
/ DCO (pull_request) Successful in 36s
/ Vulncheck (pull_request) Successful in 1m10s
/ Builds (pull_request) Successful in 1m38s
/ OCI image (pull_request) Successful in 2m13s
/ Lint (pull_request) Successful in 2m24s
/ Tests (pull_request) Successful in 1m20s
/ Vulncheck (push) Successful in 1m9s
/ Builds (push) Successful in 58s
/ OCI image (push) Successful in 1m58s
/ Lint (push) Successful in 2m5s
/ Tests (push) Successful in 1m15s

Signed-off-by: Pavel Pogodaev <p.pogodaev@yadro.com>
This commit is contained in:
Pavel Pogodaev 2025-02-27 12:19:49 +03:00
parent d85e5b10bb
commit c0c4bdb366
6 changed files with 174 additions and 3 deletions

View file

@ -8,6 +8,8 @@ import (
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/data"
apierr "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/errors"
frosterr "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/internal/frostfs/errors"
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id"
"github.com/stretchr/testify/require"
)
@ -56,6 +58,52 @@ func TestBucketLifecycle(t *testing.T) {
require.Equal(t, apierr.GetAPIError(apierr.ErrNoSuchLifecycleConfiguration), frosterr.UnwrapErr(err))
}
func TestLifecycleCopiesNumber(t *testing.T) {
tc := prepareCORSContext(t)
lifecycle := &data.LifecycleConfiguration{
XMLName: xml.Name{
Space: `http://s3.amazonaws.com/doc/2006-03-01/`,
Local: "LifecycleConfiguration",
},
Rules: []data.LifecycleRule{
{
Status: data.LifecycleStatusEnabled,
Expiration: &data.LifecycleExpiration{
Days: ptr(21),
},
},
},
}
copies := []uint32{2, 0}
err := tc.layer.PutBucketLifecycleConfiguration(tc.ctx, &PutBucketLifecycleParams{
BktInfo: tc.bktInfo,
LifecycleCfg: lifecycle,
CopiesNumbers: copies,
})
require.NoError(t, err)
cfg, err := tc.layer.GetBucketLifecycleConfiguration(tc.ctx, tc.bktInfo)
require.NoError(t, err)
require.Equal(t, *lifecycle, *cfg)
objs := tc.testFrostFS.Objects()
require.Len(t, objs, 1)
require.EqualValues(t, copies, tc.testFrostFS.CopiesNumbers(addrFromObject(objs[0]).EncodeToString()))
}
func ptr[T any](t T) *T {
return &t
}
func addrFromObject(obj *object.Object) oid.Address {
var addr oid.Address
cnrID, _ := obj.ContainerID()
objID, _ := obj.ID()
addr.SetContainer(cnrID)
addr.SetObject(objID)
return addr
}