Skip to content

Commit 390a2d7

Browse files
committed
Add remaining SQS tests
1 parent d54d803 commit 390a2d7

1 file changed

Lines changed: 119 additions & 3 deletions

File tree

aws/logs_monitoring_go/internal/storing/sqs_test.go

Lines changed: 119 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111

1212
"github.com/DataDog/datadog-serverless-functions/aws/logs_monitoring_go/internal/sdkclient"
1313
"github.com/DataDog/datadog-serverless-functions/aws/logs_monitoring_go/internal/testutil"
14+
"github.com/aws/aws-sdk-go-v2/service/sqs"
15+
"github.com/aws/aws-sdk-go-v2/service/sqs/types"
1416
"github.com/stretchr/testify/require"
1517
"go.uber.org/mock/gomock"
1618
)
@@ -25,15 +27,20 @@ func TestSQS_Store(t *testing.T) {
2527
}{
2628
"five 100KB logs send one message": {
2729
mockSetup: func(m *sdkclient.MockSQS) {
28-
m.EXPECT().SendMessage(gomock.Any(), gomock.Any()).Times(1)
30+
m.EXPECT().
31+
SendMessage(gomock.Any(), gomock.Any()).
32+
Return(nil, nil)
2933
},
3034
batch: Batch{
3135
Data: testutil.GenerateJSONLogs(t, 100*1024, 100*1024, 100*1024, 100*1024, 100*1024),
3236
},
3337
},
3438
"two 512KB logs send two messages": {
3539
mockSetup: func(m *sdkclient.MockSQS) {
36-
m.EXPECT().SendMessage(gomock.Any(), gomock.Any()).Times(2)
40+
m.EXPECT().
41+
SendMessage(gomock.Any(), gomock.Any()).
42+
Times(2).
43+
Return(nil, nil)
3744
},
3845
batch: Batch{
3946
Data: testutil.GenerateJSONLogs(t, 512*1024, 512*1024),
@@ -48,7 +55,9 @@ func TestSQS_Store(t *testing.T) {
4855
},
4956
"error on SendMessage call": {
5057
mockSetup: func(m *sdkclient.MockSQS) {
51-
m.EXPECT().SendMessage(gomock.Any(), gomock.Any()).Return(nil, errors.New("denied"))
58+
m.EXPECT().
59+
SendMessage(gomock.Any(), gomock.Any()).
60+
Return(nil, errors.New("denied"))
5261
},
5362
batch: Batch{
5463
Data: testutil.GenerateJSONLogs(t, 1024),
@@ -76,3 +85,110 @@ func TestSQS_Store(t *testing.T) {
7685
})
7786
}
7887
}
88+
89+
func TestSQS_Fetch(t *testing.T) {
90+
t.Parallel()
91+
92+
tests := map[string]struct {
93+
mockSetup func(m *sdkclient.MockSQS)
94+
wantErr bool
95+
}{
96+
"exit on empty poll": {
97+
mockSetup: func(m *sdkclient.MockSQS) {
98+
gomock.InOrder(
99+
m.EXPECT().
100+
ReceiveMessage(gomock.Any(), gomock.Any()).
101+
Return(&sqs.ReceiveMessageOutput{
102+
Messages: []types.Message{{}},
103+
}, nil),
104+
m.EXPECT().
105+
ReceiveMessage(gomock.Any(), gomock.Any()).
106+
Return(&sqs.ReceiveMessageOutput{
107+
Messages: []types.Message{{}},
108+
}, nil),
109+
m.EXPECT().
110+
ReceiveMessage(gomock.Any(), gomock.Any()).
111+
Return(&sqs.ReceiveMessageOutput{}, nil),
112+
)
113+
},
114+
},
115+
"error on ReceiveMessage": {
116+
mockSetup: func(m *sdkclient.MockSQS) {
117+
m.EXPECT().
118+
ReceiveMessage(gomock.Any(), gomock.Any()).
119+
Return(nil, errors.New("denied"))
120+
},
121+
wantErr: true,
122+
},
123+
}
124+
125+
for name, tc := range tests {
126+
t.Run(name, func(t *testing.T) {
127+
t.Parallel()
128+
129+
ctrl := gomock.NewController(t)
130+
mock := sdkclient.NewMockSQS(ctrl)
131+
tc.mockSetup(mock)
132+
s := newSQS(mock, "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue")
133+
134+
for _, err := range s.Fetch(t.Context()) {
135+
if tc.wantErr {
136+
require.Error(t, err)
137+
return
138+
}
139+
require.NoError(t, err)
140+
}
141+
})
142+
}
143+
}
144+
145+
func TestSQS_Delete(t *testing.T) {
146+
t.Parallel()
147+
148+
tests := map[string]struct {
149+
mockSetup func(m *sdkclient.MockSQS)
150+
batch Batch
151+
wantErr bool
152+
}{
153+
"success": {
154+
mockSetup: func(m *sdkclient.MockSQS) {
155+
m.EXPECT().
156+
DeleteMessage(gomock.Any(), gomock.Any()).
157+
Return(nil, nil)
158+
},
159+
batch: Batch{
160+
DeleteKey: "MbZj6wDWli+JvwwJaBV+3d=",
161+
},
162+
},
163+
"error on DeleteMessage call": {
164+
mockSetup: func(m *sdkclient.MockSQS) {
165+
m.EXPECT().
166+
DeleteMessage(gomock.Any(), gomock.Any()).
167+
Return(nil, errors.New("denied"))
168+
},
169+
batch: Batch{
170+
DeleteKey: "MbZj6wDWli+JvwwJaBV+3d=",
171+
},
172+
wantErr: true,
173+
},
174+
}
175+
176+
for name, tc := range tests {
177+
t.Run(name, func(t *testing.T) {
178+
t.Parallel()
179+
180+
ctrl := gomock.NewController(t)
181+
mock := sdkclient.NewMockSQS(ctrl)
182+
tc.mockSetup(mock)
183+
sqs := newSQS(mock, "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue")
184+
185+
err := sqs.Delete(t.Context(), tc.batch)
186+
187+
if tc.wantErr {
188+
require.Error(t, err)
189+
return
190+
}
191+
require.NoError(t, err)
192+
})
193+
}
194+
}

0 commit comments

Comments
 (0)