kubelatte-ce
Форк от sbertech/kubelatte-ce
165 строк · 3.9 Кб
1package grpc2
3import (4"context"5"fmt"6"github.com/stretchr/testify/mock"7"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/observability/logger"8"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/observability/logger/lib"9semodles "gitverse.ru/ktrntrsv/kubelatte-ce/pkg/sideeffect"10"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/sideeffect/grpc/mocks"11"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/sideeffect/grpc/proto"12"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/sideeffect/sideeffect"13"go.uber.org/zap"14"google.golang.org/grpc"15"google.golang.org/grpc/credentials/insecure"16"testing"17)
18
19func TestExecutorClient_GetClientError(t *testing.T) {20port := 868721serverAddr := fmt.Sprintf(":%d", port)22
23lib.ZapLogger = zap.NewNop()24
25shutdown := StartExecuteServer(port, sideeffect.NewExecutor(nil))26defer shutdown()27
28var opts []grpc.DialOption29opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))30
31conn, err := grpc.Dial(serverAddr, opts...)32defer func(conn *grpc.ClientConn) {33err := conn.Close()34if err != nil {35return36}37}(conn)38if err != nil {39t.Errorf("[ProviderClient] fail to dial: %s", err.Error())40}41
42executorCleint := &ProviderClient{conn: conn}43
44cli, done := executorCleint.GetClient()45
46if done {47t.Errorf("getClient() 'done' should not be 'true'")48}49
50if cli == nil {51t.Errorf("getClient() 'client' should be not be nil")52}53}
54
55func TestExecutorClient_StartSideEffect(t *testing.T) {56port := 868757serverAddr := fmt.Sprintf(":%d", port)58
59lib.ZapLogger = zap.NewNop()60
61shutdown := StartExecuteServer(port, sideeffect.NewExecutor(nil))62defer shutdown()63
64var opts []grpc.DialOption65opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))66
67conn, err := grpc.Dial(serverAddr, opts...)68defer func(conn *grpc.ClientConn) {69_ = conn.Close()70}(conn)71if err != nil {72t.Errorf("[ProviderClient] fail to dial: %s", err.Error())73}74
75client := mocks.NewExecutorClient(t)76client.On("DoSideEffect", mock.Anything, mock.Anything).Return(&proto.EmptyMes{}, nil).Maybe()77
78type args struct {79ctx context.Context80info *proto.SideEffectInfo81}82tests := []struct {83name string84args args
85want *proto.EmptyMes86conn *grpc.ClientConn87client proto.ExecutorClient88wantErr bool89}{90{91name: "happy doSideEffect",92args: args{93ctx: context.Background(),94info: &proto.SideEffectInfo{},95},96wantErr: false,97conn: conn,98client: client,99want: &proto.EmptyMes{},100},101}102
103for _, tt := range tests {104t.Run(tt.name, func(t *testing.T) {105w := ProviderClient{106client: tt.client,107conn: tt.conn,108}109
110_, err = w.DoSideEffect(tt.args.ctx, tt.args.info)111if (err != nil) != tt.wantErr {112t.Errorf("doSideEffect() error = %v, wantErr %v", err, tt.wantErr)113return114}115})116}117}
118
119func TestProviderClient_ApplySideEffect(t *testing.T) {120port := 8687121serverAddr := fmt.Sprintf(":%d", port)122
123lib.ZapLogger = zap.NewNop()124
125shutdown := StartExecuteServer(port, sideeffect.NewExecutor(nil))126defer shutdown()127
128var opts []grpc.DialOption129opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))130
131conn, err := grpc.Dial(serverAddr, opts...)132defer func(conn *grpc.ClientConn) {133err := conn.Close()134if err != nil {135return136}137}(conn)138if err != nil {139t.Errorf("[ProviderClient] fail to dial: %s", err.Error())140}141
142cli := mocks.NewExecutorClient(t)143cli.On("DoSideEffect", mock.Anything, mock.Anything).Return(nil, nil).Maybe()144provider := ProviderClient{client: cli, conn: conn}145
146ctx := context.WithValue(context.Background(), logger.LoggerKey, "sth")147_ = provider.ApplySideEffect(ctx, &semodles.SE{148Configs: semodles.Configs{149Kind: "",150ApiVersion: "",151ParentTag: 0,152TriggerRef: semodles.TriggerRef{153SideEffectConfig: "",154Name: "",155Namespace: "",156},157Metadata: semodles.Metadata{158Namespace: "",159Name: "",160},161TemplateRefs: nil,162},163SeMode: 0,164})165}
166