mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-20 11:21:49 +00:00
74 lines
2.4 KiB
Go
74 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLoadConfig_Defaults(t *testing.T) {
|
|
// Ensure env vars don't leak in from the host.
|
|
for _, k := range []string{"ECS_GATEWAY_URL", "ECS_GATEWAY_CA", "ECS_REGION",
|
|
"ECS_CLUSTER", "ECS_ACCESS_KEY", "ECS_SECRET_KEY", "ECS_IMDS_BASE",
|
|
"ECS_CONTAINERD_SOCKET", "ECS_HEARTBEAT_INTERVAL", "ECS_POLL_INTERVAL"} {
|
|
t.Setenv(k, "")
|
|
}
|
|
cfg := loadConfig(filepath.Join(t.TempDir(), "absent.env"))
|
|
if cfg.GatewayCA != defaultGatewayCA {
|
|
t.Errorf("GatewayCA = %q, want default", cfg.GatewayCA)
|
|
}
|
|
if cfg.IMDSBase != defaultIMDSBase {
|
|
t.Errorf("IMDSBase = %q, want default", cfg.IMDSBase)
|
|
}
|
|
if cfg.ContainerdSocket != defaultContainerdSocket {
|
|
t.Errorf("ContainerdSocket = %q, want default", cfg.ContainerdSocket)
|
|
}
|
|
if cfg.ClusterName != "default" {
|
|
t.Errorf("ClusterName = %q, want default", cfg.ClusterName)
|
|
}
|
|
if cfg.Heartbeat != defaultHeartbeat {
|
|
t.Errorf("Heartbeat = %v, want %v", cfg.Heartbeat, defaultHeartbeat)
|
|
}
|
|
if cfg.PollInterval != defaultPollInterval {
|
|
t.Errorf("PollInterval = %v, want %v", cfg.PollInterval, defaultPollInterval)
|
|
}
|
|
}
|
|
|
|
func TestLoadConfig_FileThenEnvOverride(t *testing.T) {
|
|
dir := t.TempDir()
|
|
envFile := filepath.Join(dir, "agent.env")
|
|
body := "# comment\nECS_GATEWAY_URL=https://gw.file\nECS_REGION=us-west-2\nECS_CLUSTER=prod\n"
|
|
if err := os.WriteFile(envFile, []byte(body), 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Setenv("ECS_GATEWAY_URL", "https://gw.env")
|
|
t.Setenv("ECS_ACCESS_KEY", "AKIAENV")
|
|
|
|
cfg := loadConfig(envFile)
|
|
if cfg.GatewayURL != "https://gw.env" {
|
|
t.Errorf("GatewayURL = %q, want env override", cfg.GatewayURL)
|
|
}
|
|
if cfg.Region != "us-west-2" {
|
|
t.Errorf("Region = %q, want from file", cfg.Region)
|
|
}
|
|
if cfg.ClusterName != "prod" {
|
|
t.Errorf("ClusterName = %q, want from file", cfg.ClusterName)
|
|
}
|
|
if cfg.AccessKey != "AKIAENV" {
|
|
t.Errorf("AccessKey = %q, want env", cfg.AccessKey)
|
|
}
|
|
}
|
|
|
|
func TestLoadConfig_HeartbeatOverride(t *testing.T) {
|
|
t.Setenv("ECS_HEARTBEAT_INTERVAL", "5s")
|
|
if cfg := loadConfig(filepath.Join(t.TempDir(), "absent.env")); cfg.Heartbeat != 5*time.Second {
|
|
t.Errorf("Heartbeat = %v, want 5s", cfg.Heartbeat)
|
|
}
|
|
// Garbage value falls back to the default, not zero.
|
|
t.Setenv("ECS_HEARTBEAT_INTERVAL", "not-a-duration")
|
|
if cfg := loadConfig(filepath.Join(t.TempDir(), "absent.env")); cfg.Heartbeat != defaultHeartbeat {
|
|
t.Errorf("Heartbeat = %v, want default on bad value", cfg.Heartbeat)
|
|
}
|
|
}
|