// Package config 验证 im-service YAML 配置加载契约。 package config import "testing" // TestLoad 验证 im-service 的本地 config.yaml 能被正常读取。 func TestLoad(t *testing.T) { // 读取真实本地配置文件,确保默认 13xxx 端口和 room-service 地址没有漂移。 cfg, err := Load("../../configs/config.yaml") if err != nil { t.Fatalf("Load failed: %v", err) } // im-service 对外 HTTP/WS 和内部 gRPC 端口必须保持分离。 if cfg.HTTPAddr != ":13002" || cfg.GRPCAddr != ":13003" { t.Fatalf("unexpected listen addrs: http=%s grpc=%s", cfg.HTTPAddr, cfg.GRPCAddr) } // 本地默认 room-service 地址是发言和 presence 守卫链路的基础契约。 if cfg.RoomServiceAddr != "127.0.0.1:13001" { t.Fatalf("unexpected room addr: %s", cfg.RoomServiceAddr) } // IM 下线需要给 WS 客户端明确重连窗口,配置文件必须显式覆盖默认 timeout 契约。 if cfg.ShutdownTimeout == 0 || cfg.HTTPDrainTimeout == 0 || cfg.GRPCDrainTimeout == 0 || cfg.WSDrainTimeout == 0 { t.Fatalf("shutdown timeouts must be configured: %+v", cfg) } }