2020-12-04 13:08:00 +00:00
|
|
|
package watchdog
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/raulk/clock"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestAdaptivePolicy(t *testing.T) {
|
|
|
|
clk := clock.NewMock()
|
|
|
|
Clock = clk
|
|
|
|
|
|
|
|
p, err := NewAdaptivePolicy(0.5)(limit)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
// at zero; next = 50%.
|
2020-12-09 15:35:23 +00:00
|
|
|
next := p.Evaluate(UtilizationSystem, 0)
|
2020-12-04 13:08:00 +00:00
|
|
|
require.EqualValues(t, limit/2, next)
|
|
|
|
|
|
|
|
// at half; next = 75%.
|
2020-12-09 15:35:23 +00:00
|
|
|
next = p.Evaluate(UtilizationSystem, limit/2)
|
2020-12-04 13:08:00 +00:00
|
|
|
require.EqualValues(t, 3*(limit/4), next)
|
|
|
|
|
2020-12-09 15:35:23 +00:00
|
|
|
// at limit.
|
|
|
|
next = p.Evaluate(UtilizationSystem, limit)
|
2020-12-04 13:08:00 +00:00
|
|
|
require.EqualValues(t, limit, next)
|
|
|
|
}
|