56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
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)
|
|
}
|
|
}
|