package eksconfig import ( "fmt" "io/ioutil" "os" "reflect" "strings" "testing" "time" "github.com/aws/aws-k8s-tester/ec2config" "github.com/aws/aws-k8s-tester/pkg/randutil" "github.com/aws/aws-sdk-go/service/eks" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" ) func TestEnv(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_CONFIG", ` spec: clusterAutoscaler: cloudProvider: kubemark image: 767520670908.dkr.ecr.us-west-2.amazonaws.com/cluster-autoscaler-kubemark:custom-build-20200727 overprovisioning: kubemarkEnabled: true `) defer os.Unsetenv("AWS_K8S_TESTER_EKS_CONFIG") os.Setenv("AWS_K8S_TESTER_EKS_LOG_COLOR", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_LOG_COLOR") os.Setenv("AWS_K8S_TESTER_EKS_LOG_COLOR_OVERRIDE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_LOG_COLOR_OVERRIDE") os.Setenv("AWS_K8S_TESTER_EKS_KUBECTL_COMMANDS_OUTPUT_PATH", "hello-kubectl") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBECTL_COMMANDS_OUTPUT_PATH") os.Setenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_COMMANDS_OUTPUT_PATH", "hello-ssh") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_COMMANDS_OUTPUT_PATH") os.Setenv("AWS_K8S_TESTER_EKS_REGION", "us-east-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REGION") os.Setenv("AWS_K8S_TESTER_EKS_LOG_LEVEL", "debug") defer os.Unsetenv("AWS_K8S_TESTER_EKS_LOG_LEVEL") os.Setenv("AWS_K8S_TESTER_EKS_KUBECTL_DOWNLOAD_URL", "https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/linux/amd64/kubectl") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBECTL_DOWNLOAD_URL") os.Setenv("AWS_K8S_TESTER_EKS_KUBECTL_PATH", "/tmp/aws-k8s-tester-test/kubectl") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBECTL_PATH") os.Setenv("AWS_K8S_TESTER_EKS_KUBECONFIG_PATH", "/tmp/aws-k8s-tester/kubeconfig2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBECONFIG_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ON_FAILURE_DELETE", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ON_FAILURE_DELETE") os.Setenv("AWS_K8S_TESTER_EKS_ON_FAILURE_DELETE_WAIT_SECONDS", "780") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ON_FAILURE_DELETE_WAIT_SECONDS") os.Setenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_CLUSTER", "echo hello1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_CLUSTER") os.Setenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_CLUSTER_TIMEOUT", "7m") defer os.Unsetenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_CLUSTER_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_ADD_ONS", "echo hello2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_ADD_ONS") os.Setenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_ADD_ONS_TIMEOUT", "17m") defer os.Unsetenv("AWS_K8S_TESTER_EKS_COMMAND_AFTER_CREATE_ADD_ONS_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_S3_BUCKET_CREATE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_S3_BUCKET_CREATE") os.Setenv("AWS_K8S_TESTER_EKS_S3_BUCKET_CREATE_KEEP", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_S3_BUCKET_CREATE_KEEP") os.Setenv("AWS_K8S_TESTER_EKS_S3_BUCKET_NAME", `my-bucket`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_S3_BUCKET_NAME") os.Setenv("AWS_K8S_TESTER_EKS_S3_BUCKET_LIFECYCLE_EXPIRATION_DAYS", `10`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_S3_BUCKET_LIFECYCLE_EXPIRATION_DAYS") os.Setenv("AWS_K8S_TESTER_EKS_CLIENTS", `333`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_CLIENTS") os.Setenv("AWS_K8S_TESTER_EKS_CLIENT_TIMEOUT", `10m`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_CLIENT_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_CLIENT_QPS", `99555.77`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_CLIENT_QPS") os.Setenv("AWS_K8S_TESTER_EKS_CLIENT_BURST", `177`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_CLIENT_BURST") os.Setenv("AWS_K8S_TESTER_EKS_SKIP_DELETE_CLUSTER_AND_NODES", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_SKIP_DELETE_CLUSTER_AND_NODES") os.Setenv("AWS_K8S_TESTER_EKS_VPC_CREATE", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_CREATE") os.Setenv("AWS_K8S_TESTER_EKS_VPC_ID", "vpc-id") defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_ID") os.Setenv("AWS_K8S_TESTER_EKS_VPC_CIDRS", "public-cidr1,public-cidr2,public-cidr3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_CIDRS") os.Setenv("AWS_K8S_TESTER_EKS_VPC_PUBLIC_SUBNET_CIDRS", "public-cidr1,public-cidr2,public-cidr3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_PUBLIC_SUBNET_CIDRS") os.Setenv("AWS_K8S_TESTER_EKS_VPC_PRIVATE_SUBNET_CIDRS", "private-cidr1,private-cidr2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_PRIVATE_SUBNET_CIDRS") os.Setenv("AWS_K8S_TESTER_EKS_VPC_DHCP_OPTIONS_DOMAIN_NAME", `hello.com`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_DHCP_OPTIONS_DOMAIN_NAME") os.Setenv("AWS_K8S_TESTER_EKS_VPC_DHCP_OPTIONS_DOMAIN_NAME_SERVERS", `1.2.3.0,4.5.6.7`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_VPC_DHCP_OPTIONS_DOMAIN_NAME_SERVERS") os.Setenv("AWS_K8S_TESTER_EKS_TAGS", `{"to-delete":"2020","hello-world": "test"}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_TAGS") os.Setenv("AWS_K8S_TESTER_EKS_REQUEST_HEADER_KEY", "eks-options") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REQUEST_HEADER_KEY") os.Setenv("AWS_K8S_TESTER_EKS_REQUEST_HEADER_VALUE", "kubernetesVersion=1.11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REQUEST_HEADER_VALUE") os.Setenv("AWS_K8S_TESTER_EKS_RESOLVER_URL", "amazon.com") defer os.Unsetenv("AWS_K8S_TESTER_EKS_RESOLVER_URL") os.Setenv("AWS_K8S_TESTER_EKS_SIGNING_NAME", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_SIGNING_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ROLE_CREATE", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ROLE_CREATE") os.Setenv("AWS_K8S_TESTER_EKS_ROLE_ARN", "cluster-role-arn") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ROLE_ARN") os.Setenv("AWS_K8S_TESTER_EKS_ROLE_SERVICE_PRINCIPALS", "eks.amazonaws.com,eks-beta-pdx.aws.internal,eks-dev.aws.internal") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ROLE_SERVICE_PRINCIPALS") os.Setenv("AWS_K8S_TESTER_EKS_ROLE_MANAGED_POLICY_ARNS", "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy,arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ROLE_MANAGED_POLICY_ARNS") os.Setenv("AWS_K8S_TESTER_EKS_VERSION", "1.18") defer os.Unsetenv("AWS_K8S_TESTER_EKS_VERSION") os.Setenv("AWS_K8S_TESTER_EKS_ENCRYPTION_CMK_CREATE", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ENCRYPTION_CMK_CREATE") os.Setenv("AWS_K8S_TESTER_EKS_ENCRYPTION_CMK_ARN", "key-arn") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ENCRYPTION_CMK_ARN") os.Setenv("AWS_K8S_TESTER_EKS_KUBE_APISERVER_MAX_REQUESTS_INFLIGHT", "3000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBE_APISERVER_MAX_REQUESTS_INFLIGHT") os.Setenv("AWS_K8S_TESTER_EKS_KUBE_CONTROLLER_MANAGER_QPS", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBE_CONTROLLER_MANAGER_QPS") os.Setenv("AWS_K8S_TESTER_EKS_KUBE_CONTROLLER_MANAGER_BURST", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBE_CONTROLLER_MANAGER_BURST") os.Setenv("AWS_K8S_TESTER_EKS_KUBE_SCHEDULER_QPS", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBE_SCHEDULER_QPS") os.Setenv("AWS_K8S_TESTER_EKS_KUBE_SCHEDULER_BURST", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_KUBE_SCHEDULER_BURST") os.Setenv("AWS_K8S_TESTER_EKS_FE_UPDATE_MASTER_FLAGS_URL", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_FE_UPDATE_MASTER_FLAGS_URL") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_VERSION_UPGRADE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_VERSION_UPGRADE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_VERSION_UPGRADE_WAIT_BEFORE_UPGRADE", "1h27m") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_WAIT_BEFORE_UPGRADE_UPGRADE_VERSION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_VERSION_UPGRADE_VERSION", "1.19") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_VERSION_UPGRADE_VERSION") os.Setenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_KEY_CREATE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_KEY_CREATE") os.Setenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_KEY_NAME", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_KEY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_PRIVATE_KEY_PATH", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_PRIVATE_KEY_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_FETCH_LOGS", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_FETCH_LOGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ASGS", `{"ng-test-name-cpu":{"name":"ng-test-name-cpu","remote-access-user-name":"ec2-user","ami-type":"AL2_x86_64","image-id-ssm-parameter":"/aws/service/eks/optimized-ami/1.30/amazon-linux-2/recommended/image_id","asg-min-size":17,"kubelet-extra-args":"bbb qq","bootstrap-args":"--pause-container-account 012345678901", "cluster-autoscaler" : {"enable" : false}, "asg-max-size":99,"asg-desired-capacity":77,"instance-type":"type-cpu-2","volume-size":40,"volume-type":"gp2"},"ng-test-name-gpu":{"name":"ng-test-name-gpu","remote-access-user-name":"ec2-user","ami-type":"AL2_x86_64_GPU","asg-min-size":30,"asg-max-size":35,"asg-desired-capacity":34,"instance-type":"type-gpu-2","image-id":"my-gpu-ami","volume-size":500,"volume-type":"gp3","cluster-autoscaler": {"enable":false},"kubelet-extra-args":"aaa aa"}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ASGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ROLE_NAME", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ROLE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_LOGS_DIR", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_LOGS_DIR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_FETCH_LOGS", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_FETCH_LOGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_CREATE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_CREATE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_NAME", "mng-role-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_ARN", "mng-role-arn") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_ARN") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_SERVICE_PRINCIPALS", "ec2.amazonaws.com,eks.amazonaws.com,hello.amazonaws.com") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_SERVICE_PRINCIPALS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_MANAGED_POLICY_ARNS", "a,b,c") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ROLE_MANAGED_POLICY_ARNS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_REQUEST_HEADER_KEY", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_REQUEST_HEADER_KEY") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_REQUEST_HEADER_VALUE", "b") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_REQUEST_HEADER_VALUE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_RESOLVER_URL", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_RESOLVER_URL") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_SIGNING_NAME", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_SIGNING_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS", `{"mng-test-name-cpu":{"name":"mng-test-name-cpu","tags":{"cpu":"hello-world"},"remote-access-user-name":"ec2-user","release-version":"","ami-type":"AL2_x86_64","asg-min-size":17,"scale-updates":[{"enable":true,"asg-min-size":500,"asg-max-size":700, "asg-desired-capacity":600, "initial-wait-string":"1h33m"}, {"enable":true,"asg-min-size":555,"asg-max-size":755, "asg-desired-capacity":655, "initial-wait-string":"2h33m", "id":"hello1"}],"version-upgrade":{"enable":true,"initial-wait-string":"13m","version":"1.19"},"asg-max-size":99,"asg-desired-capacity":77,"instance-types":["type-cpu-1","type-cpu-2"],"volume-size":40},"mng-test-name-gpu":{"name":"mng-test-name-gpu","remote-access-user-name":"ec2-user","tags":{"gpu":"hello-world"},"release-version":"1.18.8-20200609","ami-type":"AL2_x86_64_GPU","version-upgrade":{"enable":true,"initial-wait-string":"100ms", "version":"1.19"},"scale-updates":[{"enable":true,"asg-min-size":500,"asg-max-size":700, "asg-desired-capacity":600, "initial-wait-string":"1h33m"}, {"enable":true,"asg-min-size":555,"asg-max-size":755, "asg-desired-capacity":655, "initial-wait-string":"2h33m", "id":"hello2"}],"asg-min-size":30,"asg-max-size":35,"asg-desired-capacity":34,"instance-types":["type-gpu-1","type-gpu-2"],"volume-size":500}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_LOGS_DIR", "a") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_LOGS_DIR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_REGION", "eu-north-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_REGION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_NAME", "aws-k8s-cni-init") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_IMAGE_TAG", "latest2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_INIT_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_REGION", "eu-north-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_REGION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_NAME", "aws-k8s-cni") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_IMAGE_TAG", "latest2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_NODE_SELECTOR", `{"a":"b","c":"d"}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_NODE_SELECTOR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_MINIMUM_IP_TARGET", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_MINIMUM_IP_TARGET") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_WARM_IP_TARGET", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CNI_VPC_WARM_IP_TARGET") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CW_AGENT_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CW_AGENT_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_REGION", "eu-north-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_REGION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_NAME", "busybox") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_IMAGE_TAG", "latest2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_REPOSITORY_BUSYBOX_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_METADATA_WATCH", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FLUENTD_METADATA_WATCH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_DEPLOYMENT_REPLICAS", "333") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_DEPLOYMENT_REPLICAS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_NAMESPACE", "test-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_DEPLOYMENT_NODE_SELECTOR", `{"a":"b","c":"d"}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PHP_APACHE_DEPLOYMENT_NODE_SELECTOR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_DEPLOYMENT_REPLICAS", "333") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_DEPLOYMENT_REPLICAS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_NAMESPACE", "test-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_DEPLOYMENT_NODE_SELECTOR", `{"a":"b","c":"d"}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_DEPLOYMENT_NODE_SELECTOR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_DEPLOYMENT_REPLICAS", "333") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_DEPLOYMENT_REPLICAS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_NAMESPACE", "test-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_DEPLOYMENT_NODE_SELECTOR", `{"a":"b","c":"d"}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_GUESTBOOK_DEPLOYMENT_NODE_SELECTOR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_DEPLOYMENT_REPLICAS_ALB", "333") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_DEPLOYMENT_REPLICAS_ALB") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_DEPLOYMENT_REPLICAS_2048", "555") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_DEPLOYMENT_REPLICAS_2048") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_NAMESPACE", "test-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_DEPLOYMENT_NODE_SELECTOR_2048", `{"1":"2","3":"4", "5":"6"}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_DEPLOYMENT_NODE_SELECTOR_2048") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_NAMESPACE", "hello1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_COMPLETES", "100") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_COMPLETES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_PARALLELS", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_PARALLELS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_NAMESPACE", "hello2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_COMPLETES", "1000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_COMPLETES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_PARALLELS", "100") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_PARALLELS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_ECHO_SIZE", "10000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_ECHO_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_REGION", "eu-north-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_REGION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_NAME", "busybox") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_IMAGE_TAG", "latest2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_REPOSITORY_BUSYBOX_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_NAMESPACE", "hello3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_SCHEDULE", "*/1 * * * *") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_SCHEDULE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_COMPLETES", "100") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_COMPLETES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_PARALLELS", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_PARALLELS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_SUCCESSFUL_JOBS_HISTORY_LIMIT", "100") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_SUCCESSFUL_JOBS_HISTORY_LIMIT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_FAILED_JOBS_HISTORY_LIMIT", "1000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_FAILED_JOBS_HISTORY_LIMIT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_ECHO_SIZE", "10000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_ECHO_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_REGION", "eu-north-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_REGION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_NAME", "busybox") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_IMAGE_TAG", "latest2") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_REPOSITORY_BUSYBOX_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_INITIAL_REQUEST_CONDITION_TYPE", "Random") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_INITIAL_REQUEST_CONDITION_TYPE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_OBJECTS", "10000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_OBJECTS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_REQUESTS_RAW_WRITES_COMPARE_S3_DIR", "a/b/c") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_LOCAL_REQUESTS_RAW_WRITES_COMPARE_S3_DIR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_NAMESPACE", "csr-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_INITIAL_REQUEST_CONDITION_TYPE", "Random") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_INITIAL_REQUEST_CONDITION_TYPE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_OBJECTS", "10000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_OBJECTS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_REGION", "eu-north-1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_REGION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_NAME", "csrs-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_IMAGE_TAG", "csrs-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSRS_REMOTE_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_NAMESPACE", "configmap-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_OBJECTS", "10000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_OBJECTS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_OBJECT_SIZE", "555") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_LOCAL_OBJECT_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_NAMESPACE", "configmap-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_OBJECTS", "10000") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_OBJECTS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_OBJECT_SIZE", "555") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_OBJECT_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_REPOSITORY_NAME", "configmaps-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_REPOSITORY_IMAGE_TAG", "configmaps-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFIGMAPS_REMOTE_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_OBJECTS", "5") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_OBJECTS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_OBJECT_SIZE", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_LOCAL_OBJECT_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_S3_DIR", "hello-s3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_S3_DIR") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_OBJECTS", "5") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_OBJECTS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_OBJECT_SIZE", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_OBJECT_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_REPOSITORY_NAME", "secrets-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_REPOSITORY_IMAGE_TAG", "secrets-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_REMOTE_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ROLE_NAME", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ROLE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ROLE_SERVICE_PRINCIPALS", "a,b,c") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ROLE_SERVICE_PRINCIPALS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ROLE_MANAGED_POLICY_ARNS", "a,b,c") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_ROLE_MANAGED_POLICY_ARNS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_PROFILE_NAME", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_PROFILE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_REPOSITORY_NAME", "fargate-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_REPOSITORY_IMAGE_TAG", "fargate-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_SECRET_NAME", "HELLO-SECRET") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_SECRET_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_ROLE_NAME", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_ROLE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_S3_KEY", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_S3_KEY") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_REPOSITORY_NAME", "irsa-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_REPOSITORY_IMAGE_TAG", "irsa-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_DEPLOYMENT_RESULT_PATH", "hello-deployment.log") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_DEPLOYMENT_RESULT_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ROLE_NAME", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ROLE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ROLE_SERVICE_PRINCIPALS", "a,b,c") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ROLE_SERVICE_PRINCIPALS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ROLE_MANAGED_POLICY_ARNS", "a,b,c") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_ROLE_MANAGED_POLICY_ARNS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_S3_KEY", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_S3_KEY") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_PROFILE_NAME", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_PROFILE_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_REPOSITORY_NAME", "irsa-fargate-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_REPOSITORY_IMAGE_TAG", "irsa-fargate-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_FARGATE_REPOSITORY_IMAGE_TAG") proxySecretToken := randutil.Hex(32) os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JUPYTER_HUB_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JUPYTER_HUB_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JUPYTER_HUB_NAMESPACE", "jhhub") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JUPYTER_HUB_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_JUPYTER_HUB_PROXY_SECRET_TOKEN", proxySecretToken) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_JUPYTER_HUB_PROXY_SECRET_TOKEN") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CUDA_VECTOR_ADD_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CUDA_VECTOR_ADD_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_TEST_CONFIG_PATH", "artifacts/clusterloader2-testing-load-config.yaml") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_TEST_CONFIG_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_RUNS", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_RUNS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_TIMEOUT", "3m30s") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_NODES", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_NODES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_NODES_PER_NAMESPACE", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_NODES_PER_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_PODS_PER_NODE", "21") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_PODS_PER_NODE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_BIG_GROUP_SIZE", "26") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_BIG_GROUP_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_MEDIUM_GROUP_SIZE", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_MEDIUM_GROUP_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_SMALL_GROUP_SIZE", "6") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_SMALL_GROUP_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_SMALL_STATEFUL_SETS_PER_NAMESPACE", "1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_SMALL_STATEFUL_SETS_PER_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_MEDIUM_STATEFUL_SETS_PER_NAMESPACE", "1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_MEDIUM_STATEFUL_SETS_PER_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_CL2_SCHEDULER_THROUGHPUT_THRESHOLD", "20") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_LOCAL_CL2_SCHEDULER_THROUGHPUT_THRESHOLD") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_NAME", "hollow-nodes-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_URI", "hollow-nodes-repo-uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_URI") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_IMAGE_TAG", "hollow-nodes-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_RUNS", "21") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_RUNS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_TIMEOUT", "5m30s") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_NODES", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_NODES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_NODES_PER_NAMESPACE", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_NODES_PER_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_PODS_PER_NODE", "21") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_PODS_PER_NODE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_BIG_GROUP_SIZE", "26") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_BIG_GROUP_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_MEDIUM_GROUP_SIZE", "11") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_MEDIUM_GROUP_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_SMALL_GROUP_SIZE", "6") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_SMALL_GROUP_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_SMALL_STATEFUL_SETS_PER_NAMESPACE", "1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_SMALL_STATEFUL_SETS_PER_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_MEDIUM_STATEFUL_SETS_PER_NAMESPACE", "1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_MEDIUM_STATEFUL_SETS_PER_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_CL2_SCHEDULER_THROUGHPUT_THRESHOLD", "30") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CLUSTER_LOADER_REMOTE_CL2_SCHEDULER_THROUGHPUT_THRESHOLD") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_LOCAL_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_LOCAL_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_LOCAL_DURATION", "7m30s") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_LOCAL_DURATION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_LOCAL_LIST_LIMIT", "133") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_LOCAL_LIST_LIMIT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_DURATION", "7m30s") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_DURATION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REPOSITORY_NAME", "stresser-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REPOSITORY_IMAGE_TAG", "stresser-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_COMPLETES", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_COMPLETES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_OBJECT_SIZE", "512") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_OBJECT_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_LIST_LIMIT", "177") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_LIST_LIMIT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REQUESTS_SUMMARY_WRITES_OUTPUT_NAME_PREFIX", "stresser-out-pfx") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REQUESTS_SUMMARY_WRITES_OUTPUT_NAME_PREFIX") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REQUESTS_SUMMARY_READS_OUTPUT_NAME_PREFIX", "stresser-out-pfx") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_REQUESTS_SUMMARY_READS_OUTPUT_NAME_PREFIX") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_NAMESPACE", "hello") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_ACCOUNT_ID", "uri") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_ACCOUNT_ID") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_NAME", "stresser-repo-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_IMAGE_TAG", "stresser-repo-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_BUSYBOX_NAME", "stresser-busybox-name") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_BUSYBOX_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_BUSYBOX_IMAGE_TAG", "stresser-busybox-image-tag") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_REPOSITORY_BUSYBOX_IMAGE_TAG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_SCHEDULE", "*/1 * * * *") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_SCHEDULE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_COMPLETES", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_COMPLETES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_PARALLELS", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_PARALLELS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_SUCCESSFUL_JOBS_HISTORY_LIMIT", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_SUCCESSFUL_JOBS_HISTORY_LIMIT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_FAILED_JOBS_HISTORY_LIMIT", "500") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_FAILED_JOBS_HISTORY_LIMIT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_OBJECT_SIZE", "512") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_OBJECT_SIZE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_DURATION", "7m30s") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_DURATION") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_COROUTINES", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_COROUTINES") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_SECRETS", "10") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_STRESSER_REMOTE_V2_SECRETS") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } expectedSpec := Spec{ ClusterAutoscaler: &ClusterAutoscalerSpec{ Image: "767520670908.dkr.ecr.us-west-2.amazonaws.com/cluster-autoscaler-kubemark:custom-build-20200727", CloudProvider: CloudProviderKubemark, }, Overprovisioning: &OverprovisioningSpec{ KubemarkEnabled: true, }, } if !reflect.DeepEqual(expectedSpec, cfg.Spec) { t.Fatalf("expected %+v, got %+v", expectedSpec, cfg.Spec) } if cfg.LogColor { t.Fatalf("unexpected LogColor %v", cfg.LogColor) } if cfg.LogColorOverride != "true" { t.Fatalf("unexpected LogColorOverride %q", cfg.LogColorOverride) } if cfg.KubectlCommandsOutputPath != "hello-kubectl" { t.Fatalf("unexpected %q", cfg.KubectlCommandsOutputPath) } if cfg.RemoteAccessCommandsOutputPath != "hello-ssh" { t.Fatalf("unexpected %q", cfg.RemoteAccessCommandsOutputPath) } if cfg.Region != "us-east-1" { t.Fatalf("unexpected %q", cfg.Region) } if cfg.LogLevel != "debug" { t.Fatalf("unexpected %q", cfg.LogLevel) } if cfg.KubectlDownloadURL != "https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/linux/amd64/kubectl" { t.Fatalf("unexpected KubectlDownloadURL %q", cfg.KubectlDownloadURL) } if cfg.KubectlPath != "/tmp/aws-k8s-tester-test/kubectl" { t.Fatalf("unexpected KubectlPath %q", cfg.KubectlPath) } if cfg.KubeConfigPath != "/tmp/aws-k8s-tester/kubeconfig2" { t.Fatalf("unexpected KubeConfigPath %q", cfg.KubeConfigPath) } if cfg.OnFailureDelete { t.Fatalf("unexpected OnFailureDelete %v", cfg.OnFailureDelete) } if cfg.OnFailureDeleteWaitSeconds != 780 { t.Fatalf("unexpected OnFailureDeleteWaitSeconds %d", cfg.OnFailureDeleteWaitSeconds) } if cfg.CommandAfterCreateCluster != "echo hello1" { t.Fatalf("unexpected CommandAfterCreateCluster %q", cfg.CommandAfterCreateCluster) } if cfg.CommandAfterCreateClusterTimeout != 7*time.Minute { t.Fatalf("unexpected CommandAfterCreateClusterTimeout %v", cfg.CommandAfterCreateClusterTimeout) } if cfg.CommandAfterCreateAddOns != "echo hello2" { t.Fatalf("unexpected CommandAfterCreateAddOns %q", cfg.CommandAfterCreateAddOns) } if cfg.CommandAfterCreateAddOnsTimeout != 17*time.Minute { t.Fatalf("unexpected CommandAfterCreateAddOnsTimeout %v", cfg.CommandAfterCreateAddOnsTimeout) } if !cfg.S3.BucketCreate { t.Fatalf("unexpected cfg.S3.BucketCreate %v", cfg.S3.BucketCreate) } if !cfg.S3.BucketCreateKeep { t.Fatalf("unexpected cfg.S3.BucketCreateKeep %v", cfg.S3.BucketCreateKeep) } if cfg.S3.BucketName != "my-bucket" { t.Fatalf("unexpected cfg.S3.BucketName %q", cfg.S3.BucketName) } if cfg.S3.BucketLifecycleExpirationDays != 10 { t.Fatalf("unexpected cfg.S3.BucketLifecycleExpirationDays %d", cfg.S3.BucketLifecycleExpirationDays) } if cfg.Clients != 333 { t.Fatalf("unexpected cfg.Clients %d", cfg.Clients) } if cfg.ClientTimeout != 10*time.Minute { t.Fatalf("unexpected cfg.ClientTimeout %v", cfg.ClientTimeout) } if cfg.ClientQPS != 99555.77 { t.Fatalf("unexpected cfg.ClientQPS %f", cfg.ClientQPS) } if cfg.ClientBurst != 177 { t.Fatalf("unexpected cfg.ClientBurst %d", cfg.ClientBurst) } if !cfg.SkipDeleteClusterAndNodes { t.Fatalf("unexpected SkipDeleteClusterAndNodes %v", cfg.SkipDeleteClusterAndNodes) } if cfg.VPC.Create { t.Fatalf("unexpected VPC.Create %v", cfg.VPC.Create) } if cfg.VPC.ID != "vpc-id" { t.Fatalf("unexpected VPC.ID %q", cfg.VPC.ID) } if !reflect.DeepEqual(cfg.VPC.CIDRs, []string{"public-cidr1", "public-cidr2", "public-cidr3"}) { t.Fatalf("unexpected VPC.CIDRs %q", cfg.VPC.CIDRs) } if !reflect.DeepEqual(cfg.VPC.PublicSubnetCIDRs, []string{"public-cidr1", "public-cidr2", "public-cidr3"}) { t.Fatalf("unexpected VPC.PublicSubnetCIDRs %q", cfg.VPC.PublicSubnetCIDRs) } if !reflect.DeepEqual(cfg.VPC.PrivateSubnetCIDRs, []string{"private-cidr1", "private-cidr2"}) { t.Fatalf("unexpected VPC.PrivateSubnetCIDRs %q", cfg.VPC.PrivateSubnetCIDRs) } if cfg.VPC.DHCPOptionsDomainName != "hello.com" { t.Fatalf("unexpected cfg.VPC.DHCPOptionsDomainName %q", cfg.VPC.DHCPOptionsDomainName) } if !reflect.DeepEqual(cfg.VPC.DHCPOptionsDomainNameServers, []string{"1.2.3.0", "4.5.6.7"}) { t.Fatalf("unexpected cfg.VPC.DHCPOptionsDomainNameServers %q", cfg.VPC.DHCPOptionsDomainNameServers) } expectedTags := map[string]string{"to-delete": "2020", "hello-world": "test"} if !reflect.DeepEqual(cfg.Tags, expectedTags) { t.Fatalf("Tags expected %v, got %v", expectedTags, cfg.Tags) } if cfg.RequestHeaderKey != "eks-options" { t.Fatalf("unexpected RequestHeaderKey %q", cfg.RequestHeaderKey) } if cfg.RequestHeaderValue != "kubernetesVersion=1.11" { t.Fatalf("unexpected RequestHeaderValue %q", cfg.RequestHeaderValue) } if cfg.ResolverURL != "amazon.com" { t.Fatalf("unexpected ResolverURL %q", cfg.ResolverURL) } if cfg.SigningName != "a" { t.Fatalf("unexpected SigningName %q", cfg.SigningName) } if cfg.Role.Create { t.Fatalf("unexpected Role.Create %v", cfg.Role.Create) } if cfg.Role.ARN != "cluster-role-arn" { t.Fatalf("unexpected Role.ARN %q", cfg.Role.ARN) } expectedRoleServicePrincipals := []string{ "eks.amazonaws.com", "eks-beta-pdx.aws.internal", "eks-dev.aws.internal", } if !reflect.DeepEqual(expectedRoleServicePrincipals, cfg.Role.ServicePrincipals) { t.Fatalf("unexpected RoleServicePrincipals %+v", cfg.Role.ServicePrincipals) } expectedRoleManagedPolicyARNs := []string{ "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy", "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM", } if !reflect.DeepEqual(expectedRoleManagedPolicyARNs, cfg.Role.ManagedPolicyARNs) { t.Fatalf("unexpected RoleManagedPolicyARNs %+v", cfg.Role.ManagedPolicyARNs) } if cfg.Version != "1.18" { t.Fatalf("unexpected Version %q", cfg.Version) } if cfg.Encryption.CMKCreate { t.Fatalf("unexpected Encryption.CMKCreate %v", cfg.Encryption.CMKCreate) } if cfg.Encryption.CMKARN != "key-arn" { t.Fatalf("unexpected Encryption.CMKARN %q", cfg.Encryption.CMKARN) } if cfg.KubeAPIServerMaxRequestsInflight != "3000" { t.Fatalf("unexpected KubeAPIServerMaxRequestsInflight %s", cfg.KubeAPIServerMaxRequestsInflight) } if cfg.KubeControllerManagerQPS != "500" { t.Fatalf("unexpected KubeControllerManagerQPS %s", cfg.KubeControllerManagerQPS) } if cfg.KubeControllerManagerBurst != "500" { t.Fatalf("unexpected KubeControllerManagerBurst %s", cfg.KubeControllerManagerBurst) } if cfg.KubeSchedulerQPS != "500" { t.Fatalf("unexpected KubeSchedulerQPS %s", cfg.KubeSchedulerQPS) } if cfg.KubeSchedulerBurst != "500" { t.Fatalf("unexpected KubeSchedulerBurst %s", cfg.KubeSchedulerBurst) } if cfg.FEUpdateMasterFlagsURL != "uri" { t.Fatalf("unexpected FEUpdateMasterFlagsURL %s", cfg.FEUpdateMasterFlagsURL) } if !cfg.AddOnClusterVersionUpgrade.Enable { t.Fatalf("unexpected AddOnClusterVersionUpgrade.Enable %v", cfg.AddOnClusterVersionUpgrade.Enable) } if cfg.AddOnClusterVersionUpgrade.WaitBeforeUpgrade != time.Hour+27*time.Minute { t.Fatalf("unexpected AddOnClusterVersionUpgrade.WaitBeforeUpgrade %v", cfg.AddOnClusterVersionUpgrade.WaitBeforeUpgrade) } if cfg.AddOnClusterVersionUpgrade.Version != "1.19" { t.Fatalf("unexpected AddOnClusterVersionUpgrade.Version %q", cfg.AddOnClusterVersionUpgrade.Version) } if !cfg.RemoteAccessKeyCreate { t.Fatalf("unexpected cfg.RemoteAccessKeyCreate %v", cfg.RemoteAccessKeyCreate) } if cfg.RemoteAccessKeyName != "a" { t.Fatalf("unexpected cfg.RemoteAccessKeyName %q", cfg.RemoteAccessKeyName) } if cfg.RemoteAccessPrivateKeyPath != "a" { t.Fatalf("unexpected cfg.RemoteAccessPrivateKeyPath %q", cfg.RemoteAccessPrivateKeyPath) } if !cfg.AddOnNodeGroups.Enable { t.Fatalf("unexpected cfg.AddOnNodeGroups.Enable %v", cfg.AddOnNodeGroups.Enable) } if cfg.AddOnNodeGroups.Role.Name != "a" { t.Fatalf("unexpected cfg.AddOnNodeGroups.Role.Name %v", cfg.AddOnNodeGroups.Role.Name) } if cfg.AddOnNodeGroups.FetchLogs { t.Fatalf("unexpected cfg.AddOnNodeGroups.FetchLogs %v", cfg.AddOnNodeGroups.FetchLogs) } cpuName, gpuName := "ng-test-name-cpu", "ng-test-name-gpu" expectedASGs := map[string]ASG{ cpuName: { ASG: ec2config.ASG{ Name: cpuName, RemoteAccessUserName: "ec2-user", AMIType: "AL2_x86_64", ImageIDSSMParameter: "/aws/service/eks/optimized-ami/1.30/amazon-linux-2/recommended/image_id", ASGMinSize: 17, ASGMaxSize: 99, ASGDesiredCapacity: 77, InstanceType: "type-cpu-2", VolumeSize: 40, VolumeType: "gp2", }, BootstrapArgs: "--pause-container-account 012345678901", KubeletExtraArgs: "bbb qq", ClusterAutoscaler: &NGClusterAutoscaler{Enable: false}, }, gpuName: { ASG: ec2config.ASG{ Name: gpuName, RemoteAccessUserName: "ec2-user", AMIType: eks.AMITypesAl2X8664Gpu, ImageID: "my-gpu-ami", ASGMinSize: 30, ASGMaxSize: 35, ASGDesiredCapacity: 34, InstanceType: "type-gpu-2", VolumeSize: 500, VolumeType: "gp3", }, KubeletExtraArgs: "aaa aa", ClusterAutoscaler: &NGClusterAutoscaler{Enable: false}, }, } if !reflect.DeepEqual(cfg.AddOnNodeGroups.ASGs, expectedASGs) { t.Fatalf("expected cfg.AddOnNodeGroups.ASGs\n%+v\n\ngot\n%+v\n", expectedASGs, cfg.AddOnNodeGroups.ASGs) } if cfg.AddOnNodeGroups.LogsDir != "a" { t.Fatalf("unexpected cfg.AddOnNodeGroups.LogsDir %q", cfg.AddOnNodeGroups.LogsDir) } if !cfg.AddOnManagedNodeGroups.Enable { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.Enable %v", cfg.AddOnManagedNodeGroups.Enable) } if cfg.AddOnManagedNodeGroups.FetchLogs { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.FetchLogs %v", cfg.AddOnManagedNodeGroups.FetchLogs) } if !cfg.AddOnManagedNodeGroups.Role.Create { t.Fatalf("unexpected AddOnManagedNodeGroups.RoleCreate %v", cfg.AddOnManagedNodeGroups.Role.Create) } if cfg.AddOnManagedNodeGroups.Role.Name != "mng-role-name" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.RoleName %q", cfg.AddOnManagedNodeGroups.Role.Name) } if cfg.AddOnManagedNodeGroups.Role.ARN != "mng-role-arn" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.RoleARN %q", cfg.AddOnManagedNodeGroups.Role.ARN) } expectedMNGRoleServicePrincipals := []string{ "ec2.amazonaws.com", "eks.amazonaws.com", "hello.amazonaws.com", } if !reflect.DeepEqual(expectedMNGRoleServicePrincipals, cfg.AddOnManagedNodeGroups.Role.ServicePrincipals) { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.RoleServicePrincipals %+v", cfg.AddOnManagedNodeGroups.Role.ServicePrincipals) } expectedMNGRoleManagedPolicyARNs := []string{ "a", "b", "c", } if !reflect.DeepEqual(expectedMNGRoleManagedPolicyARNs, cfg.AddOnManagedNodeGroups.Role.ManagedPolicyARNs) { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.RoleManagedPolicyARNs %+v", cfg.AddOnManagedNodeGroups.Role.ManagedPolicyARNs) } if cfg.AddOnManagedNodeGroups.RequestHeaderKey != "a" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.RequestHeaderKey %q", cfg.AddOnManagedNodeGroups.RequestHeaderKey) } if cfg.AddOnManagedNodeGroups.RequestHeaderValue != "b" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.RequestHeaderValue %q", cfg.AddOnManagedNodeGroups.RequestHeaderValue) } if cfg.AddOnManagedNodeGroups.ResolverURL != "a" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.ResolverURL %q", cfg.AddOnManagedNodeGroups.ResolverURL) } if cfg.AddOnManagedNodeGroups.SigningName != "a" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.SigningName %q", cfg.AddOnManagedNodeGroups.SigningName) } // ,"scale-updates":[{"enable":true,"asg-min-size":500,"asg-max-size":700, "asg-desired-capacity":600, "initial-wait-string":"1h33m"}, {"enable":true,"asg-min-size":555,"asg-max-size":755, "asg-desired-capacity":655, "initial-wait-string":"2h33m"}], cpuName, gpuName = "mng-test-name-cpu", "mng-test-name-gpu" expectedMNGs := map[string]MNG{ cpuName: { Name: cpuName, RemoteAccessUserName: "ec2-user", Tags: map[string]string{"cpu": "hello-world"}, ReleaseVersion: "", AMIType: "AL2_x86_64", ASGMinSize: 17, ASGMaxSize: 99, ASGDesiredCapacity: 77, InstanceTypes: []string{"type-cpu-1", "type-cpu-2"}, VolumeSize: 40, ScaleUpdates: []MNGScaleUpdate{ { Enable: true, ASGMinSize: 500, ASGMaxSize: 700, ASGDesiredCapacity: 600, InitialWaitString: "1h33m", }, { ID: "hello1", Enable: true, ASGMinSize: 555, ASGMaxSize: 755, ASGDesiredCapacity: 655, InitialWaitString: "2h33m", }, }, VersionUpgrade: &MNGVersionUpgrade{ Enable: true, InitialWaitString: "13m", Version: "1.19", }, }, gpuName: { Name: gpuName, RemoteAccessUserName: "ec2-user", Tags: map[string]string{"gpu": "hello-world"}, ReleaseVersion: "1.18.8-20200609", AMIType: eks.AMITypesAl2X8664Gpu, ASGMinSize: 30, ASGMaxSize: 35, ASGDesiredCapacity: 34, InstanceTypes: []string{"type-gpu-1", "type-gpu-2"}, VolumeSize: 500, ScaleUpdates: []MNGScaleUpdate{ { Enable: true, ASGMinSize: 500, ASGMaxSize: 700, ASGDesiredCapacity: 600, // InitialWait: 2*time.Hour + 33*time.Minute, InitialWaitString: "1h33m", }, { ID: "hello2", Enable: true, ASGMinSize: 555, ASGMaxSize: 755, ASGDesiredCapacity: 655, // InitialWait: time.Hour + 33*time.Minute, InitialWaitString: "2h33m", }, }, VersionUpgrade: &MNGVersionUpgrade{ Enable: true, InitialWaitString: "100ms", Version: "1.19", }, }, } if diff := cmp.Diff(cfg.AddOnManagedNodeGroups.MNGs, expectedMNGs); diff != "" { t.Fatalf("AddOnManagedNodeGroups.MNGs mismatch (-want +got):\n%s", diff) } if cfg.AddOnManagedNodeGroups.LogsDir != "a" { t.Fatalf("unexpected cfg.AddOnManagedNodeGroups.LogsDir %q", cfg.AddOnManagedNodeGroups.LogsDir) } if !cfg.AddOnCNIVPC.Enable { t.Fatalf("unexpected cfg.AddOnCNIVPC.Enable %v", cfg.AddOnCNIVPC.Enable) } if cfg.AddOnCNIVPC.RepositoryInitAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryInitAccountID %v", cfg.AddOnCNIVPC.RepositoryInitAccountID) } if cfg.AddOnCNIVPC.RepositoryInitRegion != "eu-north-1" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryInitRegion %v", cfg.AddOnCNIVPC.RepositoryInitRegion) } if cfg.AddOnCNIVPC.RepositoryInitName != "aws-k8s-cni-init" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryInitName %v", cfg.AddOnCNIVPC.RepositoryInitName) } if cfg.AddOnCNIVPC.RepositoryInitImageTag != "latest2" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryInitImageTag %v", cfg.AddOnCNIVPC.RepositoryInitImageTag) } if cfg.AddOnCNIVPC.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryAccountID %v", cfg.AddOnCNIVPC.RepositoryAccountID) } if cfg.AddOnCNIVPC.RepositoryRegion != "eu-north-1" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryRegion %v", cfg.AddOnCNIVPC.RepositoryRegion) } if cfg.AddOnCNIVPC.RepositoryName != "aws-k8s-cni" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryName %v", cfg.AddOnCNIVPC.RepositoryName) } if cfg.AddOnCNIVPC.RepositoryImageTag != "latest2" { t.Fatalf("unexpected cfg.AddOnCNIVPC.RepositoryImageTag %v", cfg.AddOnCNIVPC.RepositoryImageTag) } expectedNodeSelectorCNIVPC := map[string]string{"a": "b", "c": "d"} if !reflect.DeepEqual(cfg.AddOnCNIVPC.NodeSelector, expectedNodeSelectorCNIVPC) { t.Fatalf("unexpected cfg.AddOnCNIVPC.NodeSelector %v", cfg.AddOnCNIVPC.NodeSelector) } if cfg.AddOnCNIVPC.MinimumIPTarget != 10 { t.Fatalf("unexpected cfg.AddOnCNIVPC.MinimumIPTarget %d", cfg.AddOnCNIVPC.MinimumIPTarget) } if cfg.AddOnCNIVPC.WarmIPTarget != 10 { t.Fatalf("unexpected cfg.AddOnCNIVPC.WarmIPTarget %d", cfg.AddOnCNIVPC.WarmIPTarget) } if !cfg.AddOnCWAgent.Enable { t.Fatalf("unexpected cfg.AddOnCWAgent.Enable %v", cfg.AddOnCWAgent.Enable) } if !cfg.AddOnFluentd.Enable { t.Fatalf("unexpected cfg.AddOnFluentd.Enable %v", cfg.AddOnFluentd.Enable) } if cfg.AddOnFluentd.RepositoryBusyboxAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnFluentd.RepositoryBusyboxAccountID %v", cfg.AddOnFluentd.RepositoryBusyboxAccountID) } if cfg.AddOnFluentd.RepositoryBusyboxRegion != "eu-north-1" { t.Fatalf("unexpected cfg.AddOnFluentd.RepositoryBusyboxRegion %v", cfg.AddOnFluentd.RepositoryBusyboxRegion) } if cfg.AddOnFluentd.RepositoryBusyboxName != "busybox" { t.Fatalf("unexpected cfg.AddOnFluentd.RepositoryBusyboxName %v", cfg.AddOnFluentd.RepositoryBusyboxName) } if cfg.AddOnFluentd.RepositoryBusyboxImageTag != "latest2" { t.Fatalf("unexpected cfg.AddOnFluentd.RepositoryBusyboxImageTag %v", cfg.AddOnFluentd.RepositoryBusyboxImageTag) } if cfg.AddOnFluentd.MetadataWatch { t.Fatalf("unexpected cfg.AddOnFluentd.MetadataWatch %v", cfg.AddOnFluentd.MetadataWatch) } if !cfg.AddOnPHPApache.Enable { t.Fatalf("unexpected cfg.AddOnPHPApache.Enable %v", cfg.AddOnPHPApache.Enable) } if cfg.AddOnPHPApache.DeploymentReplicas != 333 { t.Fatalf("unexpected cfg.AddOnPHPApache.DeploymentReplicas %d", cfg.AddOnPHPApache.DeploymentReplicas) } if cfg.AddOnPHPApache.Namespace != "test-namespace" { t.Fatalf("unexpected cfg.AddOnPHPApache.Namespace %q", cfg.AddOnPHPApache.Namespace) } expectedNodeSelectorPHPApache := map[string]string{"a": "b", "c": "d"} if !reflect.DeepEqual(cfg.AddOnPHPApache.DeploymentNodeSelector, expectedNodeSelectorPHPApache) { t.Fatalf("unexpected cfg.AddOnPHPApache.DeploymentNodeSelector %v", cfg.AddOnPHPApache.DeploymentNodeSelector) } if !cfg.AddOnNLBHelloWorld.Enable { t.Fatalf("unexpected cfg.AddOnNLBHelloWorld.Enable %v", cfg.AddOnNLBHelloWorld.Enable) } if cfg.AddOnNLBHelloWorld.DeploymentReplicas != 333 { t.Fatalf("unexpected cfg.AddOnNLBHelloWorld.DeploymentReplicas %d", cfg.AddOnNLBHelloWorld.DeploymentReplicas) } if cfg.AddOnNLBHelloWorld.Namespace != "test-namespace" { t.Fatalf("unexpected cfg.AddOnNLBHelloWorld.Namespace %q", cfg.AddOnNLBHelloWorld.Namespace) } expectedNodeSelectorNLB := map[string]string{"a": "b", "c": "d"} if !reflect.DeepEqual(cfg.AddOnNLBHelloWorld.DeploymentNodeSelector, expectedNodeSelectorNLB) { t.Fatalf("unexpected cfg.AddOnNLBHelloWorld.DeploymentNodeSelector %v", cfg.AddOnNLBHelloWorld.DeploymentNodeSelector) } if !cfg.AddOnNLBGuestbook.Enable { t.Fatalf("unexpected cfg.AddOnNLBGuestbook.Enable %v", cfg.AddOnNLBGuestbook.Enable) } if cfg.AddOnNLBGuestbook.DeploymentReplicas != 333 { t.Fatalf("unexpected cfg.AddOnNLBGuestbook.DeploymentReplicas %d", cfg.AddOnNLBGuestbook.DeploymentReplicas) } if cfg.AddOnNLBGuestbook.Namespace != "test-namespace" { t.Fatalf("unexpected cfg.AddOnNLBGuestbook.Namespace %q", cfg.AddOnNLBGuestbook.Namespace) } if !reflect.DeepEqual(cfg.AddOnNLBGuestbook.DeploymentNodeSelector, expectedNodeSelectorNLB) { t.Fatalf("unexpected cfg.AddOnNLBGuestbook.DeploymentNodeSelector %v", cfg.AddOnNLBGuestbook.DeploymentNodeSelector) } if !cfg.AddOnALB2048.Enable { t.Fatalf("unexpected cfg.AddOnALB2048.Enable %v", cfg.AddOnALB2048.Enable) } if cfg.AddOnALB2048.DeploymentReplicasALB != 333 { t.Fatalf("unexpected cfg.AddOnALB2048.DeploymentReplicasALB %d", cfg.AddOnALB2048.DeploymentReplicasALB) } if cfg.AddOnALB2048.DeploymentReplicas2048 != 555 { t.Fatalf("unexpected cfg.AddOnALB2048.DeploymentReplicas2048 %d", cfg.AddOnALB2048.DeploymentReplicas2048) } if cfg.AddOnALB2048.Namespace != "test-namespace" { t.Fatalf("unexpected cfg.AddOnALB2048.Namespace %q", cfg.AddOnALB2048.Namespace) } expectedNodeSelectorALB := map[string]string{"1": "2", "3": "4", "5": "6"} if !reflect.DeepEqual(cfg.AddOnALB2048.DeploymentNodeSelector2048, expectedNodeSelectorALB) { t.Fatalf("unexpected cfg.AddOnALB2048.DeploymentNodeSelector2048 %v", cfg.AddOnALB2048.DeploymentNodeSelector2048) } if !cfg.AddOnJobsPi.Enable { t.Fatalf("unexpected cfg.AddOnJobsPi.Enable %v", cfg.AddOnJobsPi.Enable) } if cfg.AddOnJobsPi.Namespace != "hello1" { t.Fatalf("unexpected cfg.AddOnJobsPi.Namespace %q", cfg.AddOnJobsPi.Namespace) } if cfg.AddOnJobsPi.Completes != 100 { t.Fatalf("unexpected cfg.AddOnJobsPi.Completes %v", cfg.AddOnJobsPi.Completes) } if cfg.AddOnJobsPi.Parallels != 10 { t.Fatalf("unexpected cfg.AddOnJobsPi.Parallels %v", cfg.AddOnJobsPi.Parallels) } if !cfg.AddOnJobsEcho.Enable { t.Fatalf("unexpected cfg.AddOnJobsEcho.Enable %v", cfg.AddOnJobsEcho.Enable) } if cfg.AddOnJobsEcho.Namespace != "hello2" { t.Fatalf("unexpected cfg.AddOnJobsEcho.Namespace %q", cfg.AddOnJobsEcho.Namespace) } if cfg.AddOnJobsEcho.Completes != 1000 { t.Fatalf("unexpected cfg.AddOnJobsEcho.Completes %v", cfg.AddOnJobsEcho.Completes) } if cfg.AddOnJobsEcho.Parallels != 100 { t.Fatalf("unexpected cfg.AddOnJobsEcho.Parallels %v", cfg.AddOnJobsEcho.Parallels) } if cfg.AddOnJobsEcho.EchoSize != 10000 { t.Fatalf("unexpected cfg.AddOnJobsEcho.EchoSize %v", cfg.AddOnJobsEcho.EchoSize) } if cfg.AddOnJobsEcho.RepositoryBusyboxAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnJobsEcho.RepositoryBusyboxAccountID %v", cfg.AddOnJobsEcho.RepositoryBusyboxAccountID) } if cfg.AddOnJobsEcho.RepositoryBusyboxRegion != "eu-north-1" { t.Fatalf("unexpected cfg.AddOnJobsEcho.RepositoryBusyboxRegion %v", cfg.AddOnJobsEcho.RepositoryBusyboxRegion) } if cfg.AddOnJobsEcho.RepositoryBusyboxName != "busybox" { t.Fatalf("unexpected cfg.AddOnJobsEcho.RepositoryBusyboxName %v", cfg.AddOnJobsEcho.RepositoryBusyboxName) } if cfg.AddOnJobsEcho.RepositoryBusyboxImageTag != "latest2" { t.Fatalf("unexpected cfg.AddOnJobsEcho.RepositoryBusyboxImageTag %v", cfg.AddOnJobsEcho.RepositoryBusyboxImageTag) } if !cfg.AddOnCronJobs.Enable { t.Fatalf("unexpected cfg.AddOnCronJobs.Enable %v", cfg.AddOnCronJobs.Enable) } if cfg.AddOnCronJobs.Namespace != "hello3" { t.Fatalf("unexpected cfg.AddOnCronJobs.Namespace %q", cfg.AddOnCronJobs.Namespace) } if cfg.AddOnCronJobs.Schedule != "*/1 * * * *" { t.Fatalf("unexpected cfg.AddOnCronJobs.Schedule %q", cfg.AddOnCronJobs.Schedule) } if cfg.AddOnCronJobs.Completes != 100 { t.Fatalf("unexpected cfg.AddOnCronJobs.Completes %v", cfg.AddOnCronJobs.Completes) } if cfg.AddOnCronJobs.Parallels != 10 { t.Fatalf("unexpected cfg.AddOnCronJobs.Parallels %v", cfg.AddOnCronJobs.Parallels) } if cfg.AddOnCronJobs.SuccessfulJobsHistoryLimit != 100 { t.Fatalf("unexpected cfg.AddOnCronJobs.SuccessfulJobsHistoryLimit %d", cfg.AddOnCronJobs.SuccessfulJobsHistoryLimit) } if cfg.AddOnCronJobs.FailedJobsHistoryLimit != 1000 { t.Fatalf("unexpected cfg.AddOnCronJobs.FailedJobsHistoryLimit %d", cfg.AddOnCronJobs.FailedJobsHistoryLimit) } if cfg.AddOnCronJobs.EchoSize != 10000 { t.Fatalf("unexpected cfg.AddOnCronJobs.EchoSize %d", cfg.AddOnCronJobs.EchoSize) } if cfg.AddOnCronJobs.RepositoryBusyboxAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnCronJobs.RepositoryBusyboxAccountID %v", cfg.AddOnCronJobs.RepositoryBusyboxAccountID) } if cfg.AddOnCronJobs.RepositoryBusyboxRegion != "eu-north-1" { t.Fatalf("unexpected cfg.AddOnCronJobs.RepositoryBusyboxRegion %v", cfg.AddOnCronJobs.RepositoryBusyboxRegion) } if cfg.AddOnCronJobs.RepositoryBusyboxName != "busybox" { t.Fatalf("unexpected cfg.AddOnCronJobs.RepositoryBusyboxName %v", cfg.AddOnCronJobs.RepositoryBusyboxName) } if cfg.AddOnCronJobs.RepositoryBusyboxImageTag != "latest2" { t.Fatalf("unexpected cfg.AddOnCronJobs.RepositoryBusyboxImageTag %v", cfg.AddOnCronJobs.RepositoryBusyboxImageTag) } if !cfg.AddOnCSRsLocal.Enable { t.Fatalf("unexpected cfg.AddOnCSRsLocal.Enable %v", cfg.AddOnCSRsLocal.Enable) } if cfg.AddOnCSRsLocal.InitialRequestConditionType != "Random" { t.Fatalf("unexpected cfg.AddOnCSRsLocal.InitialRequestConditionType %q", cfg.AddOnCSRsLocal.InitialRequestConditionType) } if cfg.AddOnCSRsLocal.Objects != 10000 { t.Fatalf("unexpected cfg.AddOnCSRsLocal.Objects %d", cfg.AddOnCSRsLocal.Objects) } if cfg.AddOnCSRsLocal.RequestsRawWritesCompareS3Dir != "a/b/c" { t.Fatalf("unexpected cfg.AddOnCSRsLocal.RequestsRawWritesCompareS3Dir %q", cfg.AddOnCSRsLocal.RequestsRawWritesCompareS3Dir) } if !cfg.AddOnCSRsRemote.Enable { t.Fatalf("unexpected cfg.AddOnCSRsRemote.Enable %v", cfg.AddOnCSRsRemote.Enable) } if cfg.AddOnCSRsRemote.Namespace != "csr-namespace" { t.Fatalf("unexpected cfg.AddOnCSRsRemote.Namespace %q", cfg.AddOnCSRsRemote.Namespace) } if cfg.AddOnCSRsRemote.InitialRequestConditionType != "Random" { t.Fatalf("unexpected cfg.AddOnCSRsRemote.InitialRequestConditionType %q", cfg.AddOnCSRsRemote.InitialRequestConditionType) } if cfg.AddOnCSRsRemote.Objects != 10000 { t.Fatalf("unexpected cfg.AddOnCSRsRemote.Objects %d", cfg.AddOnCSRsRemote.Objects) } if cfg.AddOnCSRsRemote.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnCSRsRemote.RepositoryAccountID %v", cfg.AddOnCSRsRemote.RepositoryAccountID) } if cfg.AddOnCSRsRemote.RepositoryRegion != "eu-north-1" { t.Fatalf("unexpected cfg.AddOnCSRsRemote.RepositoryRegion %v", cfg.AddOnCSRsRemote.RepositoryRegion) } if cfg.AddOnCSRsRemote.RepositoryName != "csrs-repo-name" { t.Fatalf("unexpected cfg.AddOnCSRsRemote.RepositoryName %v", cfg.AddOnCSRsRemote.RepositoryName) } if cfg.AddOnCSRsRemote.RepositoryImageTag != "csrs-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnCSRsRemote.RepositoryImageTag %v", cfg.AddOnCSRsRemote.RepositoryImageTag) } if !cfg.AddOnConfigmapsLocal.Enable { t.Fatalf("unexpected cfg.AddOnConfigmapsLocal.Enable %v", cfg.AddOnConfigmapsLocal.Enable) } if cfg.AddOnConfigmapsLocal.Namespace != "configmap-namespace" { t.Fatalf("unexpected cfg.AddOnConfigmapsLocal.Namespace %q", cfg.AddOnConfigmapsLocal.Namespace) } if cfg.AddOnConfigmapsLocal.Objects != 10000 { t.Fatalf("unexpected cfg.AddOnConfigmapsLocal.Objects %d", cfg.AddOnConfigmapsLocal.Objects) } if cfg.AddOnConfigmapsLocal.ObjectSize != 555 { t.Fatalf("unexpected cfg.AddOnConfigmapsLocal.ObjectSize %d", cfg.AddOnConfigmapsLocal.ObjectSize) } if !cfg.AddOnConfigmapsRemote.Enable { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.Enable %v", cfg.AddOnConfigmapsRemote.Enable) } if cfg.AddOnConfigmapsRemote.Namespace != "configmap-namespace" { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.Namespace %q", cfg.AddOnConfigmapsRemote.Namespace) } if cfg.AddOnConfigmapsRemote.Objects != 10000 { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.Objects %d", cfg.AddOnConfigmapsRemote.Objects) } if cfg.AddOnConfigmapsRemote.ObjectSize != 555 { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.ObjectSize %d", cfg.AddOnConfigmapsRemote.ObjectSize) } if cfg.AddOnConfigmapsRemote.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.RepositoryAccountID %v", cfg.AddOnConfigmapsRemote.RepositoryAccountID) } if cfg.AddOnConfigmapsRemote.RepositoryName != "configmaps-repo-name" { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.RepositoryName %v", cfg.AddOnConfigmapsRemote.RepositoryName) } if cfg.AddOnConfigmapsRemote.RepositoryImageTag != "configmaps-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnConfigmapsRemote.RepositoryImageTag %v", cfg.AddOnConfigmapsRemote.RepositoryImageTag) } if !cfg.AddOnSecretsLocal.Enable { t.Fatalf("unexpected cfg.AddOnSecretsLocal.Enable %v", cfg.AddOnSecretsLocal.Enable) } if cfg.AddOnSecretsLocal.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnSecretsLocal.Namespace %q", cfg.AddOnSecretsLocal.Namespace) } if cfg.AddOnSecretsLocal.Objects != 5 { t.Fatalf("unexpected cfg.AddOnSecretsLocal.Objects %v", cfg.AddOnSecretsLocal.Objects) } if cfg.AddOnSecretsLocal.ObjectSize != 10 { t.Fatalf("unexpected cfg.AddOnSecretsLocal.ObjectSize %v", cfg.AddOnSecretsLocal.ObjectSize) } if !cfg.AddOnSecretsRemote.Enable { t.Fatalf("unexpected cfg.AddOnSecretsRemote.Enable %v", cfg.AddOnSecretsRemote.Enable) } if cfg.AddOnSecretsRemote.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnSecretsRemote.Namespace %q", cfg.AddOnSecretsRemote.Namespace) } if cfg.AddOnSecretsRemote.S3Dir != "hello-s3" { t.Fatalf("unexpected cfg.AddOnSecretsRemote.S3Dir %v", cfg.AddOnSecretsRemote.S3Dir) } if cfg.AddOnSecretsRemote.Objects != 5 { t.Fatalf("unexpected cfg.AddOnSecretsRemote.Objects %v", cfg.AddOnSecretsRemote.Objects) } if cfg.AddOnSecretsRemote.ObjectSize != 10 { t.Fatalf("unexpected cfg.AddOnSecretsRemote.ObjectSize %v", cfg.AddOnSecretsRemote.ObjectSize) } if cfg.AddOnSecretsRemote.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnSecretsRemote.RepositoryAccountID %v", cfg.AddOnSecretsRemote.RepositoryAccountID) } if cfg.AddOnSecretsRemote.RepositoryName != "secrets-repo-name" { t.Fatalf("unexpected cfg.AddOnSecretsRemote.RepositoryName %v", cfg.AddOnSecretsRemote.RepositoryName) } if cfg.AddOnSecretsRemote.RepositoryImageTag != "secrets-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnSecretsRemote.RepositoryImageTag %v", cfg.AddOnSecretsRemote.RepositoryImageTag) } if !cfg.AddOnFargate.Enable { t.Fatalf("unexpected cfg.AddOnFargate.Enable %v", cfg.AddOnFargate.Enable) } if cfg.AddOnFargate.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnFargate.Namespace %q", cfg.AddOnFargate.Namespace) } if cfg.AddOnFargate.RoleName != "hello" { t.Fatalf("unexpected cfg.AddOnFargate.RoleName %q", cfg.AddOnFargate.RoleName) } expectedAddOnFargateRoleServicePrincipals := []string{"a", "b", "c"} if !reflect.DeepEqual(cfg.AddOnFargate.RoleServicePrincipals, expectedAddOnFargateRoleServicePrincipals) { t.Fatalf("unexpected cfg.AddOnFargate.RoleServicePrincipals %q", cfg.AddOnFargate.RoleServicePrincipals) } expectedAddOnFargateRoleManagedPolicyARNs := []string{"a", "b", "c"} if !reflect.DeepEqual(cfg.AddOnFargate.RoleManagedPolicyARNs, expectedAddOnFargateRoleManagedPolicyARNs) { t.Fatalf("unexpected cfg.AddOnFargate.RoleManagedPolicyARNs %q", cfg.AddOnFargate.RoleManagedPolicyARNs) } if cfg.AddOnFargate.ProfileName != "hello" { t.Fatalf("unexpected cfg.AddOnFargate.ProfileName %q", cfg.AddOnFargate.ProfileName) } if cfg.AddOnFargate.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnFargate.RepositoryAccountID %v", cfg.AddOnFargate.RepositoryAccountID) } if cfg.AddOnFargate.RepositoryName != "fargate-repo-name" { t.Fatalf("unexpected cfg.AddOnFargate.RepositoryName %v", cfg.AddOnFargate.RepositoryName) } if cfg.AddOnFargate.RepositoryImageTag != "fargate-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnFargate.RepositoryImageTag %v", cfg.AddOnFargate.RepositoryImageTag) } if cfg.AddOnFargate.SecretName != "HELLO-SECRET" { t.Fatalf("unexpected cfg.AddOnFargate.SecretName %q", cfg.AddOnFargate.SecretName) } if !cfg.AddOnIRSA.Enable { t.Fatalf("unexpected cfg.AddOnIRSA.Enable %v", cfg.AddOnIRSA.Enable) } if cfg.AddOnIRSA.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnIRSA.Namespace %q", cfg.AddOnIRSA.Namespace) } if cfg.AddOnIRSA.RoleName != "hello" { t.Fatalf("unexpected cfg.AddOnIRSA.RoleName %q", cfg.AddOnIRSA.RoleName) } if cfg.AddOnIRSA.S3Key != "hello" { t.Fatalf("unexpected cfg.AddOnIRSA.S3Key %q", cfg.AddOnIRSA.S3Key) } if cfg.AddOnIRSA.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnIRSA.RepositoryAccountID %v", cfg.AddOnIRSA.RepositoryAccountID) } if cfg.AddOnIRSA.RepositoryName != "irsa-repo-name" { t.Fatalf("unexpected cfg.AddOnIRSA.RepositoryName %v", cfg.AddOnIRSA.RepositoryName) } if cfg.AddOnIRSA.RepositoryImageTag != "irsa-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnIRSA.RepositoryImageTag %v", cfg.AddOnIRSA.RepositoryImageTag) } if cfg.AddOnIRSA.DeploymentResultPath != "hello-deployment.log" { t.Fatalf("unexpected cfg.AddOnIRSA.DeploymentResultPath %q", cfg.AddOnIRSA.DeploymentResultPath) } if !cfg.AddOnIRSAFargate.Enable { t.Fatalf("unexpected cfg.AddOnIRSAFargate.Enable %v", cfg.AddOnIRSAFargate.Enable) } if cfg.AddOnIRSAFargate.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.Namespace %q", cfg.AddOnIRSAFargate.Namespace) } if cfg.AddOnIRSAFargate.RoleName != "hello" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.RoleName %q", cfg.AddOnIRSAFargate.RoleName) } expectedAddOnIRSAFargateRoleServicePrincipals := []string{"a", "b", "c"} if !reflect.DeepEqual(cfg.AddOnIRSAFargate.RoleServicePrincipals, expectedAddOnIRSAFargateRoleServicePrincipals) { t.Fatalf("unexpected cfg.AddOnIRSAFargate.RoleServicePrincipals %q", cfg.AddOnIRSAFargate.RoleServicePrincipals) } expectedAddOnIRSAFargateRoleManagedPolicyARNs := []string{"a", "b", "c"} if !reflect.DeepEqual(cfg.AddOnIRSAFargate.RoleManagedPolicyARNs, expectedAddOnIRSAFargateRoleManagedPolicyARNs) { t.Fatalf("unexpected cfg.AddOnIRSAFargate.RoleManagedPolicyARNs %q", cfg.AddOnIRSAFargate.RoleManagedPolicyARNs) } if cfg.AddOnIRSAFargate.S3Key != "hello" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.S3Key %q", cfg.AddOnIRSAFargate.S3Key) } if cfg.AddOnIRSAFargate.ProfileName != "hello" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.ProfileName %q", cfg.AddOnIRSAFargate.ProfileName) } if cfg.AddOnIRSAFargate.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.RepositoryAccountID %v", cfg.AddOnIRSAFargate.RepositoryAccountID) } if cfg.AddOnIRSAFargate.RepositoryName != "irsa-fargate-repo-name" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.RepositoryName %v", cfg.AddOnIRSAFargate.RepositoryName) } if cfg.AddOnIRSAFargate.RepositoryImageTag != "irsa-fargate-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnIRSAFargate.RepositoryImageTag %v", cfg.AddOnIRSAFargate.RepositoryImageTag) } if !cfg.AddOnJupyterHub.Enable { t.Fatalf("unexpected cfg.AddOnJupyterHub.Enable %v", cfg.AddOnJupyterHub.Enable) } if cfg.AddOnJupyterHub.Namespace != "jhhub" { t.Fatalf("unexpected cfg.AddOnJupyterHub.Namespace %q", cfg.AddOnJupyterHub.Namespace) } if cfg.AddOnJupyterHub.ProxySecretToken != proxySecretToken { t.Fatalf("unexpected cfg.AddOnJupyterHub.ProxySecretToken %q", cfg.AddOnJupyterHub.ProxySecretToken) } if !cfg.AddOnCUDAVectorAdd.Enable { t.Fatalf("Unexpected cfg.AddOnCUDAVectorAdd.Enable #{cfg.AddOnCUDAVectorAdd.Enable}") } if !cfg.AddOnClusterLoaderLocal.Enable { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.Enable %v", cfg.AddOnClusterLoaderLocal.Enable) } if cfg.AddOnClusterLoaderLocal.TestConfigPath != "artifacts/clusterloader2-testing-load-config.yaml" { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.TestConfigPath %v", cfg.AddOnClusterLoaderLocal.TestConfigPath) } if cfg.AddOnClusterLoaderLocal.Runs != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.Runs %v", cfg.AddOnClusterLoaderLocal.Runs) } if cfg.AddOnClusterLoaderLocal.Timeout != 3*time.Minute+30*time.Second { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.Timeout %v", cfg.AddOnClusterLoaderLocal.Timeout) } if cfg.AddOnClusterLoaderLocal.Nodes != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.Nodes %v", cfg.AddOnClusterLoaderLocal.Nodes) } if cfg.AddOnClusterLoaderLocal.NodesPerNamespace != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.NodesPerNamespace %v", cfg.AddOnClusterLoaderLocal.NodesPerNamespace) } if cfg.AddOnClusterLoaderLocal.PodsPerNode != 21 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.PodsPerNode %v", cfg.AddOnClusterLoaderLocal.PodsPerNode) } if cfg.AddOnClusterLoaderLocal.BigGroupSize != 26 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.BigGroupSize %v", cfg.AddOnClusterLoaderLocal.BigGroupSize) } if cfg.AddOnClusterLoaderLocal.BigGroupSize != 26 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.BigGroupSize %v", cfg.AddOnClusterLoaderLocal.BigGroupSize) } if cfg.AddOnClusterLoaderLocal.MediumGroupSize != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.MediumGroupSize %v", cfg.AddOnClusterLoaderLocal.MediumGroupSize) } if cfg.AddOnClusterLoaderLocal.SmallGroupSize != 6 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.SmallGroupSize %v", cfg.AddOnClusterLoaderLocal.SmallGroupSize) } if cfg.AddOnClusterLoaderLocal.SmallStatefulSetsPerNamespace != 1 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.SmallStatefulSetsPerNamespace %v", cfg.AddOnClusterLoaderLocal.SmallStatefulSetsPerNamespace) } if cfg.AddOnClusterLoaderLocal.MediumStatefulSetsPerNamespace != 1 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.MediumStatefulSetsPerNamespace %v", cfg.AddOnClusterLoaderLocal.MediumStatefulSetsPerNamespace) } if cfg.AddOnClusterLoaderLocal.CL2SchedulerThroughputThreshold != 20 { t.Fatalf("unexpected cfg.AddOnClusterLoaderLocal.CL2SchedulerThroughputThreshold %v", cfg.AddOnClusterLoaderLocal.CL2SchedulerThroughputThreshold) } if !cfg.AddOnClusterLoaderRemote.Enable { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.Enable %v", cfg.AddOnClusterLoaderRemote.Enable) } if cfg.AddOnClusterLoaderRemote.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.Namespace %q", cfg.AddOnClusterLoaderRemote.Namespace) } if cfg.AddOnClusterLoaderRemote.Runs != 21 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.Runs %v", cfg.AddOnClusterLoaderRemote.Runs) } if cfg.AddOnClusterLoaderRemote.Timeout != 5*time.Minute+30*time.Second { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.Timeout %v", cfg.AddOnClusterLoaderRemote.Timeout) } if cfg.AddOnClusterLoaderRemote.Nodes != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.Nodes %v", cfg.AddOnClusterLoaderRemote.Nodes) } if cfg.AddOnClusterLoaderRemote.NodesPerNamespace != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.NodesPerNamespace %v", cfg.AddOnClusterLoaderRemote.NodesPerNamespace) } if cfg.AddOnClusterLoaderRemote.PodsPerNode != 21 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.PodsPerNode %v", cfg.AddOnClusterLoaderRemote.PodsPerNode) } if cfg.AddOnClusterLoaderRemote.BigGroupSize != 26 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.BigGroupSize %v", cfg.AddOnClusterLoaderRemote.BigGroupSize) } if cfg.AddOnClusterLoaderRemote.BigGroupSize != 26 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.BigGroupSize %v", cfg.AddOnClusterLoaderRemote.BigGroupSize) } if cfg.AddOnClusterLoaderRemote.MediumGroupSize != 11 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.MediumGroupSize %v", cfg.AddOnClusterLoaderRemote.MediumGroupSize) } if cfg.AddOnClusterLoaderRemote.SmallGroupSize != 6 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.SmallGroupSize %v", cfg.AddOnClusterLoaderRemote.SmallGroupSize) } if cfg.AddOnClusterLoaderRemote.SmallStatefulSetsPerNamespace != 1 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.SmallStatefulSetsPerNamespace %v", cfg.AddOnClusterLoaderRemote.SmallStatefulSetsPerNamespace) } if cfg.AddOnClusterLoaderRemote.MediumStatefulSetsPerNamespace != 1 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.MediumStatefulSetsPerNamespace %v", cfg.AddOnClusterLoaderRemote.MediumStatefulSetsPerNamespace) } if cfg.AddOnClusterLoaderRemote.CL2SchedulerThroughputThreshold != 30 { t.Fatalf("unexpected cfg.AddOnClusterLoaderRemote.CL2SchedulerThroughputThreshold %v", cfg.AddOnClusterLoaderRemote.CL2SchedulerThroughputThreshold) } if !cfg.AddOnStresserLocal.Enable { t.Fatalf("unexpected cfg.AddOnStresserLocal.Enable %v", cfg.AddOnStresserLocal.Enable) } if cfg.AddOnStresserLocal.Duration != 7*time.Minute+30*time.Second { t.Fatalf("unexpected cfg.AddOnStresserLocal.Duration %v", cfg.AddOnStresserLocal.Duration) } if cfg.AddOnStresserLocal.ListLimit != 133 { t.Fatalf("unexpected cfg.AddOnStresserLocal.ListLimit %v", cfg.AddOnStresserLocal.ListLimit) } if !cfg.AddOnStresserRemote.Enable { t.Fatalf("unexpected cfg.AddOnStresserRemote.Enable %v", cfg.AddOnStresserRemote.Enable) } if cfg.AddOnStresserRemote.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnStresserRemote.Namespace %q", cfg.AddOnStresserRemote.Namespace) } if cfg.AddOnStresserRemote.Duration != 7*time.Minute+30*time.Second { t.Fatalf("unexpected cfg.AddOnStresserRemote.Duration %v", cfg.AddOnStresserRemote.Duration) } if cfg.AddOnStresserRemote.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnStresserRemote.RepositoryAccountID %v", cfg.AddOnStresserRemote.RepositoryAccountID) } if cfg.AddOnStresserRemote.RepositoryName != "stresser-repo-name" { t.Fatalf("unexpected cfg.AddOnStresserRemote.RepositoryName %v", cfg.AddOnStresserRemote.RepositoryName) } if cfg.AddOnStresserRemote.RepositoryImageTag != "stresser-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnStresserRemote.RepositoryImageTag %v", cfg.AddOnStresserRemote.RepositoryImageTag) } if cfg.AddOnStresserRemote.Completes != 500 { t.Fatalf("unexpected cfg.AddOnStresserRemote.Completes %v", cfg.AddOnStresserRemote.Completes) } if cfg.AddOnStresserRemote.ObjectSize != 512 { t.Fatalf("unexpected cfg.AddOnStresserRemote.ObjectSize %v", cfg.AddOnStresserRemote.ObjectSize) } if cfg.AddOnStresserRemote.ListLimit != 177 { t.Fatalf("unexpected cfg.AddOnStresserRemote.ListLimit %v", cfg.AddOnStresserRemote.ListLimit) } if cfg.AddOnStresserRemote.RequestsSummaryWritesOutputNamePrefix != "stresser-out-pfx" { t.Fatalf("unexpected cfg.AddOnStresserRemote.RequestsSummaryWritesOutputNamePrefix %v", cfg.AddOnStresserRemote.RequestsSummaryWritesOutputNamePrefix) } if cfg.AddOnStresserRemote.RequestsSummaryReadsOutputNamePrefix != "stresser-out-pfx" { t.Fatalf("unexpected cfg.AddOnStresserRemote.RequestsSummaryReadsOutputNamePrefix %v", cfg.AddOnStresserRemote.RequestsSummaryReadsOutputNamePrefix) } if !cfg.AddOnStresserRemoteV2.Enable { t.Fatalf("unexpected AddOnStresserRemoteV2.Enable %v", cfg.AddOnStresserRemoteV2.Enable) } if cfg.AddOnStresserRemoteV2.Namespace != "hello" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Namespace %q", cfg.AddOnStresserRemoteV2.Namespace) } if cfg.AddOnStresserRemoteV2.RepositoryAccountID != "uri" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.RepositoryAccountID %s", cfg.AddOnStresserRemoteV2.RepositoryAccountID) } if cfg.AddOnStresserRemoteV2.RepositoryName != "stresser-repo-name" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.RepositoryName %s", cfg.AddOnStresserRemoteV2.RepositoryName) } if cfg.AddOnStresserRemoteV2.RepositoryImageTag != "stresser-repo-image-tag" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.RepositoryImageTag %s", cfg.AddOnStresserRemoteV2.RepositoryImageTag) } if cfg.AddOnStresserRemoteV2.RepositoryBusyBoxName != "stresser-busybox-name" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.RepositoryBusyBoxName %s", cfg.AddOnStresserRemoteV2.RepositoryBusyBoxName) } if cfg.AddOnStresserRemoteV2.RepositoryBusyBoxImageTag != "stresser-busybox-image-tag" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.RepositoryBusyBoxImageTag %s", cfg.AddOnStresserRemoteV2.RepositoryBusyBoxImageTag) } if cfg.AddOnStresserRemoteV2.Schedule != "*/1 * * * *" { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Schedule %s", cfg.AddOnStresserRemoteV2.Schedule) } if cfg.AddOnStresserRemoteV2.Completes != 500 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Completes %d", cfg.AddOnStresserRemoteV2.Completes) } if cfg.AddOnStresserRemoteV2.Parallels != 500 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Parallels %d", cfg.AddOnStresserRemoteV2.Parallels) } if cfg.AddOnStresserRemoteV2.SuccessfulJobsHistoryLimit != 500 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.SuccessfulJobsHistoryLimit %d", cfg.AddOnStresserRemoteV2.SuccessfulJobsHistoryLimit) } if cfg.AddOnStresserRemoteV2.FailedJobsHistoryLimit != 500 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.FailedJobsHistoryLimit %d", cfg.AddOnStresserRemoteV2.FailedJobsHistoryLimit) } if cfg.AddOnStresserRemoteV2.ObjectSize != 512 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.ObjectSize %d", cfg.AddOnStresserRemoteV2.ObjectSize) } if cfg.AddOnStresserRemoteV2.Duration != 7*time.Minute+30*time.Second { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Duration %v", cfg.AddOnStresserRemoteV2.Duration) } if cfg.AddOnStresserRemoteV2.Coroutines != 10 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Coroutines %d", cfg.AddOnStresserRemoteV2.Coroutines) } if cfg.AddOnStresserRemoteV2.Secrets != 10 { t.Fatalf("unexpected cfg.AddOnStresserRemoteV2.Secrets %d", cfg.AddOnStresserRemoteV2.Secrets) } if err := cfg.ValidateAndSetDefaults(); err != nil { t.Fatal(err) } cfg.AddOnNLBHelloWorld.Enable = false cfg.AddOnALB2048.Enable = false cfg.AddOnJobsEcho.Enable = false cfg.AddOnJobsPi.Enable = false if err := cfg.ValidateAndSetDefaults(); err != nil { t.Fatal(err) } if cfg.ClientTimeoutString != "10m0s" { t.Fatalf("unexpected ClientTimeoutString %q", cfg.ClientTimeoutString) } if cfg.AddOnFargate.SecretName != "hellosecret" { t.Fatalf("unexpected cfg.AddOnFargate.SecretName %q", cfg.AddOnFargate.SecretName) } if cfg.TotalNodes != 222 { t.Fatalf("unexpected cfg.TotalNodes %d", cfg.TotalNodes) } d, err := ioutil.ReadFile(cfg.ConfigPath) if err != nil { t.Fatal(err) } fmt.Println(string(d)) } func TestEnvAddOnManagedNodeGroups(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", "false") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } if cfg.AddOnNodeGroups.Enable { t.Fatal("AddOnNodeGroups.Enable expected false, got true") } if cfg.AddOnManagedNodeGroups.Enable { t.Fatal("AddOnManagedNodeGroups.Enable expected false, got true") } cfg.AddOnNLBHelloWorld.Enable = true if err := cfg.ValidateAndSetDefaults(); !strings.Contains(err.Error(), "AddOnNLBHelloWorld.Enable true") { t.Fatalf("expected add-on error, got %v", err) } } func TestEnvAddOnNodeGroupsGetRef(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ASGS", `{"GetRef.Name-ng-for-cni":{"name":"GetRef.Name-ng-for-cni","remote-access-user-name":"ec2-user","ami-type":"AL2_x86_64","asg-min-size":30,"asg-max-size":35,"asg-desired-capacity":34, "instance-type":"type-2", "image-id":"my-ami", "ssm":{"document-create":true, "document-name":"GetRef.Name-document", "document-commands":"echo 1"}, "kubelet-extra-args":"aaa aa", "cluster-autoscaler": {"enable" : true}, "volume-size":500, "volume-type":"gp3"}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ASGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS", `{"GetRef.Name-mng-for-cni":{"name":"GetRef.Name-mng-for-cni","remote-access-user-name":"ec2-user","tags":{"group":"amazon-vpc-cni-k8s"},"ami-type":"AL2_x86_64","asg-min-size":3,"asg-max-size":3,"asg-desired-capacity":3,"instance-types":["c5.xlarge"]}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } if err := cfg.ValidateAndSetDefaults(); err != nil { t.Fatal(err) } cur1 := cfg.AddOnNodeGroups.ASGs[cfg.Name+"-ng-for-cni"] cfg.AddOnNodeGroups.ASGs[cfg.Name+"-ng-for-cni"] = cur1 expectedNGs := map[string]ASG{ cfg.Name + "-ng-for-cni": { ASG: ec2config.ASG{ Name: cfg.Name + "-ng-for-cni", RemoteAccessUserName: "ec2-user", SSM: &ec2config.SSM{ DocumentName: regex.ReplaceAllString(cfg.Name+"-document", ""), DocumentExecutionTimeoutSeconds: 3600, DocumentCreate: true, DocumentCommands: "echo 1", }, ImageID: "my-ami", AMIType: eks.AMITypesAl2X8664, InstanceType: "type-2", VolumeSize: 500, VolumeType: "gp3", ASGMinSize: 30, ASGMaxSize: 35, ASGDesiredCapacity: 34, LaunchTemplateName: cfg.Name + "-ng-for-cni-launch-template", }, KubeletExtraArgs: "aaa aa", ClusterAutoscaler: &NGClusterAutoscaler{Enable: true}, }, } if !reflect.DeepEqual(*cfg.AddOnNodeGroups.ASGs[cfg.Name+"-ng-for-cni"].SSM, *cur1.SSM) { t.Fatalf("expected cfg.AddOnNodeGroups.ASGs %+v, got %+v", expectedNGs, cfg.AddOnNodeGroups.ASGs) } if !reflect.DeepEqual(*cfg.AddOnNodeGroups.ASGs[cfg.Name+"-ng-for-cni"].ClusterAutoscaler, *cur1.ClusterAutoscaler) { t.Fatalf("expected cfg.AddOnNodeGroups.ASGs %+v, got %+v", expectedNGs, cfg.AddOnNodeGroups.ASGs) } v := cfg.AddOnNodeGroups.ASGs[cfg.Name+"-ng-for-cni"] v.ClusterAutoscaler = nil cfg.AddOnNodeGroups.ASGs[cfg.Name+"-ng-for-cni"] = v v2 := expectedNGs[cfg.Name+"-ng-for-cni"] v2.ClusterAutoscaler = nil expectedNGs[cfg.Name+"-ng-for-cni"] = v2 if !reflect.DeepEqual(cfg.AddOnNodeGroups.ASGs, expectedNGs) { t.Fatalf("expected cfg.AddOnNodeGroups.ASGs %+v, got %+v", expectedNGs, cfg.AddOnNodeGroups.ASGs) } cur2 := cfg.AddOnManagedNodeGroups.MNGs[cfg.Name+"-mng-for-cni"] cfg.AddOnManagedNodeGroups.MNGs[cfg.Name+"-mng-for-cni"] = cur2 expectedMNGs := map[string]MNG{ cfg.Name + "-mng-for-cni": { Name: cfg.Name + "-mng-for-cni", RemoteAccessUserName: "ec2-user", Tags: map[string]string{"group": "amazon-vpc-cni-k8s"}, AMIType: "AL2_x86_64", ASGMinSize: 3, ASGMaxSize: 3, ASGDesiredCapacity: 3, InstanceTypes: []string{"c5.xlarge"}, VolumeSize: 40, }, } if !reflect.DeepEqual(cfg.AddOnManagedNodeGroups.MNGs, expectedMNGs) { t.Fatalf("expected cfg.AddOnManagedNodeGroups.MNGs %+v, got %+v", expectedMNGs, cfg.AddOnManagedNodeGroups.MNGs) } } func TestEnvAddOnConformance(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ASGS", `{"GetRef.Name-ng-for-cni":{"name":"GetRef.Name-ng-for-cni","remote-access-user-name":"ec2-user","ami-type":"AL2_x86_64","asg-min-size":30,"asg-max-size":35,"instance-types":["type-2"],"asg-desired-capacity":34,"image-id":"my-ami", "ssm":{"document-create":true, "document-name":"GetRef.Name-document", "document-commands":"echo 1"}, "cluster-autoscaler": {"enable" : false}, "kubelet-extra-args":"aaa aa", "volume-size":500}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_ASGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_NAMESPACE", "conformance-test") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_PATH", "aaaaa") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_DOWNLOAD_URL", "sonobuoy-download-here") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_DOWNLOAD_URL") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_DELETE_TIMEOUT", "10s") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_DELETE_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_TIMEOUT", "10h") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_TIMEOUT") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_MODE", "non-disruptive-conformance") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_MODE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_KUBE_CONFORMANCE_IMAGE", "hello.com/v1") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_KUBE_CONFORMANCE_IMAGE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_IMAGE", "sonobuoy/sonobuoy:v0.18.3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_IMAGE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SYSTEMD_LOGS_IMAGE", "sonobuoy/systemd-logs:v0.3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SYSTEMD_LOGS_IMAGE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_E2E_REPO_CONFIG", "/path/to/config.yml") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_E2E_REPO_CONFIG") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_E2E_FOCUS", "sig-network") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_E2E_FOCUS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_E2E_SKIP", "sig-network") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CONFORMANCE_SONOBUOY_RUN_E2E_SKIP") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } if err := cfg.ValidateAndSetDefaults(); err != nil { t.Fatal(err) } if !cfg.AddOnConformance.Enable { t.Fatalf("unexpected cfg.AddOnConformance.Enable %v", cfg.AddOnConformance.Enable) } if cfg.AddOnConformance.Namespace != "conformance-test" { t.Fatalf("unexpected cfg.AddOnConformance.Namespace %q", cfg.AddOnConformance.Namespace) } if cfg.AddOnConformance.SonobuoyPath != "aaaaa" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyPath %q", cfg.AddOnConformance.SonobuoyPath) } if cfg.AddOnConformance.SonobuoyDownloadURL != "sonobuoy-download-here" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyDownloadURL %q", cfg.AddOnConformance.SonobuoyDownloadURL) } if cfg.AddOnConformance.SonobuoyDeleteTimeout != 10*time.Second { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyDeleteTimeout %v", cfg.AddOnConformance.SonobuoyDeleteTimeout) } if cfg.AddOnConformance.SonobuoyRunTimeout != 10*time.Hour { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyRunTimeout %v", cfg.AddOnConformance.SonobuoyRunTimeout) } if cfg.AddOnConformance.SonobuoyRunMode != "non-disruptive-conformance" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyRunMode %q", cfg.AddOnConformance.SonobuoyRunMode) } if cfg.AddOnConformance.SonobuoyRunKubeConformanceImage != "hello.com/v1" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyRunKubeConformanceImage %q", cfg.AddOnConformance.SonobuoyRunKubeConformanceImage) } if cfg.AddOnConformance.SonobuoyImage != "sonobuoy/sonobuoy:v0.18.3" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyImage %q", cfg.AddOnConformance.SonobuoyImage) } if cfg.AddOnConformance.SystemdLogsImage != "sonobuoy/systemd-logs:v0.3" { t.Fatalf("unexpected cfg.AddOnConformance.SystemdLogsImage %q", cfg.AddOnConformance.SystemdLogsImage) } if cfg.AddOnConformance.SonobuoyE2eRepoConfig != "/path/to/config.yml" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyE2eRepoConfig %q", cfg.AddOnConformance.SonobuoyE2eRepoConfig) } if cfg.AddOnConformance.SonobuoyRunE2eFocus != "sig-network" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyRunE2eFocus %q", cfg.AddOnConformance.SonobuoyRunE2eFocus) } if cfg.AddOnConformance.SonobuoyRunE2eSkip != "sig-network" { t.Fatalf("unexpected cfg.AddOnConformance.SonobuoyRunE2eSkip %q", cfg.AddOnConformance.SonobuoyRunE2eSkip) } } // TestEnvAddOnManagedNodeGroupsCNI tests CNI integration test MNG settings. // https://github.com/aws/amazon-vpc-cni-k8s/blob/master/scripts/lib/cluster.sh func TestEnvAddOnManagedNodeGroupsCNI(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_PRIVATE_KEY_PATH", `a`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_PRIVATE_KEY_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS", `{"test-mng-for-cni":{"name":"test-mng-for-cni","remote-access-user-name":"ec2-user","tags":{"group":"amazon-vpc-cni-k8s"},"ami-type":"AL2_x86_64","asg-min-size":3,"asg-max-size":3,"asg-desired-capacity":3,"instance-types":["c5.xlarge"]}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } if err := cfg.ValidateAndSetDefaults(); err != nil { t.Fatal(err) } if cfg.RemoteAccessPrivateKeyPath != "a" { t.Fatalf("unexpected cfg.RemoteAccessPrivateKeyPath %q", cfg.RemoteAccessPrivateKeyPath) } cur := cfg.AddOnManagedNodeGroups.MNGs["test-mng-for-cni"] cfg.AddOnManagedNodeGroups.MNGs["test-mng-for-cni"] = cur expectedMNGs := map[string]MNG{ "test-mng-for-cni": { Name: "test-mng-for-cni", RemoteAccessUserName: "ec2-user", Tags: map[string]string{"group": "amazon-vpc-cni-k8s"}, AMIType: "AL2_x86_64", ASGMinSize: 3, ASGMaxSize: 3, ASGDesiredCapacity: 3, InstanceTypes: []string{"c5.xlarge"}, VolumeSize: 40, }, } if !reflect.DeepEqual(cfg.AddOnManagedNodeGroups.MNGs, expectedMNGs) { t.Fatalf("expected cfg.AddOnManagedNodeGroups.MNGs %+v, got %+v", expectedMNGs, cfg.AddOnManagedNodeGroups.MNGs) } } // TestEnvAddOnManagedNodeGroupsInvalidInstanceType tests invalid instance types. func TestEnvAddOnManagedNodeGroupsInvalidInstanceType(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_PRIVATE_KEY_PATH", `a`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_REMOTE_ACCESS_PRIVATE_KEY_PATH") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS", `{"test-mng-for-cni":{"name":"test-mng-for-cni","tags":{"group":"amazon-vpc-cni-k8s"},"ami-type":"AL2_x86_64","asg-min-size":3,"asg-max-size":3,"asg-desired-capacity":3,"instance-types":["m3.xlarge"]}}`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_ENABLE") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() if err == nil { t.Fatal("expected error") } if !strings.Contains(err.Error(), "older instance type InstanceTypes") { t.Fatalf("unexpected error %v", err) } } func TestEnvAddOnCSIEBS(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_CHART_REPO_URL", "test-chart-repo") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_CHART_REPO_URL") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() assert.NoError(t, err) if !cfg.AddOnCSIEBS.Enable { t.Fatalf("unexpected cfg.AddOnCSIEBS.Enable %v", cfg.AddOnCSIEBS.Enable) } if cfg.AddOnCSIEBS.ChartRepoURL != "test-chart-repo" { t.Fatalf("unexpected cfg.AddOnCSIEBS.ChartRepoURL %q", cfg.AddOnCSIEBS.ChartRepoURL) } } func TestEnvAddOnAppMesh(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_ENABLE", `false`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_IRSA_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_NAMESPACE", "custom-namespace") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_CONTROLLER_IMAGE", "repo/controller:v1.1.3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_CONTROLLER_IMAGE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_INJECTOR_IMAGE", "repo/injector:v1.1.3") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_INJECTOR_IMAGE") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() assert.NoError(t, err) assert.True(t, cfg.AddOnAppMesh.Enable) assert.Equal(t, cfg.AddOnAppMesh.Namespace, "custom-namespace") assert.Equal(t, cfg.AddOnAppMesh.ControllerImage, "repo/controller:v1.1.3") assert.Equal(t, cfg.AddOnAppMesh.InjectorImage, "repo/injector:v1.1.3") if cfg.AddOnAppMesh.PolicyCFNStackID != "" { t.Fatalf("read-only AddOnAppMesh.PolicyCFNStackID is set to %q", cfg.AddOnAppMesh.PolicyCFNStackID) } } func TestEnvAddOnWordpress(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_NAMESPACE", "word-press") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_USER_NAME", "my-user") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_USER_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_PASSWORD", "my-password") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_WORDPRESS_PASSWORD") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() assert.NoError(t, err) if !cfg.AddOnWordpress.Enable { t.Fatalf("unexpected cfg.AddOnWordpress.Enable %v", cfg.AddOnWordpress.Enable) } if cfg.AddOnWordpress.Namespace != "word-press" { t.Fatalf("unexpected cfg.AddOnWordpress.Namespace %q", cfg.AddOnWordpress.Namespace) } if cfg.AddOnWordpress.UserName != "my-user" { t.Fatalf("unexpected cfg.AddOnWordpress.UserName %q", cfg.AddOnWordpress.UserName) } if cfg.AddOnWordpress.Password != "my-password" { t.Fatalf("unexpected cfg.AddOnWordpress.Password %q", cfg.AddOnWordpress.Password) } } func TestEnvAddOnKubernetesDashboard(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_METRICS_SERVER_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_METRICS_SERVER_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBERNETES_DASHBOARD_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBERNETES_DASHBOARD_ENABLE") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() assert.NoError(t, err) if !cfg.AddOnMetricsServer.Enable { t.Fatalf("unexpected cfg.AddOnMetricsServer.Enable %v", cfg.AddOnMetricsServer.Enable) } if !cfg.AddOnKubernetesDashboard.Enable { t.Fatalf("unexpected cfg.AddOnKubernetesDashboard.Enable %v", cfg.AddOnKubernetesDashboard.Enable) } fmt.Println(cfg.KubectlCommands()) } func TestEnvAddOnPrometheusGrafana(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_CSI_EBS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PROMETHEUS_GRAFANA_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PROMETHEUS_GRAFANA_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PROMETHEUS_GRAFANA_GRAFANA_ADMIN_USER_NAME", "MY_ADMIN_USER_NAME") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PROMETHEUS_GRAFANA_GRAFANA_ADMIN_USER_NAME") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_PROMETHEUS_GRAFANA_GRAFANA_ADMIN_PASSWORD", "MY_ADMIN_PASSWORD") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_PROMETHEUS_GRAFANA_GRAFANA_ADMIN_PASSWORD") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() assert.NoError(t, err) if !cfg.AddOnPrometheusGrafana.Enable { t.Fatalf("unexpected cfg.AddOnPrometheusGrafana.Enable %v", cfg.AddOnPrometheusGrafana.Enable) } if cfg.AddOnPrometheusGrafana.GrafanaAdminUserName != "MY_ADMIN_USER_NAME" { t.Fatalf("unexpected cfg.AddOnPrometheusGrafana.GrafanaAdminUserName %q", cfg.AddOnPrometheusGrafana.GrafanaAdminUserName) } if cfg.AddOnPrometheusGrafana.GrafanaAdminPassword != "MY_ADMIN_PASSWORD" { t.Fatalf("unexpected cfg.AddOnPrometheusGrafana.GrafanaAdminPassword %q", cfg.AddOnPrometheusGrafana.GrafanaAdminPassword) } } func TestEnvAddOnKubeflow(t *testing.T) { cfg := NewDefault() defer func() { os.RemoveAll(cfg.ConfigPath) os.RemoveAll(cfg.KubectlCommandsOutputPath) os.RemoveAll(cfg.RemoteAccessCommandsOutputPath) }() os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE", `true`) defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_ENABLE", "true") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_ENABLE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_NAMESPACE", "kubeflow") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_NAMESPACE") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_KFCTL_DOWNLOAD_URL", "kubeflow-download-here") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_KFCTL_DOWNLOAD_URL") os.Setenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_BASE_DIR", "kubeflow-base-dir") defer os.Unsetenv("AWS_K8S_TESTER_EKS_ADD_ON_KUBEFLOW_BASE_DIR") if err := cfg.UpdateFromEnvs(); err != nil { t.Fatal(err) } err := cfg.ValidateAndSetDefaults() assert.NoError(t, err) if !cfg.AddOnKubeflow.Enable { t.Fatalf("unexpected cfg.AddOnKubeflow.Enable %v", cfg.AddOnKubeflow.Enable) } if cfg.AddOnKubeflow.KfctlDownloadURL != "kubeflow-download-here" { t.Fatalf("unexpected cfg.AddOnKubeflow.KfctlDownloadURL %q", cfg.AddOnKubeflow.KfctlDownloadURL) } if cfg.AddOnKubeflow.BaseDir != "kubeflow-base-dir" { t.Fatalf("unexpected cfg.AddOnKubeflow.BaseDir %q", cfg.AddOnKubeflow.BaseDir) } }