github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/protobuf/plugin/raftproxy/test/raftproxy_test.go (about)

     1  package test
     2  
     3  import (
     4  	"context"
     5  	"net"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/docker/swarmkit/testutils"
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  
    13  	"google.golang.org/grpc"
    14  	"google.golang.org/grpc/codes"
    15  )
    16  
    17  type testRouteGuide struct{}
    18  
    19  func (testRouteGuide) GetFeature(context.Context, *Point) (*Feature, error) {
    20  	panic("not implemented")
    21  }
    22  
    23  func (testRouteGuide) ListFeatures(*Rectangle, RouteGuide_ListFeaturesServer) error {
    24  	panic("not implemented")
    25  }
    26  
    27  func (testRouteGuide) RecordRoute(RouteGuide_RecordRouteServer) error {
    28  	panic("not implemented")
    29  }
    30  
    31  func (testRouteGuide) RouteChat(RouteGuide_RouteChatServer) error {
    32  	panic("not implemented")
    33  }
    34  
    35  type mockCluster struct {
    36  	conn *grpc.ClientConn
    37  }
    38  
    39  func (m *mockCluster) LeaderConn(ctx context.Context) (*grpc.ClientConn, error) {
    40  	return m.conn, nil
    41  }
    42  
    43  func TestSimpleRedirect(t *testing.T) {
    44  	l, err := net.Listen("tcp", "127.0.0.1:0")
    45  	require.NoError(t, err)
    46  	addr := l.Addr().String()
    47  	conn, err := grpc.Dial(addr, grpc.WithInsecure(), grpc.WithTimeout(5*time.Second))
    48  	require.NoError(t, err)
    49  	defer conn.Close()
    50  
    51  	cluster := &mockCluster{conn: conn}
    52  
    53  	forwardAsOwnRequest := func(ctx context.Context) (context.Context, error) { return ctx, nil }
    54  	api := NewRaftProxyRouteGuideServer(testRouteGuide{}, cluster, nil, forwardAsOwnRequest)
    55  	srv := grpc.NewServer()
    56  	RegisterRouteGuideServer(srv, api)
    57  	go srv.Serve(l)
    58  	defer srv.Stop()
    59  
    60  	client := NewRouteGuideClient(conn)
    61  	_, err = client.GetFeature(context.Background(), &Point{})
    62  	assert.NotNil(t, err)
    63  	assert.Equal(t, codes.ResourceExhausted, testutils.ErrorCode(err))
    64  }