kubelatte-ce
Форк от sbertech/kubelatte-ce
165 строк · 3.9 Кб
1package grpc
2
3import (
4"context"
5"fmt"
6"github.com/stretchr/testify/mock"
7"gitverse.ru/synapse/kubelatte/pkg/observability/logger"
8"gitverse.ru/synapse/kubelatte/pkg/observability/logger/lib"
9semodles "gitverse.ru/synapse/kubelatte/pkg/sideeffect"
10"gitverse.ru/synapse/kubelatte/pkg/sideeffect/grpc/mocks"
11"gitverse.ru/synapse/kubelatte/pkg/sideeffect/grpc/proto"
12"gitverse.ru/synapse/kubelatte/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 := 8687
21serverAddr := fmt.Sprintf(":%d", port)
22
23lib.ZapLogger = zap.NewNop()
24
25shutdown := StartExecuteServer(port, sideeffect.NewExecutor(nil))
26defer shutdown()
27
28var opts []grpc.DialOption
29opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))
30
31conn, err := grpc.Dial(serverAddr, opts...)
32defer func(conn *grpc.ClientConn) {
33err := conn.Close()
34if err != nil {
35return
36}
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 := 8687
57serverAddr := fmt.Sprintf(":%d", port)
58
59lib.ZapLogger = zap.NewNop()
60
61shutdown := StartExecuteServer(port, sideeffect.NewExecutor(nil))
62defer shutdown()
63
64var opts []grpc.DialOption
65opts = 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.Context
80info *proto.SideEffectInfo
81}
82tests := []struct {
83name string
84args args
85want *proto.EmptyMes
86conn *grpc.ClientConn
87client proto.ExecutorClient
88wantErr bool
89}{
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)
113return
114}
115})
116}
117}
118
119func TestProviderClient_ApplySideEffect(t *testing.T) {
120port := 8687
121serverAddr := fmt.Sprintf(":%d", port)
122
123lib.ZapLogger = zap.NewNop()
124
125shutdown := StartExecuteServer(port, sideeffect.NewExecutor(nil))
126defer shutdown()
127
128var opts []grpc.DialOption
129opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials()))
130
131conn, err := grpc.Dial(serverAddr, opts...)
132defer func(conn *grpc.ClientConn) {
133err := conn.Close()
134if err != nil {
135return
136}
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