live-sfu-demo/internal/server/grpc_test.go

56 lines
1.5 KiB
Go

package server
import (
"context"
"net"
"testing"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"sync-live/gen"
"sync-live/internal/config"
"sync-live/internal/sfu/cloudflare"
"sync-live/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.RegisterSyncLiveServer(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.NewSyncLiveClient(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)
}
}