123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package internal
- import (
- "context"
- "net"
- "strings"
- "sync"
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- "google.golang.org/grpc"
- )
- func TestWithDialOption(t *testing.T) {
- var options ClientOptions
- agent := grpc.WithUserAgent("chrome")
- opt := WithDialOption(agent)
- opt(&options)
- assert.Contains(t, options.DialOptions, agent)
- }
- func TestWithTimeout(t *testing.T) {
- var options ClientOptions
- opt := WithTimeout(time.Second)
- opt(&options)
- assert.Equal(t, time.Second, options.Timeout)
- }
- func TestWithNonBlock(t *testing.T) {
- var options ClientOptions
- opt := WithNonBlock()
- opt(&options)
- assert.True(t, options.NonBlock)
- }
- func TestWithStreamClientInterceptor(t *testing.T) {
- var options ClientOptions
- opt := WithStreamClientInterceptor(func(ctx context.Context, desc *grpc.StreamDesc,
- cc *grpc.ClientConn, method string, streamer grpc.Streamer,
- opts ...grpc.CallOption) (grpc.ClientStream, error) {
- return nil, nil
- })
- opt(&options)
- assert.Equal(t, 1, len(options.DialOptions))
- }
- func TestWithTransportCredentials(t *testing.T) {
- var options ClientOptions
- opt := WithTransportCredentials(nil)
- opt(&options)
- assert.Equal(t, 1, len(options.DialOptions))
- }
- func TestWithUnaryClientInterceptor(t *testing.T) {
- var options ClientOptions
- opt := WithUnaryClientInterceptor(func(ctx context.Context, method string, req, reply any,
- cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
- return nil
- })
- opt(&options)
- assert.Equal(t, 1, len(options.DialOptions))
- }
- func TestBuildDialOptions(t *testing.T) {
- c := client{
- middlewares: ClientMiddlewaresConf{
- Trace: true,
- Duration: true,
- Prometheus: true,
- Breaker: true,
- Timeout: true,
- },
- }
- agent := grpc.WithUserAgent("chrome")
- opts := c.buildDialOptions(WithDialOption(agent))
- assert.Contains(t, opts, agent)
- }
- func TestClientDial(t *testing.T) {
- var addr string
- var wg sync.WaitGroup
- wg.Add(1)
- server := grpc.NewServer()
- go func() {
- lis, err := net.Listen("tcp", "localhost:0")
- assert.NoError(t, err)
- defer lis.Close()
- addr = lis.Addr().String()
- wg.Done()
- server.Serve(lis)
- }()
- wg.Wait()
- c, err := NewClient(addr, ClientMiddlewaresConf{
- Trace: true,
- Duration: true,
- Prometheus: true,
- Breaker: true,
- Timeout: true,
- })
- assert.NoError(t, err)
- assert.NotNil(t, c.Conn())
- server.Stop()
- }
- func TestClientDialFail(t *testing.T) {
- _, err := NewClient("localhost:54321", ClientMiddlewaresConf{
- Trace: true,
- Duration: true,
- Prometheus: true,
- Breaker: true,
- Timeout: true,
- })
- assert.Error(t, err)
- assert.True(t, strings.Contains(err.Error(), "localhost:54321"))
- _, err = NewClient("localhost:54321/fail", ClientMiddlewaresConf{
- Trace: true,
- Duration: true,
- Prometheus: true,
- Breaker: true,
- Timeout: true,
- })
- assert.Error(t, err)
- assert.True(t, strings.Contains(err.Error(), "localhost:54321/fail"))
- }
|