Skip to content

Commit

Permalink
Adds fleetauotscaler e2e test for Lists
Browse files Browse the repository at this point in the history
  • Loading branch information
igooch committed Nov 21, 2023
1 parent f5bdb4d commit 90be460
Showing 1 changed file with 134 additions and 2 deletions.
136 changes: 134 additions & 2 deletions test/e2e/fleetautoscaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -816,7 +816,7 @@ func TestCounterAutoscaler(t *testing.T) {

counterFas := func(f func(fap *autoscalingv1.FleetAutoscalerPolicy)) *autoscalingv1.FleetAutoscaler {
fas := autoscalingv1.FleetAutoscaler{
ObjectMeta: metav1.ObjectMeta{Name: flt.ObjectMeta.Name + "-autoscaler", Namespace: framework.Namespace},
ObjectMeta: metav1.ObjectMeta{Name: flt.ObjectMeta.Name + "-counter-autoscaler", Namespace: framework.Namespace},
Spec: autoscalingv1.FleetAutoscalerSpec{
FleetName: flt.ObjectMeta.Name,
Policy: autoscalingv1.FleetAutoscalerPolicy{
Expand Down Expand Up @@ -1014,7 +1014,7 @@ func TestCounterAutoscalerAllocated(t *testing.T) {
})

counterFas := &autoscalingv1.FleetAutoscaler{
ObjectMeta: metav1.ObjectMeta{Name: flt.ObjectMeta.Name + "-autoscaler", Namespace: framework.Namespace},
ObjectMeta: metav1.ObjectMeta{Name: flt.ObjectMeta.Name + "-counter-autoscaler", Namespace: framework.Namespace},
Spec: autoscalingv1.FleetAutoscalerSpec{
FleetName: flt.ObjectMeta.Name,
Policy: autoscalingv1.FleetAutoscalerPolicy{
Expand All @@ -1040,3 +1040,135 @@ func TestCounterAutoscalerAllocated(t *testing.T) {
})
}
}

func TestListAutoscaler(t *testing.T) {
if !runtime.FeatureEnabled(runtime.FeatureCountsAndLists) {
t.SkipNow()
}
t.Parallel()

ctx := context.Background()
client := framework.AgonesClient.AgonesV1()
log := e2e.TestLogger(t)

flt := defaultFleet(framework.Namespace)
flt.Spec.Template.Spec.Lists = map[string]agonesv1.ListStatus{
"games": {
Values: []string{"game1", "game2", "game3"}, // AggregateCount 9
Capacity: 5, // AggregateCapacity 15
},
}

flt, err := client.Fleets(framework.Namespace).Create(ctx, flt.DeepCopy(), metav1.CreateOptions{})
require.NoError(t, err)
defer client.Fleets(framework.Namespace).Delete(ctx, flt.ObjectMeta.Name, metav1.DeleteOptions{}) // nolint:errcheck
framework.AssertFleetCondition(t, flt, e2e.FleetReadyCount(flt.Spec.Replicas))

fleetautoscalers := framework.AgonesClient.AutoscalingV1().FleetAutoscalers(framework.Namespace)

listFas := func(f func(fap *autoscalingv1.FleetAutoscalerPolicy)) *autoscalingv1.FleetAutoscaler {
fas := autoscalingv1.FleetAutoscaler{
ObjectMeta: metav1.ObjectMeta{Name: flt.ObjectMeta.Name + "-list-autoscaler", Namespace: framework.Namespace},
Spec: autoscalingv1.FleetAutoscalerSpec{
FleetName: flt.ObjectMeta.Name,
Policy: autoscalingv1.FleetAutoscalerPolicy{
Type: autoscalingv1.ListPolicyType,
},
Sync: &autoscalingv1.FleetAutoscalerSync{
Type: autoscalingv1.FixedIntervalSyncType,
FixedInterval: autoscalingv1.FixedIntervalSync{
Seconds: 1,
},
},
},
}
f(&fas.Spec.Policy)
return &fas
}
testCases := map[string]struct {
fas *autoscalingv1.FleetAutoscaler
wantFasErr bool
wantReplicas int32
}{
"Scale Down to Minimum 1 Replica": {
fas: listFas(func(fap *autoscalingv1.FleetAutoscalerPolicy) {
fap.List = &autoscalingv1.ListPolicy{
Key: "games",
BufferSize: intstr.FromInt(2),
MinCapacity: 0,
MaxCapacity: 3,
}
}),
wantFasErr: false,
wantReplicas: 1, // Count:3 Capacity:5
},
"Scale Down to Buffer": {
fas: listFas(func(fap *autoscalingv1.FleetAutoscalerPolicy) {
fap.List = &autoscalingv1.ListPolicy{
Key: "games",
BufferSize: intstr.FromInt(3),
MinCapacity: 0,
MaxCapacity: 5,
}
}),
wantFasErr: false,
wantReplicas: 2, // Count:6 Capacity:10
},
"Scale Up to MinCapacity": {
fas: listFas(func(fap *autoscalingv1.FleetAutoscalerPolicy) {
fap.List = &autoscalingv1.ListPolicy{
Key: "games",
BufferSize: intstr.FromInt(3),
MinCapacity: 16,
MaxCapacity: 100,
}
}),
wantFasErr: false,
wantReplicas: 4, // Count:12 Capacity:20
},
"Scale Down to MinCapacity": {
fas: listFas(func(fap *autoscalingv1.FleetAutoscalerPolicy) {
fap.List = &autoscalingv1.ListPolicy{
Key: "games",
BufferSize: intstr.FromInt(1),
MinCapacity: 10,
MaxCapacity: 100,
}
}),
wantFasErr: false,
wantReplicas: 2, // Count:6 Capacity:10
},
"MinCapacity Less Than Buffer Invalid": {
fas: listFas(func(fap *autoscalingv1.FleetAutoscalerPolicy) {
fap.List = &autoscalingv1.ListPolicy{
Key: "games",
BufferSize: intstr.FromInt(15),
MinCapacity: 5,
MaxCapacity: 25,
}
}),
wantFasErr: true,
wantReplicas: 5, // Count:15 Capacity:25
},
}
for name, testCase := range testCases {
t.Run(name, func(t *testing.T) {

fas, err := fleetautoscalers.Create(ctx, testCase.fas, metav1.CreateOptions{})
if testCase.wantFasErr {
assert.Error(t, err)
return
}
assert.NoError(t, err)

log.Print("FAS: ", fas)

framework.AssertFleetCondition(t, flt, e2e.FleetReadyCount(testCase.wantReplicas))
fleetautoscalers.Delete(ctx, fas.ObjectMeta.Name, metav1.DeleteOptions{}) // nolint:errcheck

// Return to starting 3 replicas
framework.ScaleFleet(t, log, flt, 3)
framework.AssertFleetCondition(t, flt, e2e.FleetReadyCount(3))
})
}
}

0 comments on commit 90be460

Please sign in to comment.