mirror of
https://github.com/minio/minio.git
synced 2025-11-26 04:26:12 -05:00
Add mint versioning tests (#11500)
Co-authored-by: Harshavardhana <harsha@minio.io>
This commit is contained in:
122
mint/build/versioning/main.go
Normal file
122
mint/build/versioning/main.go
Normal file
@@ -0,0 +1,122 @@
|
||||
// Mint, (C) 2021 Minio, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
//
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/s3"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// S3 client for testing
|
||||
var s3Client *s3.S3
|
||||
|
||||
func cleanupBucket(bucket string, function string, args map[string]interface{}, startTime time.Time) {
|
||||
input := &s3.ListObjectVersionsInput{
|
||||
Bucket: aws.String(bucket),
|
||||
}
|
||||
|
||||
err := s3Client.ListObjectVersionsPages(input,
|
||||
func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
|
||||
for _, v := range page.Versions {
|
||||
input := &s3.DeleteObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: v.Key,
|
||||
VersionId: v.VersionId,
|
||||
BypassGovernanceRetention: aws.Bool(true),
|
||||
}
|
||||
_, err := s3Client.DeleteObject(input)
|
||||
if err != nil {
|
||||
log.Fatalln("cleanupBucket:", err)
|
||||
return true
|
||||
}
|
||||
}
|
||||
for _, v := range page.DeleteMarkers {
|
||||
input := &s3.DeleteObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: v.Key,
|
||||
VersionId: v.VersionId,
|
||||
}
|
||||
_, err := s3Client.DeleteObject(input)
|
||||
if err != nil {
|
||||
log.Fatalln("cleanupBucket:", err)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
_, err = s3Client.DeleteBucket(&s3.DeleteBucketInput{
|
||||
Bucket: aws.String(bucket),
|
||||
})
|
||||
if err != nil {
|
||||
failureLog(function, args, startTime, "", "Cleanup bucket Failed", err).Fatal()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
endpoint := os.Getenv("SERVER_ENDPOINT")
|
||||
accessKey := os.Getenv("ACCESS_KEY")
|
||||
secretKey := os.Getenv("SECRET_KEY")
|
||||
secure := os.Getenv("ENABLE_HTTPS")
|
||||
sdkEndpoint := "http://" + endpoint
|
||||
if secure == "1" {
|
||||
sdkEndpoint = "https://" + endpoint
|
||||
}
|
||||
|
||||
creds := credentials.NewStaticCredentials(accessKey, secretKey, "")
|
||||
newSession := session.New()
|
||||
s3Config := &aws.Config{
|
||||
Credentials: creds,
|
||||
Endpoint: aws.String(sdkEndpoint),
|
||||
Region: aws.String("us-east-1"),
|
||||
S3ForcePathStyle: aws.Bool(true),
|
||||
}
|
||||
|
||||
// Create an S3 service object in the default region.
|
||||
s3Client = s3.New(newSession, s3Config)
|
||||
|
||||
// Output to stdout instead of the default stderr
|
||||
log.SetOutput(os.Stdout)
|
||||
// create custom formatter
|
||||
mintFormatter := mintJSONFormatter{}
|
||||
// set custom formatter
|
||||
log.SetFormatter(&mintFormatter)
|
||||
// log Info or above -- success cases are Info level, failures are Fatal level
|
||||
log.SetLevel(log.InfoLevel)
|
||||
|
||||
testMakeBucket()
|
||||
testPutObject()
|
||||
testPutObjectWithTaggingAndMetadata()
|
||||
testGetObject()
|
||||
testStatObject()
|
||||
testDeleteObject()
|
||||
testListObjectVersionsSimple()
|
||||
testListObjectVersionsWithPrefixAndDelimiter()
|
||||
testListObjectVersionsKeysContinuation()
|
||||
testListObjectVersionsVersionIDContinuation()
|
||||
testListObjectsVersionsWithEmptyDirObject()
|
||||
testTagging()
|
||||
testLockingLegalhold()
|
||||
testLockingRetentionGovernance()
|
||||
testLockingRetentionCompliance()
|
||||
}
|
||||
Reference in New Issue
Block a user