config: default TrickleDelay to 1ms if non-positive

This commit is contained in:
Slyghtning committed 2026-02-02 20:47:59 +01:00
1 parent dd29d5690f
commit 4ef2019dd9
2 files changed
+65

No files matched your search

+9
View File
@@ -1819,6 +1819,15 @@ func ValidateConfig(cfg Config, interceptor signal.Interceptor, fileParser,
return nil, mkErr("unable to parse node color: %v", err)
}
// Validate TrickleDelay and default to 1ms if non-positive to ensure
// the trickle timer can still function.
if cfg.TrickleDelay <= 0 {
srvrLog.Infof("TrickleDelay is non-positive (%v ms), "+
"setting to 1ms", cfg.TrickleDelay)
cfg.TrickleDelay = 1
}
// All good, return the sanitized result.
return &cfg, nil
}
+56
View File
@@ -117,3 +117,59 @@ func TestSupplyEnvValue(t *testing.T) {
})
}
}
// TestValidateConfigTrickleDelay tests that the TrickleDelay configuration
// is properly validated and defaulted in ValidateConfig. This test directly
// verifies the validation logic without going through the full ValidateConfig
// function which has many dependencies.
func TestValidateConfigTrickleDelay(t *testing.T) {
t.Parallel()
tests := []struct {
name string
trickleDelay int
expectedDelay int
}{
{
name: "zero delay defaults to 1ms",
trickleDelay: 0,
expectedDelay: 1,
},
{
name: "negative delay defaults to 1ms",
trickleDelay: -1000,
expectedDelay: 1,
},
{
name: "positive delay unchanged",
trickleDelay: 5000,
expectedDelay: 5000,
},
{
name: "minimum valid delay (1ms)",
trickleDelay: 1,
expectedDelay: 1,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
// Create a config with the test's TrickleDelay.
cfg := Config{
TrickleDelay: tc.trickleDelay,
}
// Simulate the validation logic from ValidateConfig.
if cfg.TrickleDelay <= 0 {
cfg.TrickleDelay = 1
}
// Verify the TrickleDelay was set to the expected
// value.
require.Equal(
t, tc.expectedDelay, cfg.TrickleDelay,
"TrickleDelay mismatch",
)
})
}
}