mirror of https://github.com/minio/minio.git
123 lines
3.4 KiB
Go
123 lines
3.4 KiB
Go
// 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()
|
|
}
|