faas/gateway/handlers/alerthandler_test.go
Alex Ellis (OpenFaaS Ltd) 49053feac7 Clarify EULA applies to this project since 2019
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
2024-11-18 21:20:38 +00:00

133 lines
3.7 KiB
Go

// License: OpenFaaS Community Edition (CE) EULA
// Copyright (c) 2017,2019-2024 OpenFaaS Author(s)
// Copyright (c) Alex Ellis 2017. All rights reserved.
package handlers
import (
"testing"
"github.com/openfaas/faas/gateway/scaling"
)
func TestDisabledScale(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(0)
got := CalculateReplicas("firing", scaling.DefaultMinReplicas, scaling.DefaultMaxReplicas, minReplicas, scalingFactor)
if got != minReplicas {
t.Logf("Expected not to scale, but replicas were: %d", got)
t.Fail()
}
}
func TestParameterEdge(t *testing.T) {
minReplicas := uint64(0)
scalingFactor := uint64(0)
got := CalculateReplicas("firing", scaling.DefaultMinReplicas, scaling.DefaultMaxReplicas, minReplicas, scalingFactor)
if got != 0 {
t.Log("Expected not to scale")
t.Fail()
}
}
func TestScaling_SameUpperLowerLimit(t *testing.T) {
minReplicas := uint64(5)
maxReplicas := uint64(5)
scalingFactor := uint64(10)
got := CalculateReplicas("firing", minReplicas, minReplicas, maxReplicas, scalingFactor)
want := minReplicas
if want != got {
t.Logf("Replicas - want: %d, got: %d", want, got)
t.Fail()
}
}
func TestMaxScale(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(100)
got := CalculateReplicas("firing", scaling.DefaultMinReplicas, scaling.DefaultMaxReplicas*2, minReplicas, scalingFactor)
if got != scaling.DefaultMaxReplicas {
t.Fatalf("want ceiling: %d, but got: %d", scaling.DefaultMaxReplicas, got)
}
}
func TestInitialScale_From1_Factor10(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(10)
got := CalculateReplicas("firing", scaling.DefaultMinReplicas, scaling.DefaultMaxReplicas, minReplicas, scalingFactor)
want := uint64(2)
if got != want {
t.Fatalf("want: %d, but got: %d", want, got)
}
}
func TestScale_midrange_factor25(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(25)
current := uint64(4)
maxReplicas := uint64(scaling.DefaultMaxReplicas)
got := CalculateReplicas("firing", current, maxReplicas, minReplicas, scalingFactor)
want := uint64(5)
if want != got {
t.Fatalf("want: %d, but got: %d", want, got)
}
}
func TestScale_Ceiling_IsDefaultMaxReplicas(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(10)
current := uint64(scaling.DefaultMaxReplicas)
got := CalculateReplicas("firing", current, scaling.DefaultMaxReplicas, minReplicas, scalingFactor)
if got != scaling.DefaultMaxReplicas {
t.Fatalf("want: %d, but got: %d", scaling.DefaultMaxReplicas, got)
}
}
func TestScaleCeilingReplicasOver(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(10)
got := CalculateReplicas("firing", 19, scaling.DefaultMaxReplicas, minReplicas, scalingFactor)
if got != scaling.DefaultMaxReplicas {
t.Fatalf("want: %d, but got: %d", scaling.DefaultMaxReplicas, got)
}
}
func TestBackingOff(t *testing.T) {
minReplicas := uint64(1)
scalingFactor := uint64(10)
got := CalculateReplicas("resolved", 8, scaling.DefaultMaxReplicas, minReplicas, scalingFactor)
if got != 1 {
t.Log("Expected backing off to 1 replica")
t.Fail()
}
}
func TestScaledUpFrom1(t *testing.T) {
currentReplicas := uint64(1)
maxReplicas := uint64(5)
scalingFactor := uint64(30)
got := CalculateReplicas("firing", currentReplicas, maxReplicas, scaling.DefaultMinReplicas, scalingFactor)
if got <= currentReplicas {
t.Log("Expected got > currentReplica")
t.Fail()
}
}
func TestScaledUpWithSmallParam(t *testing.T) {
currentReplicas := uint64(1)
maxReplicas := uint64(4)
scalingFactor := uint64(1)
got := CalculateReplicas("firing", currentReplicas, maxReplicas, scaling.DefaultMinReplicas, scalingFactor)
if got <= currentReplicas {
t.Log("Expected got > currentReplica")
t.Fail()
}
}