@@ -72,6 +72,29 @@ func (t *TestProvider) Close(ctx context.Context) error {
72
72
return nil
73
73
}
74
74
75
+ // Test Multipart Message Provider
76
+ type TestMultipartProvider struct {
77
+ queue string
78
+ }
79
+
80
+ func NewTestMultipartProvider (queue string ) TestMultipartProvider {
81
+ return TestMultipartProvider {queue }
82
+ }
83
+
84
+ func (t * TestMultipartProvider ) ReceiveMessage (context.Context ) (messaging.Message , error ) {
85
+ time .Sleep (2 * time .Second )
86
+
87
+ return & TestMessage {
88
+ item : "test-message" ,
89
+ bucket : t .queue ,
90
+ event : messaging .CompleteMultipartUpload ,
91
+ }, nil
92
+ }
93
+
94
+ func (t * TestMultipartProvider ) Close (ctx context.Context ) error {
95
+ return nil
96
+ }
97
+
75
98
// Test Message Provider builder
76
99
type TestMpBuilder struct {
77
100
}
@@ -81,6 +104,15 @@ func (tb *TestMpBuilder) GetMessageProvider(config messaging.MessageProviderConf
81
104
return & provider , nil
82
105
}
83
106
107
+ // Test Message Provider builder
108
+ type TestMpMultipartBuilder struct {
109
+ }
110
+
111
+ func (tb * TestMpMultipartBuilder ) GetMessageProvider (config messaging.MessageProviderConfig ) (messaging.MessageProvider , error ) {
112
+ provider := NewTestMultipartProvider (config .Queue )
113
+ return & provider , nil
114
+ }
115
+
84
116
// Test Bucket
85
117
type TestBucket struct {
86
118
}
@@ -108,13 +140,14 @@ func TestS3Collector(t *testing.T) {
108
140
ctx := context .Background ()
109
141
110
142
t .Run ("no polling" , func (t * testing.T ) { testNoPolling (t , ctx ) })
111
- t .Run ("queues split polling" , func (t * testing.T ) { testQueuesSplitPolling (t , ctx ) })
143
+ t .Run ("queues split polling" , func (t * testing.T ) { testQueuesSplitPolling (t , ctx , & TestMpBuilder {}) })
144
+ t .Run ("multipart queues split polling" , func (t * testing.T ) { testQueuesSplitPolling (t , ctx , & TestMpMultipartBuilder {}) })
112
145
}
113
146
114
- func testQueuesSplitPolling (t * testing.T , ctx context.Context ) {
147
+ func testQueuesSplitPolling (t * testing.T , ctx context.Context , mpBuilder messaging. MessageProviderBuilder ) {
115
148
s3Collector := NewS3Collector (S3CollectorConfig {
116
149
Queues : "q1,q2" ,
117
- MpBuilder : & TestMpBuilder {} ,
150
+ MpBuilder : mpBuilder ,
118
151
BucketBuilder : & TestBucketBuilder {},
119
152
Poll : true ,
120
153
})
0 commit comments