testSuite/cmd/common.go (65 lines of code) (raw):
package cmd
import (
gcpUtils "cloud.google.com/go/storage"
"context"
"errors"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"net/http"
"os"
"strings"
"github.com/minio/minio-go"
"github.com/Azure/azure-storage-azcopy/v10/common"
)
// validateString compares the two strings.
func validateString(expected string, actual string) bool {
if strings.Compare(expected, actual) != 0 {
return false
}
return true
}
type createS3ResOptions struct {
Location string
}
func createS3ClientWithMinio(o createS3ResOptions) *minio.Client {
accessKeyID := common.GetEnvironmentVariable(common.EEnvironmentVariable.AWSAccessKeyID())
secretAccessKey := common.GetEnvironmentVariable(common.EEnvironmentVariable.AWSSecretAccessKey())
if accessKeyID == "" || secretAccessKey == "" {
fmt.Println("AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY should be set before creating the S3 client")
os.Exit(1)
}
s3Client, err := minio.NewWithRegion("s3.amazonaws.com", accessKeyID, secretAccessKey, true, o.Location)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
return s3Client
}
func createGCPClientWithGCSSDK() (*gcpUtils.Client, error) {
jsonKey := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS")
if jsonKey == "" {
return nil, fmt.Errorf("GOOGLE_APPLICATION_CREDENTIALS should be set before creating the GCP Client")
}
projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
if projectID == "" {
return nil, fmt.Errorf("GOOGLE_CLOUD_PROJECT should be set before creating GCP Client for testing")
}
ctx := context.Background()
gcpClient, err := gcpUtils.NewClient(ctx)
if err != nil {
return nil, err
}
return gcpClient, nil
}
func ignoreStorageConflictStatus(err error) error {
if err != nil {
// Skip the error, when resource already exists.
var respErr *azcore.ResponseError
if errors.As(err, &respErr) {
if respErr.StatusCode != http.StatusConflict {
return err
}
} else {
return err
}
}
return nil
}