* Copyright (c) 2026 Huawei Technologies Co., Ltd.
* openFuyao is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package main
import (
"flag"
"io"
"os"
"testing"
)
func TestParseControllerManagerConfigUsesDefaults(t *testing.T) {
t.Setenv("LOG_LEVEL", "")
t.Setenv("AGENT_PORT", "")
flags := flag.NewFlagSet("controller", flag.ContinueOnError)
flags.SetOutput(io.Discard)
config, err := parseControllerManagerConfig(flags, nil)
if err != nil {
t.Fatalf("parse defaults: %v", err)
}
if config.metricsAddr != "0" {
t.Fatalf("expected default metrics address 0, got %q", config.metricsAddr)
}
if config.probeAddr != ":8081" {
t.Fatalf("expected default probe address, got %q", config.probeAddr)
}
if config.enableLeaderElection {
t.Fatalf("expected leader election disabled by default")
}
if config.logLevel != "info" {
t.Fatalf("expected default log level info, got %q", config.logLevel)
}
if config.agentPort != 18080 {
t.Fatalf("expected default agent port 18080, got %d", config.agentPort)
}
}
func TestParseControllerManagerConfigReadsFlags(t *testing.T) {
flags := flag.NewFlagSet("controller", flag.ContinueOnError)
flags.SetOutput(io.Discard)
t.Setenv("LOG_LEVEL", "debug")
t.Setenv("AGENT_PORT", "19090")
config, err := parseControllerManagerConfig(flags, []string{
"--metrics-bind-address=:8080",
"--health-probe-bind-address=:19090",
"--leader-elect=true",
})
if err != nil {
t.Fatalf("parse flags: %v", err)
}
if config.metricsAddr != ":8080" {
t.Fatalf("expected custom metrics address, got %q", config.metricsAddr)
}
if config.probeAddr != ":19090" {
t.Fatalf("expected custom probe address, got %q", config.probeAddr)
}
if !config.enableLeaderElection {
t.Fatalf("expected leader election enabled")
}
if config.logLevel != "debug" {
t.Fatalf("expected log level from env, got %q", config.logLevel)
}
if config.agentPort != 19090 {
t.Fatalf("expected agent port from env, got %d", config.agentPort)
}
}
func TestParseControllerManagerConfigRejectsInvalidAgentPort(t *testing.T) {
flags := flag.NewFlagSet("controller", flag.ContinueOnError)
flags.SetOutput(io.Discard)
t.Setenv("AGENT_PORT", "not-a-port")
if _, err := parseControllerManagerConfig(flags, nil); err == nil {
t.Fatalf("expected invalid AGENT_PORT to fail")
}
}
func TestParseControllerManagerConfigRejectsInvalidFlags(t *testing.T) {
flags := flag.NewFlagSet("controller", flag.ContinueOnError)
flags.SetOutput(io.Discard)
if _, err := parseControllerManagerConfig(flags, []string{"--unknown-flag"}); err == nil {
t.Fatalf("expected invalid flag to fail")
}
}
func TestEnvOrDefault(t *testing.T) {
previous := os.Getenv("WD_CONTROLLER_TEST_ENV")
defer os.Setenv("WD_CONTROLLER_TEST_ENV", previous)
os.Unsetenv("WD_CONTROLLER_TEST_ENV")
if got := envOrDefault("WD_CONTROLLER_TEST_ENV", "fallback"); got != "fallback" {
t.Fatalf("expected fallback, got %q", got)
}
os.Setenv("WD_CONTROLLER_TEST_ENV", "value")
if got := envOrDefault("WD_CONTROLLER_TEST_ENV", "fallback"); got != "value" {
t.Fatalf("expected env value, got %q", got)
}
}