From 719200612ddcec4bc9a53a85e44ed19baa648cb2 Mon Sep 17 00:00:00 2001 From: Michael Li Date: Mon, 10 Oct 2022 14:10:41 -0400 Subject: [PATCH] refact(e2e): Remove use of AwsHostSetCount env Instead of passing in the number of hosts created for a host set, we can just use the length of the IP addresses to determine that value. --- enos/enos-scenario-e2e-host-aws.hcl | 3 +- enos/modules/test_e2e/main.tf | 12 +++--- testing/internal/e2e/README.md | 3 +- .../e2e/host/aws/dynamichostcatalog_test.go | 39 ++++++++++++------- 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/enos/enos-scenario-e2e-host-aws.hcl b/enos/enos-scenario-e2e-host-aws.hcl index e194c29f6..384145096 100644 --- a/enos/enos-scenario-e2e-host-aws.hcl +++ b/enos/enos-scenario-e2e-host-aws.hcl @@ -179,10 +179,9 @@ scenario "e2e_host_aws" { aws_access_key_id = step.iam_setup.access_key_id aws_secret_access_key = step.iam_setup.secret_access_key aws_host_set_filter1 = step.create_tag1_inputs.tag_string - aws_host_set_count1 = 2 aws_host_set_ips1 = step.create_targets_with_tag1.target_ips aws_host_set_filter2 = step.create_tag2_inputs.tag_string - aws_host_set_count2 = 1 + aws_host_set_ips2 = step.create_targets_with_tag2.target_ips } } diff --git a/enos/modules/test_e2e/main.tf b/enos/modules/test_e2e/main.tf index e5bb23be9..437b94c2a 100644 --- a/enos/modules/test_e2e/main.tf +++ b/enos/modules/test_e2e/main.tf @@ -83,16 +83,17 @@ variable "aws_host_set_filter2" { type = string default = "" } -variable "aws_host_set_count2" { - description = "Number of hosts in aws_host_set_filter2" - type = number - default = 0 +variable "aws_host_set_ips2" { + description = "List of IP addresses in aws_host_set_filter2" + type = list(string) + default = [""] } locals { aws_ssh_private_key_path = abspath(var.aws_ssh_private_key_path) vault_addr = var.vault_addr != "" ? "http://${var.vault_addr}:8200" : "" aws_host_set_ips1 = jsonencode(var.aws_host_set_ips1) + aws_host_set_ips2 = jsonencode(var.aws_host_set_ips2) } resource "enos_local_exec" "run_e2e_test" { @@ -109,10 +110,9 @@ resource "enos_local_exec" "run_e2e_test" { E2E_AWS_ACCESS_KEY_ID = var.aws_access_key_id, E2E_AWS_SECRET_ACCESS_KEY = var.aws_secret_access_key, E2E_AWS_HOST_SET_FILTER1 = var.aws_host_set_filter1, - E2E_AWS_HOST_SET_COUNT1 = var.aws_host_set_count1, E2E_AWS_HOST_SET_IPS1 = local.aws_host_set_ips1, E2E_AWS_HOST_SET_FILTER2 = var.aws_host_set_filter2, - E2E_AWS_HOST_SET_COUNT2 = var.aws_host_set_count2 + E2E_AWS_HOST_SET_IPS2 = local.aws_host_set_ips2 } inline = ["PATH=\"${var.local_boundary_dir}:$PATH\" go test -v ${var.test_package}"] diff --git a/testing/internal/e2e/README.md b/testing/internal/e2e/README.md index c56e6d3f3..4f89e02cf 100644 --- a/testing/internal/e2e/README.md +++ b/testing/internal/e2e/README.md @@ -49,10 +49,9 @@ export E2E_SSH_USER= # e.g. ubuntu export E2E_AWS_ACCESS_KEY_ID= export E2E_AWS_SECRET_ACCESS_KEY= export E2E_AWS_HOST_SET_FILTER1= # e.g. "tag:testtag=true" -export E2E_AWS_HOST_SET_COUNT1= # e.g. 2 export E2E_AWS_HOST_SET_IPS1= # e.g. "[\"1.2.3.4\", \"2.3.4.5\"]" export E2E_AWS_HOST_SET_FILTER2= # e.g. "tag:testtagtwo=test" -export E2E_AWS_HOST_SET_COUNT2= # e.g. 1 +export E2E_AWS_HOST_SET_IPS2= # e.g. "[\"1.2.3.4\"] export E2E_SSH_KEY_PATH= # e.g. /Users/username/key.pem export E2E_SSH_USER= # e.g. ubuntu diff --git a/testing/internal/e2e/host/aws/dynamichostcatalog_test.go b/testing/internal/e2e/host/aws/dynamichostcatalog_test.go index 1c93cdd0c..819574b1a 100644 --- a/testing/internal/e2e/host/aws/dynamichostcatalog_test.go +++ b/testing/internal/e2e/host/aws/dynamichostcatalog_test.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "strconv" "strings" "testing" "time" @@ -25,13 +24,12 @@ import ( type config struct { AwsAccessKeyId string `envconfig:"E2E_AWS_ACCESS_KEY_ID" required:"true"` AwsSecretAccessKey string `envconfig:"E2E_AWS_SECRET_ACCESS_KEY" required:"true"` - AwsHostSetFilter1 string `envconfig:"E2E_AWS_HOST_SET_FILTER1" required:"true"` - AwsHostSetCount1 string `envconfig:"E2E_AWS_HOST_SET_COUNT1" required:"true"` - AwsHostSetIps1 string `envconfig:"E2E_AWS_HOST_SET_IPS1" required:"true"` - AwsHostSetFilter2 string `envconfig:"E2E_AWS_HOST_SET_FILTER2" required:"true"` - AwsHostSetCount2 string `envconfig:"E2E_AWS_HOST_SET_COUNT2" required:"true"` - TargetSshKeyPath string `envconfig:"E2E_SSH_KEY_PATH" required:"true"` // e.g. /Users/username/key.pem - TargetSshUser string `envconfig:"E2E_SSH_USER" required:"true"` // e.g. ubuntu + AwsHostSetFilter1 string `envconfig:"E2E_AWS_HOST_SET_FILTER1" required:"true"` // e.g. "tag:testtag=true" + AwsHostSetIps1 string `envconfig:"E2E_AWS_HOST_SET_IPS1" required:"true"` // e.g. "[\"1.2.3.4\", \"2.3.4.5\"]" + AwsHostSetFilter2 string `envconfig:"E2E_AWS_HOST_SET_FILTER2" required:"true"` // e.g. "tag:testtagtwo=test" + AwsHostSetIps2 string `envconfig:"E2E_AWS_HOST_SET_IPS2" required:"true"` // e.g. "[\"1.2.3.4\"]" + TargetSshKeyPath string `envconfig:"E2E_SSH_KEY_PATH" required:"true"` // e.g. "/Users/username/key.pem" + TargetSshUser string `envconfig:"E2E_SSH_USER" required:"true"` // e.g. "ubuntu" TargetPort string `envconfig:"E2E_SSH_PORT" default:"22"` } @@ -45,6 +43,9 @@ func loadConfig() (*config, error) { return &c, err } +// TestCreateAwsDynamicHostCatalogCli uses the boundary cli to create a host catalog with the AWS +// plugin. The test sets up an AWS dynamic host catalog, creates some host sets, sets up a target to +// one of the host sets, and attempts to connect to the target. func TestCreateAwsDynamicHostCatalogCli(t *testing.T) { e2e.MaybeSkipTest(t) c, err := loadConfig() @@ -123,7 +124,10 @@ func TestCreateAwsDynamicHostCatalogCli(t *testing.T) { }, ) require.NoError(t, err) - expectedHostSetCount1, err := strconv.Atoi(c.AwsHostSetCount1) + + var targetIps1 []string + err = json.Unmarshal([]byte(c.AwsHostSetIps1), &targetIps1) + expectedHostSetCount1 := len(targetIps1) require.NoError(t, err) assert.Equal(t, expectedHostSetCount1, actualHostSetCount1, "Numbers of hosts in host set did not match expected amount") @@ -174,7 +178,9 @@ func TestCreateAwsDynamicHostCatalogCli(t *testing.T) { }, ) require.NoError(t, err) - expectedHostSetCount2, err := strconv.Atoi(c.AwsHostSetCount2) + var targetIps2 []string + err = json.Unmarshal([]byte(c.AwsHostSetIps2), &targetIps2) + expectedHostSetCount2 := len(targetIps2) require.NoError(t, err) assert.Equal(t, expectedHostSetCount2, actualHostSetCount2, "Numbers of hosts in host set did not match expected amount") @@ -257,17 +263,18 @@ func TestCreateAwsDynamicHostCatalogCli(t *testing.T) { t.Log("Successfully connected to the target") // Check if connected host exists in the host set - var targetIps []string - err = json.Unmarshal([]byte(c.AwsHostSetIps1), &targetIps) hostIpInList := false - for _, v := range targetIps { + for _, v := range targetIps1 { if v == hostIp { hostIpInList = true } } - require.True(t, hostIpInList, fmt.Sprintf("Connected host (%s) is not in expected list (%s)", hostIp, targetIps)) + require.True(t, hostIpInList, fmt.Sprintf("Connected host (%s) is not in expected list (%s)", hostIp, targetIps1)) } +// TestCreateAwsDynamicHostCatalogApi uses the boundary go api to create a host catalog with the AWS +// plugin. The test sets up an AWS dynamic host catalog, creates a host set, and sets up a target to +// the host set. func TestCreateAwsDynamicHostCatalogApi(t *testing.T) { e2e.MaybeSkipTest(t) c, err := loadConfig() @@ -340,7 +347,9 @@ func TestCreateAwsDynamicHostCatalogApi(t *testing.T) { ) require.NoError(t, err) t.Log("Successfully found items in the host set") - expectedHostSetCount, err := strconv.Atoi(c.AwsHostSetCount1) + var targetIps []string + err = json.Unmarshal([]byte(c.AwsHostSetIps1), &targetIps) + expectedHostSetCount := len(targetIps) require.NoError(t, err) assert.Equal(t, expectedHostSetCount, actualHostSetCount, "Numbers of hosts in host set did not match expected amount")