From 7a685cf95a2b4c2c0180849f545c7f12035e5fab Mon Sep 17 00:00:00 2001 From: Artur Sawicki Date: Wed, 6 Dec 2023 16:33:16 +0100 Subject: [PATCH] Set up client once for acceptance tests --- Makefile | 2 +- pkg/provider/provider.go | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 0dd62fbd35..20c4e46092 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,7 @@ test: ## run unit and integration tests go test -v -cover -timeout=30m ./... test-acceptance: ## run acceptance tests - TF_ACC=1 go test -run "^TestAcc_" -v -cover -timeout=30m ./... + TF_ACC=1 SF_TF_ACC_TEST_CONFIGURE_CLIENT_ONCE=true go test -run "^TestAcc_" -v -cover -timeout=30m ./... test-architecture: ## check architecture constraints between packages go test ./pkg/architests/... -v diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go index f51cb5e706..9006c957d4 100644 --- a/pkg/provider/provider.go +++ b/pkg/provider/provider.go @@ -5,6 +5,8 @@ import ( "fmt" "net" "net/url" + "os" + "sync" "time" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -737,9 +739,20 @@ func ConfigureProvider(s *schema.ResourceData) (interface{}, error) { config = sdk.MergeConfig(config, profileConfig) } } - client, err := sdk.NewClient(config) - if err != nil { - return nil, err + + if os.Getenv("TF_ACC") != "" && os.Getenv("SF_TF_ACC_TEST_CONFIGURE_CLIENT_ONCE") == "true" { + once.Do(func() { + configuredClient, configureClientErr = sdk.NewClient(config) + }) + } else { + configuredClient, configureClientErr = sdk.NewClient(config) } - return client.GetConn().DB, nil + if configureClientErr != nil { + return nil, configureClientErr + } + return configuredClient.GetConn().DB, nil } + +var once sync.Once +var configuredClient *sdk.Client +var configureClientErr error