123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package zrpc
- import (
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- "github.com/tal-tech/go-zero/core/discov"
- "github.com/tal-tech/go-zero/core/logx"
- "github.com/tal-tech/go-zero/core/netx"
- "github.com/tal-tech/go-zero/core/service"
- "github.com/tal-tech/go-zero/core/stat"
- "github.com/tal-tech/go-zero/core/stores/redis"
- "github.com/tal-tech/go-zero/zrpc/internal"
- "github.com/tal-tech/go-zero/zrpc/internal/serverinterceptors"
- "google.golang.org/grpc"
- )
- func TestFigureOutListenOn(t *testing.T) {
- tests := []struct {
- input string
- expect string
- }{
- {
- input: "192.168.0.5:1234",
- expect: "192.168.0.5:1234",
- },
- {
- input: "0.0.0.0:8080",
- expect: netx.InternalIp() + ":8080",
- },
- {
- input: ":8080",
- expect: netx.InternalIp() + ":8080",
- },
- }
- for _, test := range tests {
- val := figureOutListenOn(test.input)
- assert.Equal(t, test.expect, val)
- }
- }
- func TestServer_setupInterceptors(t *testing.T) {
- server := new(mockedServer)
- err := setupInterceptors(server, RpcServerConf{
- Auth: true,
- Redis: redis.RedisKeyConf{
- RedisConf: redis.RedisConf{
- Host: "any",
- Type: redis.NodeType,
- },
- Key: "foo",
- },
- CpuThreshold: 10,
- Timeout: 100,
- }, new(stat.Metrics))
- assert.Nil(t, err)
- assert.Equal(t, 3, len(server.unaryInterceptors))
- assert.Equal(t, 1, len(server.streamInterceptors))
- }
- func TestServer(t *testing.T) {
- srv := MustNewServer(RpcServerConf{
- ServiceConf: service.ServiceConf{
- Log: logx.LogConf{
- ServiceName: "foo",
- Mode: "console",
- },
- },
- ListenOn: ":8080",
- Etcd: discov.EtcdConf{},
- Auth: false,
- Redis: redis.RedisKeyConf{},
- StrictControl: false,
- Timeout: 0,
- CpuThreshold: 0,
- }, func(server *grpc.Server) {
- })
- srv.AddOptions(grpc.ConnectionTimeout(time.Hour))
- srv.AddUnaryInterceptors(serverinterceptors.UnaryCrashInterceptor())
- srv.AddStreamInterceptors(serverinterceptors.StreamCrashInterceptor)
- go srv.Start()
- srv.Stop()
- }
- func TestServerError(t *testing.T) {
- _, err := NewServer(RpcServerConf{
- ServiceConf: service.ServiceConf{
- Log: logx.LogConf{
- ServiceName: "foo",
- Mode: "console",
- },
- },
- ListenOn: ":8080",
- Etcd: discov.EtcdConf{
- Hosts: []string{"localhost"},
- },
- Auth: true,
- Redis: redis.RedisKeyConf{},
- }, func(server *grpc.Server) {
- })
- assert.NotNil(t, err)
- }
- func TestServer_HasEtcd(t *testing.T) {
- srv := MustNewServer(RpcServerConf{
- ServiceConf: service.ServiceConf{
- Log: logx.LogConf{
- ServiceName: "foo",
- Mode: "console",
- },
- },
- ListenOn: ":8080",
- Etcd: discov.EtcdConf{
- Hosts: []string{"notexist"},
- Key: "any",
- },
- Redis: redis.RedisKeyConf{},
- }, func(server *grpc.Server) {
- })
- srv.AddOptions(grpc.ConnectionTimeout(time.Hour))
- srv.AddUnaryInterceptors(serverinterceptors.UnaryCrashInterceptor())
- srv.AddStreamInterceptors(serverinterceptors.StreamCrashInterceptor)
- go srv.Start()
- srv.Stop()
- }
- type mockedServer struct {
- unaryInterceptors []grpc.UnaryServerInterceptor
- streamInterceptors []grpc.StreamServerInterceptor
- }
- func (m *mockedServer) AddOptions(options ...grpc.ServerOption) {
- }
- func (m *mockedServer) AddStreamInterceptors(interceptors ...grpc.StreamServerInterceptor) {
- m.streamInterceptors = append(m.streamInterceptors, interceptors...)
- }
- func (m *mockedServer) AddUnaryInterceptors(interceptors ...grpc.UnaryServerInterceptor) {
- m.unaryInterceptors = append(m.unaryInterceptors, interceptors...)
- }
- func (m *mockedServer) SetName(s string) {
- }
- func (m *mockedServer) Start(register internal.RegisterFn) error {
- return nil
- }
|