Skip to content

Commit

Permalink
fix: mutex for tft init
Browse files Browse the repository at this point in the history
  • Loading branch information
apeabody committed Feb 9, 2024
1 parent b098e68 commit 913fa70
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 5 deletions.
3 changes: 1 addition & 2 deletions infra/blueprint-test/examples/simple_krm_blueprint/pod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.


apiVersion: v1
kind: Pod
metadata:
Expand All @@ -22,4 +21,4 @@ spec:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
- containerPort: 80
5 changes: 5 additions & 0 deletions infra/blueprint-test/pkg/tft/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"path"
"path/filepath"
"strings"
"sync"
gotest "testing"
"time"

Expand Down Expand Up @@ -73,6 +74,7 @@ type TFBlueprintTest struct {
verify func(*assert.Assertions) // verify function
teardown func(*assert.Assertions) // teardown function
setupOutputOverrides map[string]interface{} // override outputs from the Setup phase
tftCacheMutex sync.Mutex // Mutex to protect Terraform plugin cache
}

type tftOption func(*TFBlueprintTest)
Expand Down Expand Up @@ -447,7 +449,10 @@ func (b *TFBlueprintTest) DefaultVerify(assert *assert.Assertions) {

// DefaultInit runs TF init and validate on a blueprint.
func (b *TFBlueprintTest) DefaultInit(assert *assert.Assertions) {
// mutex to prevent parallel calls to Terraform init as plugin cache isn't concurrent safe
b.tftCacheMutex.Lock()
terraform.Init(b.t, b.GetTFOptions())
b.tftCacheMutex.Unlock()
// if vars are set for common options, this seems to trigger -var flag when calling validate
// using custom tfOptions as a workaround
terraform.Validate(b.t, terraform.WithDefaultRetryableErrors(b.t, &terraform.Options{
Expand Down
2 changes: 1 addition & 1 deletion infra/blueprint-test/test/krm_simple_blueprint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func TestKRMSimpleBlueprint(t *testing.T) {
func(assert *assert.Assertions) {
networkBlueprint.DefaultVerify(assert)
k8sOpts := k8s.KubectlOptions{}
op, err := k8s.RunKubectlAndGetOutputE(t, &k8sOpts, "get", "pod", "simple-krm-blueprint", "--no-headers", "-o", "custom-columns=:metadata.name")
op, err := k8s.RunKubectlAndGetOutput(t, &k8sOpts, "get", "namespace", "simple-krm-blueprint", "--no-headers", "-o", "custom-columns=:metadata.name")
assert.NoError(err)
assert.Equal("simple-krm-blueprint", op)
})
Expand Down
4 changes: 2 additions & 2 deletions infra/blueprint-test/test/setup/main.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright 2021-2023 Google LLC
* Copyright 2021-2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -64,6 +64,6 @@ resource "google_service_account_key" "key" {

module "kubernetes-engine_example_simple_autopilot_public" {
source = "terraform-google-modules/kubernetes-engine/google//examples/simple_autopilot_public"
version = "~> 26.0"
version = "~> 30.0"
project_id = module.project.project_id
}

0 comments on commit 913fa70

Please sign in to comment.