Set per-controller reconcile concurrency defaults and remove --default-max-concurrent-reconciles (#4670)

This commit is contained in:
Nikola Jokic
2026-09-21 11:32:52 +02:00
committed by GitHub
parent c2104a0b72
commit 68e4cfeea5
9 changed files with 166 additions and 113 deletions
+39 -20
View File
@@ -9,35 +9,54 @@ import (
func TestOptionsResolve(t *testing.T) {
t.Parallel()
t.Run("unset per-controller values fall back to the default", func(t *testing.T) {
t.Run("the shipped defaults are used as-is", func(t *testing.T) {
got := OptionsWithDefault().Resolve()
assert.Equal(t, 1, got.DefaultMaxConcurrentReconciles)
assert.Equal(t, 1, got.AutoscalingRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 1, got.AutoscalingListenerMaxConcurrentReconciles)
assert.Equal(t, 1, got.EphemeralRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 1, got.EphemeralRunnerMaxConcurrentReconciles)
assert.Equal(t, 2, got.AutoscalingRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 2, got.AutoscalingListenerMaxConcurrentReconciles)
assert.Equal(t, 2, got.EphemeralRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 4, got.EphemeralRunnerMaxConcurrentReconciles)
})
t.Run("a default of zero or less is replaced by 1", func(t *testing.T) {
t.Run("the shipped defaults survive a second resolve", func(t *testing.T) {
once := OptionsWithDefault().Resolve()
assert.Equal(t, once, once.Resolve())
})
t.Run("explicit values win over the defaults", func(t *testing.T) {
opts := Options{
AutoscalingRunnerSetMaxConcurrentReconciles: 3,
AutoscalingListenerMaxConcurrentReconciles: 5,
EphemeralRunnerSetMaxConcurrentReconciles: 6,
EphemeralRunnerMaxConcurrentReconciles: 20,
}
got := opts.Resolve()
assert.Equal(t, 3, got.AutoscalingRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 5, got.AutoscalingListenerMaxConcurrentReconciles)
assert.Equal(t, 6, got.EphemeralRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 20, got.EphemeralRunnerMaxConcurrentReconciles)
})
t.Run("a value of zero or less is replaced by that controller's default", func(t *testing.T) {
for _, n := range []int{0, -1} {
opts := Options{DefaultMaxConcurrentReconciles: n}
opts := Options{
AutoscalingRunnerSetMaxConcurrentReconciles: n,
AutoscalingListenerMaxConcurrentReconciles: n,
EphemeralRunnerSetMaxConcurrentReconciles: n,
EphemeralRunnerMaxConcurrentReconciles: n,
}
got := opts.Resolve()
assert.Equal(t, 1, got.DefaultMaxConcurrentReconciles)
assert.Equal(t, 1, got.AutoscalingRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 1, got.AutoscalingListenerMaxConcurrentReconciles)
assert.Equal(t, 1, got.EphemeralRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 1, got.EphemeralRunnerMaxConcurrentReconciles)
assert.Equal(t, OptionsWithDefault(), got, "a non-positive value must never reach controller-runtime")
}
})
t.Run("a changed default applies to every unset controller", func(t *testing.T) {
t.Run("a single non-positive value does not disturb the others", func(t *testing.T) {
opts := OptionsWithDefault()
opts.DefaultMaxConcurrentReconciles = 4
opts.EphemeralRunnerMaxConcurrentReconciles = 20
opts.AutoscalingListenerMaxConcurrentReconciles = 7
opts.EphemeralRunnerMaxConcurrentReconciles = 0
got := opts.Resolve()
assert.Equal(t, 4, got.AutoscalingRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 4, got.AutoscalingListenerMaxConcurrentReconciles)
assert.Equal(t, 4, got.EphemeralRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 20, got.EphemeralRunnerMaxConcurrentReconciles)
assert.Equal(t, 7, got.AutoscalingListenerMaxConcurrentReconciles)
assert.Equal(t, 4, got.EphemeralRunnerMaxConcurrentReconciles)
assert.Equal(t, 2, got.AutoscalingRunnerSetMaxConcurrentReconciles)
assert.Equal(t, 2, got.EphemeralRunnerSetMaxConcurrentReconciles)
})
}