| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- // +build integration
- package s3integ
- import (
- "fmt"
- "github.com/aws/aws-sdk-go/awstesting/integration"
- "github.com/aws/aws-sdk-go/service/s3"
- )
- // BucketPrefix is the root prefix of integration test buckets.
- const BucketPrefix = "aws-sdk-go-integration"
- // GenerateBucketName returns a unique bucket name.
- func GenerateBucketName() string {
- return fmt.Sprintf("%s-%s",
- BucketPrefix, integration.UniqueID())
- }
- // SetupTest returns a test bucket created for the integration tests.
- func SetupTest(svc *s3.S3, bucketName string) (err error) {
- fmt.Println("Setup: Creating test bucket,", bucketName)
- _, err = svc.CreateBucket(&s3.CreateBucketInput{Bucket: &bucketName})
- if err != nil {
- return fmt.Errorf("failed to create bucket %s, %v", bucketName, err)
- }
- fmt.Println("Setup: Waiting for bucket to exist,", bucketName)
- err = svc.WaitUntilBucketExists(&s3.HeadBucketInput{Bucket: &bucketName})
- if err != nil {
- return fmt.Errorf("failed waiting for bucket %s to be created, %v",
- bucketName, err)
- }
- return nil
- }
- // CleanupTest deletes the contents of a S3 bucket, before deleting the bucket
- // it self.
- func CleanupTest(svc *s3.S3, bucketName string) error {
- errs := []error{}
- fmt.Println("TearDown: Deleting objects from test bucket,", bucketName)
- err := svc.ListObjectsPages(
- &s3.ListObjectsInput{Bucket: &bucketName},
- func(page *s3.ListObjectsOutput, lastPage bool) bool {
- for _, o := range page.Contents {
- _, err := svc.DeleteObject(&s3.DeleteObjectInput{
- Bucket: &bucketName,
- Key: o.Key,
- })
- if err != nil {
- errs = append(errs, err)
- }
- }
- return true
- },
- )
- if err != nil {
- return fmt.Errorf("failed to list objects, %s, %v", bucketName, err)
- }
- fmt.Println("TearDown: Deleting partial uploads from test bucket,", bucketName)
- err = svc.ListMultipartUploadsPages(
- &s3.ListMultipartUploadsInput{Bucket: &bucketName},
- func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
- for _, u := range page.Uploads {
- svc.AbortMultipartUpload(&s3.AbortMultipartUploadInput{
- Bucket: &bucketName,
- Key: u.Key,
- UploadId: u.UploadId,
- })
- }
- return true
- },
- )
- if err != nil {
- return fmt.Errorf("failed to list multipart objects, %s, %v", bucketName, err)
- }
- if len(errs) != 0 {
- return fmt.Errorf("failed to delete objects, %s", errs)
- }
- fmt.Println("TearDown: Deleting test bucket,", bucketName)
- if _, err = svc.DeleteBucket(&s3.DeleteBucketInput{Bucket: &bucketName}); err != nil {
- return fmt.Errorf("failed to delete test bucket, %s", bucketName)
- }
- return nil
- }
|