58 lines
2.0 KiB
Go
58 lines
2.0 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRuntimeDefaultsAndBoundedOverrides(t *testing.T) {
|
|
base := map[string]string{"ORBIT_MYSQL_DSN": "private-dsn"}
|
|
get := func(k string) string { return base[k] }
|
|
c, err := FromEnv(get)
|
|
if err != nil || c.WorkflowTickInterval != time.Second || c.ScheduleTickInterval != time.Second || c.RecoveryTickInterval != 2*time.Second || c.RuntimeBatchLimit != 100 {
|
|
t.Fatalf("unexpected runtime defaults: %+v err=%v", c, err)
|
|
}
|
|
base["ORBIT_WORKFLOW_TICK_INTERVAL"] = "250ms"
|
|
base["ORBIT_SCHEDULE_TICK_INTERVAL"] = "1500ms"
|
|
base["ORBIT_RECOVERY_TICK_INTERVAL"] = "1m"
|
|
base["ORBIT_RUNTIME_BATCH_LIMIT"] = "37"
|
|
c, err = FromEnv(get)
|
|
if err != nil || c.WorkflowTickInterval != 250*time.Millisecond || c.ScheduleTickInterval != 1500*time.Millisecond || c.RecoveryTickInterval != time.Minute || c.RuntimeBatchLimit != 37 {
|
|
t.Fatalf("valid runtime override rejected: %+v err=%v", c, err)
|
|
}
|
|
for key, value := range map[string]string{
|
|
"ORBIT_WORKFLOW_TICK_INTERVAL": "99ms",
|
|
"ORBIT_SCHEDULE_TICK_INTERVAL": "2m",
|
|
"ORBIT_RECOVERY_TICK_INTERVAL": "not-a-duration",
|
|
"ORBIT_RUNTIME_BATCH_LIMIT": "101",
|
|
} {
|
|
base[key] = value
|
|
if _, err := FromEnv(get); err == nil {
|
|
t.Fatalf("invalid runtime override accepted: %s=%s", key, value)
|
|
}
|
|
delete(base, key)
|
|
}
|
|
}
|
|
|
|
func TestMetricsAddressIsExplicitAndValidated(t *testing.T) {
|
|
base := map[string]string{"ORBIT_MYSQL_DSN": "private-dsn"}
|
|
get := func(k string) string { return base[k] }
|
|
c, err := FromEnv(get)
|
|
if err != nil || c.MetricsAddr != "" {
|
|
t.Fatal("metrics must be disabled by default", err)
|
|
}
|
|
for _, addr := range []string{"127.0.0.1:0", "[::1]:9090", "0.0.0.0:9090"} {
|
|
base["ORBIT_METRICS_ADDR"] = addr
|
|
c, err = FromEnv(get)
|
|
if err != nil || c.MetricsAddr != addr {
|
|
t.Fatal("valid explicit address rejected", addr, err)
|
|
}
|
|
}
|
|
for _, addr := range []string{"bad", ":secret", "127.0.0.1:-1", ":65536", "http://127.0.0.1:9000"} {
|
|
base["ORBIT_METRICS_ADDR"] = addr
|
|
if _, err = FromEnv(get); err == nil {
|
|
t.Fatal("invalid address accepted", addr)
|
|
}
|
|
}
|
|
}
|