From d48263e43fce36de1b10face0f532196e2000665 Mon Sep 17 00:00:00 2001 From: Leon Mika Date: Fri, 15 Apr 2022 06:03:55 +1000 Subject: [PATCH] Added command to load test SSM parameters --- cmd/dynamo-browse/main.go | 2 +- cmd/ssm-browse/main.go | 13 ++++++++++++- docker-compose.yml | 12 +++++++++--- test/cmd/load-test-ssm/main.go | 30 ++++++++++++++++++++++++++++++ test/cmd/load-test-table/main.go | 2 +- 5 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 test/cmd/load-test-ssm/main.go diff --git a/cmd/dynamo-browse/main.go b/cmd/dynamo-browse/main.go index 3427e2d..a1ad78b 100644 --- a/cmd/dynamo-browse/main.go +++ b/cmd/dynamo-browse/main.go @@ -34,7 +34,7 @@ func main() { var dynamoClient *dynamodb.Client if *flagLocal { dynamoClient = dynamodb.NewFromConfig(cfg, - dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL("http://localhost:8000"))) + dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL("http://localhost:4566"))) } else { dynamoClient = dynamodb.NewFromConfig(cfg) } diff --git a/cmd/ssm-browse/main.go b/cmd/ssm-browse/main.go index 6b215e9..5124e05 100644 --- a/cmd/ssm-browse/main.go +++ b/cmd/ssm-browse/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "flag" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/ssm" @@ -18,6 +19,9 @@ import ( ) func main() { + var flagLocal = flag.Bool("local", false, "local endpoint") + flag.Parse() + // Pre-determine if layout has dark background. This prevents calls for creating a list to hang. lipgloss.HasDarkBackground() @@ -28,7 +32,14 @@ func main() { if err != nil { cli.Fatalf("cannot load AWS config: %v", err) } - ssmClient := ssm.NewFromConfig(cfg) + + var ssmClient *ssm.Client + if *flagLocal { + ssmClient = ssm.NewFromConfig(cfg, + ssm.WithEndpointResolver(ssm.EndpointResolverFromURL("http://localhost:4566"))) + } else { + ssmClient = ssm.NewFromConfig(cfg) + } provider := awsssm.NewProvider(ssmClient) service := ssmparameters.NewService(provider) diff --git a/docker-compose.yml b/docker-compose.yml index ff5b618..0edc443 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,12 @@ version: '3' services: - dynamo: - image: amazon/dynamodb-local:latest + localstack: + image: localstack/localstack ports: - - 8000:8000 \ No newline at end of file + - "4566:4566" + environment: + - SERVICES=ssm,dynamodb +# dynamo: +# image: amazon/dynamodb-local:latest +# ports: +# - 8000:8000 \ No newline at end of file diff --git a/test/cmd/load-test-ssm/main.go b/test/cmd/load-test-ssm/main.go new file mode 100644 index 0000000..cf9df9f --- /dev/null +++ b/test/cmd/load-test-ssm/main.go @@ -0,0 +1,30 @@ +package main + +import ( + "context" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/ssm" + "github.com/aws/aws-sdk-go-v2/service/ssm/types" + "github.com/lmika/gopkgs/cli" +) + +func main() { + ctx := context.Background() + + cfg, err := config.LoadDefaultConfig(ctx) + if err != nil { + cli.Fatalf("cannot load AWS config: %v", err) + } + + ssmClient := ssm.NewFromConfig(cfg, + ssm.WithEndpointResolver(ssm.EndpointResolverFromURL("http://localhost:4566"))) + + if _, err := ssmClient.PutParameter(ctx, &ssm.PutParameterInput{ + Name: aws.String("/alpha/bravo"), + Type: types.ParameterTypeString, + Value: aws.String("This is a parameter value"), + }); err != nil { + cli.Fatal(err) + } +} diff --git a/test/cmd/load-test-table/main.go b/test/cmd/load-test-table/main.go index 1db13d7..847db77 100644 --- a/test/cmd/load-test-table/main.go +++ b/test/cmd/load-test-table/main.go @@ -27,7 +27,7 @@ func main() { } dynamoClient := dynamodb.NewFromConfig(cfg, - dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL("http://localhost:8000"))) + dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL("http://localhost:4566"))) if _, err = dynamoClient.DeleteTable(ctx, &dynamodb.DeleteTableInput{ TableName: aws.String(tableName),