package server import ( "context" "net" "testing" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "gospeak-live-sfu-demo/gen" "gospeak-live-sfu-demo/internal/config" "gospeak-live-sfu-demo/internal/sfu/cloudflare" "gospeak-live-sfu-demo/internal/sfu/srs" ) // TestGRPCGetConfig 校验 protobuf/gRPC 控制面:生成的服务端 + 生成的客户端能互通。 func TestGRPCGetConfig(t *testing.T) { cfg := &config.Config{ ProviderOrder: "cloudflare,srs", SRSBaseURL: "http://localhost:1985", SRSCandidate: "127.0.0.1", TokenSecret: "x", } hub := newRoomHub() cf := cloudflare.NewProvider(cfg.CFAppID, cfg.CFAppSecret, cfg.CFBaseURL, cfg.CFStunURL) srsP := srs.NewProvider(cfg.SRSBaseURL, cfg.SRSApp, cfg.SRSSecret, cfg.SRSCandidate) svc := NewService(cfg, cf, srsP, hub) gs := grpc.NewServer() gen.RegisterLiveSFUServer(gs, NewGRPCServer(svc)) lis, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { t.Fatalf("listen: %v", err) } go func() { _ = gs.Serve(lis) }() defer gs.Stop() conn, err := grpc.NewClient(lis.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { t.Fatalf("dial: %v", err) } defer conn.Close() cli := gen.NewLiveSFUClient(conn) resp, err := cli.GetConfig(context.Background(), &gen.GetConfigRequest{}) if err != nil { t.Fatalf("GetConfig: %v", err) } if len(resp.Backends) == 0 { t.Fatal("expected backends in config") } if resp.Backends[0].Kind != gen.BackendKind_BACKEND_KIND_CLOUDFLARE { t.Fatalf("cloudflare should be primary, got %v", resp.Backends[0].Kind) } }