Skip to content

Commit

Permalink
Add a third instance to each nodes group in rolling update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
johngmyers committed Nov 27, 2019
1 parent 4d74cde commit e914af1
Showing 1 changed file with 33 additions and 29 deletions.
62 changes: 33 additions & 29 deletions pkg/instancegroups/rollingupdate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,28 +63,31 @@ func getTestSetup() (*RollingUpdateCluster, awsup.AWSCloud, *kopsapi.Cluster, ma
func setUpCloud(cloud awsup.AWSCloud) {
cloud.Autoscaling().CreateAutoScalingGroup(&autoscaling.CreateAutoScalingGroupInput{
AutoScalingGroupName: aws.String("node-1"),
DesiredCapacity: aws.Int64(3),
MinSize: aws.Int64(1),
MaxSize: aws.Int64(5),
})

cloud.Autoscaling().AttachInstances(&autoscaling.AttachInstancesInput{
AutoScalingGroupName: aws.String("node-1"),
InstanceIds: []*string{aws.String("node-1a"), aws.String("node-1b")},
InstanceIds: []*string{aws.String("node-1a"), aws.String("node-1b"), aws.String("node-1c")},
})

cloud.Autoscaling().CreateAutoScalingGroup(&autoscaling.CreateAutoScalingGroupInput{
AutoScalingGroupName: aws.String("node-2"),
DesiredCapacity: aws.Int64(3),
MinSize: aws.Int64(1),
MaxSize: aws.Int64(5),
})

cloud.Autoscaling().AttachInstances(&autoscaling.AttachInstancesInput{
AutoScalingGroupName: aws.String("node-2"),
InstanceIds: []*string{aws.String("node-2a"), aws.String("node-2b")},
InstanceIds: []*string{aws.String("node-2a"), aws.String("node-2b"), aws.String("node-2c")},
})

cloud.Autoscaling().CreateAutoScalingGroup(&autoscaling.CreateAutoScalingGroupInput{
AutoScalingGroupName: aws.String("master-1"),
DesiredCapacity: aws.Int64(2),
MinSize: aws.Int64(1),
MaxSize: aws.Int64(5),
})
Expand All @@ -96,6 +99,7 @@ func setUpCloud(cloud awsup.AWSCloud) {

cloud.Autoscaling().CreateAutoScalingGroup(&autoscaling.CreateAutoScalingGroupInput{
AutoScalingGroupName: aws.String("bastion-1"),
DesiredCapacity: aws.Int64(1),
MinSize: aws.Int64(1),
MaxSize: aws.Int64(5),
})
Expand Down Expand Up @@ -172,7 +176,7 @@ func getGroups(k8sClient *fake.Clientset) map[string]*cloudinstances.CloudInstan
},
},
}
makeGroupMembers(k8sClient, groups["node-1"], 2)
makeGroupMembers(k8sClient, groups["node-1"], 3)
groups["node-2"] = &cloudinstances.CloudInstanceGroup{
InstanceGroup: &kopsapi.InstanceGroup{
ObjectMeta: v1meta.ObjectMeta{
Expand All @@ -183,7 +187,7 @@ func getGroups(k8sClient *fake.Clientset) map[string]*cloudinstances.CloudInstan
},
},
}
makeGroupMembers(k8sClient, groups["node-2"], 2)
makeGroupMembers(k8sClient, groups["node-2"], 3)
groups["master-1"] = &cloudinstances.CloudInstanceGroup{
InstanceGroup: &kopsapi.InstanceGroup{
ObjectMeta: v1meta.ObjectMeta{
Expand Down Expand Up @@ -230,8 +234,8 @@ func markNeedUpdate(group *cloudinstances.CloudInstanceGroup, nodeIds ...string)
}

func markAllNeedUpdate(groups map[string]*cloudinstances.CloudInstanceGroup) {
markNeedUpdate(groups["node-1"], "node-1a", "node-1b")
markNeedUpdate(groups["node-2"], "node-2a", "node-2b")
markNeedUpdate(groups["node-1"], "node-1a", "node-1b", "node-1c")
markNeedUpdate(groups["node-2"], "node-2a", "node-2b", "node-2c")
markNeedUpdate(groups["master-1"], "master-1a", "master-1b")
markNeedUpdate(groups["bastion-1"], "bastion-1a")
}
Expand Down Expand Up @@ -287,8 +291,8 @@ func TestRollingUpdateNoneNeedUpdate(t *testing.T) {
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.NoError(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 2)
assertGroupInstanceCount(t, cloud, "bastion-1", 1)
}
Expand All @@ -315,8 +319,8 @@ func TestRollingUpdateEmptyGroup(t *testing.T) {
err := c.RollingUpdate(groups, &kopsapi.Cluster{}, &kopsapi.InstanceGroupList{})
assert.NoError(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 2)
assertGroupInstanceCount(t, cloud, "bastion-1", 1)
}
Expand All @@ -329,8 +333,8 @@ func TestRollingUpdateUnknownRole(t *testing.T) {
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 2)
assertGroupInstanceCount(t, cloud, "bastion-1", 1)
}
Expand All @@ -344,8 +348,8 @@ func TestRollingUpdateAllNeedUpdateFailsValidation(t *testing.T) {
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 2)
assertGroupInstanceCount(t, cloud, "bastion-1", 0)
}
Expand All @@ -359,8 +363,8 @@ func TestRollingUpdateAllNeedUpdateErrorsValidation(t *testing.T) {
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 2)
assertGroupInstanceCount(t, cloud, "bastion-1", 0)
}
Expand All @@ -370,23 +374,23 @@ func TestRollingUpdateNodes1NeedsUpdateFailsValidation(t *testing.T) {

c.ClusterValidator = &failingClusterValidator{}

markNeedUpdate(groups["node-1"], "node-1a", "node-1b")
markNeedUpdate(groups["node-1"], "node-1a", "node-1b", "node-1c")
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
}

