Compare commits

..

2 commits

Author SHA1 Message Date
1d37df50fc
[#100] preset_s3: Add a flag for percent of versioned buckets
All checks were successful
DCO action / DCO (pull_request) Successful in 1m30s
Tests and linters / Tests (pull_request) Successful in 2m17s
Tests and linters / Tests with -race (pull_request) Successful in 2m52s
Tests and linters / Lint (pull_request) Successful in 3m15s
Add flag "--buckets_versioned". Default is 0 (no versioned buckets)

Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
2024-11-12 18:20:52 +03:00
f53d68e68f
[#100] s3: Add a flag for permanent versioned object deletion
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
2024-11-12 18:20:45 +03:00
2 changed files with 7 additions and 15 deletions

View file

@ -153,18 +153,6 @@ func (c *Client) DeleteObjectVersion(bucket, key, version string) DeleteResponse
VersionId: aws.String(version),
})
} else {
v, err := c.cli.GetBucketVersioning(c.vu.Context(), &s3.GetBucketVersioningInput{
Bucket: aws.String(bucket),
})
if err != nil {
stats.Report(c.vu, objDeleteFails, 1)
return DeleteResponse{Success: false, Error: err.Error()}
}
if v.Status == "" {
// delete non-versioned object
return c.Delete(bucket, key)
}
versions, err := c.cli.ListObjectVersions(c.vu.Context(), &s3.ListObjectVersionsInput{
Bucket: aws.String(bucket),
Prefix: aws.String(key),
@ -173,9 +161,11 @@ func (c *Client) DeleteObjectVersion(bucket, key, version string) DeleteResponse
stats.Report(c.vu, objDeleteFails, 1)
return DeleteResponse{Success: false, Error: err.Error()}
}
toDelete = append(toDelete, filterObjectVersions(versions, key)...)
toDelete = filterObjectVersions(versions, key)
}
if len(toDelete) != 0 {
if len(toDelete) == 0 {
return c.Delete(bucket, key)
} else {
_, err := c.cli.DeleteObjects(c.vu.Context(), &s3.DeleteObjectsInput{
Bucket: aws.String(bucket),
Delete: &types.Delete{
@ -203,6 +193,7 @@ func filterObjectVersions(versions *s3.ListObjectVersionsOutput, key string) []t
})
}
}
for _, marker := range versions.DeleteMarkers {
if *marker.Key == key {
result = append(result, types.ObjectIdentifier{
@ -211,6 +202,7 @@ func filterObjectVersions(versions *s3.ListObjectVersionsOutput, key string) []t
})
}
}
return result
}

View file

@ -125,7 +125,7 @@ The tests will use all pre-created buckets for PUT operations and all pre-create
$ ./scenarios/preset/preset_s3.py --size 1024 --buckets 1 --out s3_1024kb.json --endpoint host1:8084 --preload_obj 500 --location load-1-4
```
* '--location' - specify the name of container policy (from policy.json file). It's important to run 'aws configure' each time when the policy file has been changed to pick up the latest policies.
* '--buckets_versioned' - specify the percentage of versioned buckets from the total number of created buckets. Default is 0
3. Execute scenario with options:
```shell