mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-08 15:13:56 -06:00
2410294a9d
Closes hashicorp/terraform#5619.
225 lines
5.5 KiB
Go
225 lines
5.5 KiB
Go
package aws
|
|
|
|
import "testing"
|
|
|
|
func TestCapacitySatisfiedCreate(t *testing.T) {
|
|
cases := map[string]struct {
|
|
Data map[string]interface{}
|
|
HaveASG int
|
|
HaveELB int
|
|
ExpectSatisfied bool
|
|
ExpectReason string
|
|
}{
|
|
"min_size, have less": {
|
|
Data: map[string]interface{}{
|
|
"min_size": 5,
|
|
},
|
|
HaveASG: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need at least 5 healthy instances in ASG, have 2",
|
|
},
|
|
"min_size, got it": {
|
|
Data: map[string]interface{}{
|
|
"min_size": 5,
|
|
},
|
|
HaveASG: 5,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"min_size, have more": {
|
|
Data: map[string]interface{}{
|
|
"min_size": 5,
|
|
},
|
|
HaveASG: 10,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"desired_capacity, have less": {
|
|
Data: map[string]interface{}{
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need at least 5 healthy instances in ASG, have 2",
|
|
},
|
|
"desired_capacity overrides min_size": {
|
|
Data: map[string]interface{}{
|
|
"min_size": 2,
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need at least 5 healthy instances in ASG, have 2",
|
|
},
|
|
"desired_capacity, got it": {
|
|
Data: map[string]interface{}{
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 5,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"desired_capacity, have more": {
|
|
Data: map[string]interface{}{
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 10,
|
|
ExpectSatisfied: true,
|
|
},
|
|
|
|
"min_elb_capacity, have less": {
|
|
Data: map[string]interface{}{
|
|
"min_elb_capacity": 5,
|
|
},
|
|
HaveELB: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need at least 5 healthy instances in ELB, have 2",
|
|
},
|
|
"min_elb_capacity, got it": {
|
|
Data: map[string]interface{}{
|
|
"min_elb_capacity": 5,
|
|
},
|
|
HaveELB: 5,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"min_elb_capacity, have more": {
|
|
Data: map[string]interface{}{
|
|
"min_elb_capacity": 5,
|
|
},
|
|
HaveELB: 10,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"wait_for_elb_capacity, have less": {
|
|
Data: map[string]interface{}{
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need at least 5 healthy instances in ELB, have 2",
|
|
},
|
|
"wait_for_elb_capacity, got it": {
|
|
Data: map[string]interface{}{
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 5,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"wait_for_elb_capacity, have more": {
|
|
Data: map[string]interface{}{
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 10,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"wait_for_elb_capacity overrides min_elb_capacity": {
|
|
Data: map[string]interface{}{
|
|
"min_elb_capacity": 2,
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need at least 5 healthy instances in ELB, have 2",
|
|
},
|
|
}
|
|
|
|
r := resourceAwsAutoscalingGroup()
|
|
for tn, tc := range cases {
|
|
d := r.TestResourceData()
|
|
for k, v := range tc.Data {
|
|
if err := d.Set(k, v); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
}
|
|
gotSatisfied, gotReason := capacitySatisfiedCreate(d, tc.HaveASG, tc.HaveELB)
|
|
|
|
if gotSatisfied != tc.ExpectSatisfied {
|
|
t.Fatalf("%s: expected satisfied: %t, got: %t (reason: %s)",
|
|
tn, tc.ExpectSatisfied, gotSatisfied, gotReason)
|
|
}
|
|
|
|
if gotReason != tc.ExpectReason {
|
|
t.Fatalf("%s: expected reason: %s, got: %s",
|
|
tn, tc.ExpectReason, gotReason)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCapacitySatisfiedUpdate(t *testing.T) {
|
|
cases := map[string]struct {
|
|
Data map[string]interface{}
|
|
HaveASG int
|
|
HaveELB int
|
|
ExpectSatisfied bool
|
|
ExpectReason string
|
|
}{
|
|
"default is satisfied": {
|
|
Data: map[string]interface{}{},
|
|
ExpectSatisfied: true,
|
|
},
|
|
"desired_capacity, have less": {
|
|
Data: map[string]interface{}{
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need exactly 5 healthy instances in ASG, have 2",
|
|
},
|
|
"desired_capacity, got it": {
|
|
Data: map[string]interface{}{
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 5,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"desired_capacity, have more": {
|
|
Data: map[string]interface{}{
|
|
"desired_capacity": 5,
|
|
},
|
|
HaveASG: 10,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need exactly 5 healthy instances in ASG, have 10",
|
|
},
|
|
"wait_for_elb_capacity, have less": {
|
|
Data: map[string]interface{}{
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 2,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need exactly 5 healthy instances in ELB, have 2",
|
|
},
|
|
"wait_for_elb_capacity, got it": {
|
|
Data: map[string]interface{}{
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 5,
|
|
ExpectSatisfied: true,
|
|
},
|
|
"wait_for_elb_capacity, have more": {
|
|
Data: map[string]interface{}{
|
|
"wait_for_elb_capacity": 5,
|
|
},
|
|
HaveELB: 10,
|
|
ExpectSatisfied: false,
|
|
ExpectReason: "Need exactly 5 healthy instances in ELB, have 10",
|
|
},
|
|
}
|
|
|
|
r := resourceAwsAutoscalingGroup()
|
|
for tn, tc := range cases {
|
|
d := r.TestResourceData()
|
|
for k, v := range tc.Data {
|
|
if err := d.Set(k, v); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
}
|
|
gotSatisfied, gotReason := capacitySatisfiedUpdate(d, tc.HaveASG, tc.HaveELB)
|
|
|
|
if gotSatisfied != tc.ExpectSatisfied {
|
|
t.Fatalf("%s: expected satisfied: %t, got: %t (reason: %s)",
|
|
tn, tc.ExpectSatisfied, gotSatisfied, gotReason)
|
|
}
|
|
|
|
if gotReason != tc.ExpectReason {
|
|
t.Fatalf("%s: expected reason: %s, got: %s",
|
|
tn, tc.ExpectReason, gotReason)
|
|
}
|
|
}
|
|
}
|