func TestRollingUpdateNodes1NeedsUpdateErrorsValidation(t *testing.T) {
c, cloud, cluster, groups := getTestSetup()

c.ClusterValidator = &erroringClusterValidator{}

markNeedUpdate(groups["node-1"], "node-1a", "node-1b")
markNeedUpdate(groups["node-1"], "node-1a", "node-1b", "node-1c")
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
}

type failAfterOneNodeClusterValidator struct {
Expand All @@ -400,7 +404,7 @@ func (v *failAfterOneNodeClusterValidator) Validate() (*validation.ValidationClu
AutoScalingGroupNames: []*string{aws.String(v.Group)},
})
for _, group := range asgGroups.AutoScalingGroups {
if len(group.Instances) < 2 {
if int64(len(group.Instances)) < *group.DesiredCapacity {
if v.ReturnError {
return nil, errors.New("testing validation error")
}
Expand Down Expand Up @@ -431,8 +435,8 @@ func TestRollingUpdateClusterFailsValidationAfterOneMaster(t *testing.T) {
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 1)
assertGroupInstanceCount(t, cloud, "bastion-1", 0)
}
Expand All @@ -450,8 +454,8 @@ func TestRollingUpdateClusterErrorsValidationAfterOneMaster(t *testing.T) {
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 2)
assertGroupInstanceCount(t, cloud, "node-2", 2)
assertGroupInstanceCount(t, cloud, "node-1", 3)
assertGroupInstanceCount(t, cloud, "node-2", 3)
assertGroupInstanceCount(t, cloud, "master-1", 1)
assertGroupInstanceCount(t, cloud, "bastion-1", 0)
}
Expand All @@ -465,11 +469,11 @@ func TestRollingUpdateClusterFailsValidationAfterOneNode(t *testing.T) {
ReturnError: false,
}

markNeedUpdate(groups["node-1"], "node-1a", "node-1b")
markNeedUpdate(groups["node-1"], "node-1a", "node-1b", "node-1c")
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 1)
assertGroupInstanceCount(t, cloud, "node-1", 2)
}

func TestRollingUpdateClusterErrorsValidationAfterOneNode(t *testing.T) {
Expand All @@ -481,11 +485,11 @@ func TestRollingUpdateClusterErrorsValidationAfterOneNode(t *testing.T) {
ReturnError: true,
}

markNeedUpdate(groups["node-1"], "node-1a", "node-1b")
markNeedUpdate(groups["node-1"], "node-1a", "node-1b", "node-1c")
err := c.RollingUpdate(groups, cluster, &kopsapi.InstanceGroupList{})
assert.Error(t, err, "rolling update")

assertGroupInstanceCount(t, cloud, "node-1", 1)
assertGroupInstanceCount(t, cloud, "node-1", 2)
}

func assertGroupInstanceCount(t *testing.T, cloud awsup.AWSCloud, groupName string, expected int) {
Expand Down

0 comments on commit e914af1

Please sign in to comment.