31
31
32
32
import org .apache .kafka .connect .data .Schema ;
33
33
import org .apache .kafka .connect .source .SourceRecord ;
34
+ import org .junit .After ;
34
35
import org .junit .Test ;
35
36
36
37
public class MQSourceTaskIT extends AbstractJMSContextIT {
37
38
39
+ private MQSourceTask connectTask = null ;
40
+
41
+ @ After
42
+ public void cleanup () throws InterruptedException {
43
+ SourceTaskStopper stopper = new SourceTaskStopper (connectTask );
44
+ stopper .run ();
45
+ }
46
+
47
+
38
48
private static final String MQ_QUEUE = "DEV.QUEUE.1" ;
39
49
40
50
private Map <String , String > createDefaultConnectorProperties () {
@@ -51,42 +61,42 @@ private Map<String, String> createDefaultConnectorProperties() {
51
61
52
62
@ Test
53
63
public void verifyJmsTextMessages () throws Exception {
54
- MQSourceTask newConnectTask = new MQSourceTask ();
64
+ connectTask = new MQSourceTask ();
55
65
56
66
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
57
67
connectorConfigProps .put ("mq.message.body.jms" , "true" );
58
68
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
59
69
60
- newConnectTask .start (connectorConfigProps );
70
+ connectTask .start (connectorConfigProps );
61
71
62
72
TextMessage message1 = getJmsContext ().createTextMessage ("hello" );
63
73
TextMessage message2 = getJmsContext ().createTextMessage ("world" );
64
74
putAllMessagesToQueue (MQ_QUEUE , Arrays .asList (message1 , message2 ));
65
75
66
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
76
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
67
77
assertEquals (2 , kafkaMessages .size ());
68
78
for (SourceRecord kafkaMessage : kafkaMessages ) {
69
79
assertNull (kafkaMessage .key ());
70
80
assertNull (kafkaMessage .valueSchema ());
81
+
82
+ connectTask .commitRecord (kafkaMessage );
71
83
}
72
84
73
85
assertEquals ("hello" , kafkaMessages .get (0 ).value ());
74
86
assertEquals ("world" , kafkaMessages .get (1 ).value ());
75
-
76
- newConnectTask .stop ();
77
87
}
78
88
79
89
80
90
81
91
@ Test
82
92
public void verifyJmsJsonMessages () throws Exception {
83
- MQSourceTask newConnectTask = new MQSourceTask ();
93
+ connectTask = new MQSourceTask ();
84
94
85
95
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
86
96
connectorConfigProps .put ("mq.message.body.jms" , "true" );
87
97
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
88
98
89
- newConnectTask .start (connectorConfigProps );
99
+ connectTask .start (connectorConfigProps );
90
100
91
101
List <Message > messages = new ArrayList <>();
92
102
for (int i = 0 ; i < 5 ; i ++) {
@@ -97,7 +107,7 @@ public void verifyJmsJsonMessages() throws Exception {
97
107
}
98
108
putAllMessagesToQueue (MQ_QUEUE , messages );
99
109
100
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
110
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
101
111
assertEquals (5 , kafkaMessages .size ());
102
112
for (int i = 0 ; i < 5 ; i ++) {
103
113
SourceRecord kafkaMessage = kafkaMessages .get (i );
@@ -106,23 +116,23 @@ public void verifyJmsJsonMessages() throws Exception {
106
116
107
117
Map <?, ?> value = (Map <?, ?>) kafkaMessage .value ();
108
118
assertEquals (Long .valueOf (i ), value .get ("i" ));
109
- }
110
119
111
- newConnectTask .stop ();
120
+ connectTask .commitRecord (kafkaMessage );
121
+ }
112
122
}
113
123
114
124
115
125
116
126
@ Test
117
127
public void verifyJmsMessageHeaders () throws Exception {
118
- MQSourceTask newConnectTask = new MQSourceTask ();
128
+ connectTask = new MQSourceTask ();
119
129
120
130
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
121
131
connectorConfigProps .put ("mq.message.body.jms" , "true" );
122
132
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
123
133
connectorConfigProps .put ("mq.jms.properties.copy.to.kafka.headers" , "true" );
124
134
125
- newConnectTask .start (connectorConfigProps );
135
+ connectTask .start (connectorConfigProps );
126
136
127
137
TextMessage message = getJmsContext ().createTextMessage ("helloworld" );
128
138
message .setStringProperty ("teststring" , "myvalue" );
@@ -131,7 +141,7 @@ public void verifyJmsMessageHeaders() throws Exception {
131
141
132
142
putAllMessagesToQueue (MQ_QUEUE , Arrays .asList (message ));
133
143
134
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
144
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
135
145
assertEquals (1 , kafkaMessages .size ());
136
146
SourceRecord kafkaMessage = kafkaMessages .get (0 );
137
147
assertNull (kafkaMessage .key ());
@@ -143,21 +153,21 @@ public void verifyJmsMessageHeaders() throws Exception {
143
153
assertEquals ("11" , kafkaMessage .headers ().lastWithName ("volume" ).value ());
144
154
assertEquals ("42.0" , kafkaMessage .headers ().lastWithName ("decimalmeaning" ).value ());
145
155
146
- newConnectTask . stop ( );
156
+ connectTask . commitRecord ( kafkaMessage );
147
157
}
148
158
149
159
150
160
151
161
@ Test
152
162
public void verifyMessageBatchIndividualCommits () throws Exception {
153
- MQSourceTask newConnectTask = new MQSourceTask ();
163
+ connectTask = new MQSourceTask ();
154
164
155
165
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
156
166
connectorConfigProps .put ("mq.message.body.jms" , "true" );
157
167
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
158
168
connectorConfigProps .put ("mq.batch.size" , "10" );
159
169
160
- newConnectTask .start (connectorConfigProps );
170
+ connectTask .start (connectorConfigProps );
161
171
162
172
List <Message > messages = new ArrayList <>();
163
173
for (int i = 1 ; i <= 35 ; i ++) {
@@ -169,49 +179,47 @@ public void verifyMessageBatchIndividualCommits() throws Exception {
169
179
170
180
List <SourceRecord > kafkaMessages ;
171
181
172
- kafkaMessages = newConnectTask .poll ();
182
+ kafkaMessages = connectTask .poll ();
173
183
assertEquals (10 , kafkaMessages .size ());
174
184
for (SourceRecord kafkaMessage : kafkaMessages ) {
175
185
assertEquals ("batch message " + (nextExpectedMessage ++), kafkaMessage .value ());
176
- newConnectTask .commitRecord (kafkaMessage );
186
+ connectTask .commitRecord (kafkaMessage );
177
187
}
178
188
179
- kafkaMessages = newConnectTask .poll ();
189
+ kafkaMessages = connectTask .poll ();
180
190
assertEquals (10 , kafkaMessages .size ());
181
191
for (SourceRecord kafkaMessage : kafkaMessages ) {
182
192
assertEquals ("batch message " + (nextExpectedMessage ++), kafkaMessage .value ());
183
- newConnectTask .commitRecord (kafkaMessage );
193
+ connectTask .commitRecord (kafkaMessage );
184
194
}
185
195
186
- kafkaMessages = newConnectTask .poll ();
196
+ kafkaMessages = connectTask .poll ();
187
197
assertEquals (10 , kafkaMessages .size ());
188
198
for (SourceRecord kafkaMessage : kafkaMessages ) {
189
199
assertEquals ("batch message " + (nextExpectedMessage ++), kafkaMessage .value ());
190
- newConnectTask .commitRecord (kafkaMessage );
200
+ connectTask .commitRecord (kafkaMessage );
191
201
}
192
202
193
- kafkaMessages = newConnectTask .poll ();
203
+ kafkaMessages = connectTask .poll ();
194
204
assertEquals (5 , kafkaMessages .size ());
195
205
for (SourceRecord kafkaMessage : kafkaMessages ) {
196
206
assertEquals ("batch message " + (nextExpectedMessage ++), kafkaMessage .value ());
197
- newConnectTask .commitRecord (kafkaMessage );
207
+ connectTask .commitRecord (kafkaMessage );
198
208
}
199
-
200
- newConnectTask .stop ();
201
209
}
202
210
203
211
204
212
205
213
@ Test
206
214
public void verifyMessageBatchGroupCommits () throws Exception {
207
- MQSourceTask newConnectTask = new MQSourceTask ();
215
+ connectTask = new MQSourceTask ();
208
216
209
217
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
210
218
connectorConfigProps .put ("mq.message.body.jms" , "true" );
211
219
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
212
220
connectorConfigProps .put ("mq.batch.size" , "10" );
213
221
214
- newConnectTask .start (connectorConfigProps );
222
+ connectTask .start (connectorConfigProps );
215
223
216
224
List <Message > messages = new ArrayList <>();
217
225
for (int i = 1 ; i <= 35 ; i ++) {
@@ -221,46 +229,48 @@ public void verifyMessageBatchGroupCommits() throws Exception {
221
229
222
230
List <SourceRecord > kafkaMessages ;
223
231
224
- kafkaMessages = newConnectTask .poll ();
232
+ kafkaMessages = connectTask .poll ();
225
233
assertEquals (10 , kafkaMessages .size ());
226
- newConnectTask .commit ();
227
- newConnectTask .commit ();
234
+ for (SourceRecord m : kafkaMessages ) {
235
+ connectTask .commitRecord (m );
236
+ }
228
237
229
- kafkaMessages = newConnectTask .poll ();
238
+ kafkaMessages = connectTask .poll ();
230
239
assertEquals (10 , kafkaMessages .size ());
231
- newConnectTask .commit ();
232
- newConnectTask .commit ();
240
+ for (SourceRecord m : kafkaMessages ) {
241
+ connectTask .commitRecord (m );
242
+ }
233
243
234
- kafkaMessages = newConnectTask .poll ();
244
+ kafkaMessages = connectTask .poll ();
235
245
assertEquals (10 , kafkaMessages .size ());
236
- newConnectTask .commit ();
237
- newConnectTask .commit ();
246
+ for (SourceRecord m : kafkaMessages ) {
247
+ connectTask .commitRecord (m );
248
+ }
238
249
239
- kafkaMessages = newConnectTask .poll ();
250
+ kafkaMessages = connectTask .poll ();
240
251
assertEquals (5 , kafkaMessages .size ());
241
- newConnectTask .commit ();
242
- newConnectTask .commit ();
243
-
244
- newConnectTask .stop ();
252
+ for (SourceRecord m : kafkaMessages ) {
253
+ connectTask .commitRecord (m );
254
+ }
245
255
}
246
256
247
257
248
258
249
259
@ Test
250
260
public void verifyMessageIdAsKey () throws Exception {
251
- MQSourceTask newConnectTask = new MQSourceTask ();
261
+ connectTask = new MQSourceTask ();
252
262
253
263
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
254
264
connectorConfigProps .put ("mq.message.body.jms" , "true" );
255
265
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
256
266
connectorConfigProps .put ("mq.record.builder.key.header" , "JMSMessageID" );
257
267
258
- newConnectTask .start (connectorConfigProps );
268
+ connectTask .start (connectorConfigProps );
259
269
260
270
TextMessage message = getJmsContext ().createTextMessage ("testmessage" );
261
271
putAllMessagesToQueue (MQ_QUEUE , Arrays .asList (message ));
262
272
263
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
273
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
264
274
assertEquals (1 , kafkaMessages .size ());
265
275
266
276
SourceRecord kafkaMessage = kafkaMessages .get (0 );
@@ -270,62 +280,62 @@ public void verifyMessageIdAsKey() throws Exception {
270
280
271
281
assertEquals ("testmessage" , kafkaMessage .value ());
272
282
273
- newConnectTask . stop ( );
283
+ connectTask . commitRecord ( kafkaMessage );
274
284
}
275
285
276
286
277
287
278
288
@ Test
279
289
public void verifyCorrelationIdAsKey () throws Exception {
280
- MQSourceTask newConnectTask = new MQSourceTask ();
290
+ connectTask = new MQSourceTask ();
281
291
282
292
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
283
293
connectorConfigProps .put ("mq.message.body.jms" , "true" );
284
294
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
285
295
connectorConfigProps .put ("mq.record.builder.key.header" , "JMSCorrelationID" );
286
296
287
- newConnectTask .start (connectorConfigProps );
297
+ connectTask .start (connectorConfigProps );
288
298
289
299
TextMessage message1 = getJmsContext ().createTextMessage ("first message" );
290
300
message1 .setJMSCorrelationID ("verifycorrel" );
291
301
TextMessage message2 = getJmsContext ().createTextMessage ("second message" );
292
302
message2 .setJMSCorrelationID ("ID:5fb4a18030154fe4b09a1dfe8075bc101dfe8075bc104fe4" );
293
303
putAllMessagesToQueue (MQ_QUEUE , Arrays .asList (message1 , message2 ));
294
304
295
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
305
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
296
306
assertEquals (2 , kafkaMessages .size ());
297
307
298
308
SourceRecord kafkaMessage1 = kafkaMessages .get (0 );
299
309
assertEquals ("verifycorrel" , kafkaMessage1 .key ());
300
310
assertEquals (Schema .OPTIONAL_STRING_SCHEMA , kafkaMessage1 .keySchema ());
301
311
assertEquals ("first message" , kafkaMessage1 .value ());
312
+ connectTask .commitRecord (kafkaMessage1 );
302
313
303
314
SourceRecord kafkaMessage2 = kafkaMessages .get (1 );
304
315
assertEquals ("5fb4a18030154fe4b09a1dfe8075bc101dfe8075bc104fe4" , kafkaMessage2 .key ());
305
316
assertEquals (Schema .OPTIONAL_STRING_SCHEMA , kafkaMessage2 .keySchema ());
306
317
assertEquals ("second message" , kafkaMessage2 .value ());
307
-
308
- newConnectTask .stop ();
318
+ connectTask .commitRecord (kafkaMessage2 );
309
319
}
310
320
311
321
312
322
313
323
@ Test
314
324
public void verifyCorrelationIdBytesAsKey () throws Exception {
315
- MQSourceTask newConnectTask = new MQSourceTask ();
325
+ connectTask = new MQSourceTask ();
316
326
317
327
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
318
328
connectorConfigProps .put ("mq.message.body.jms" , "true" );
319
329
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
320
330
connectorConfigProps .put ("mq.record.builder.key.header" , "JMSCorrelationIDAsBytes" );
321
331
322
- newConnectTask .start (connectorConfigProps );
332
+ connectTask .start (connectorConfigProps );
323
333
324
334
TextMessage message = getJmsContext ().createTextMessage ("testmessagewithcorrelbytes" );
325
335
message .setJMSCorrelationID ("verifycorrelbytes" );
326
336
putAllMessagesToQueue (MQ_QUEUE , Arrays .asList (message ));
327
337
328
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
338
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
329
339
assertEquals (1 , kafkaMessages .size ());
330
340
331
341
SourceRecord kafkaMessage = kafkaMessages .get (0 );
@@ -334,26 +344,26 @@ public void verifyCorrelationIdBytesAsKey() throws Exception {
334
344
335
345
assertEquals ("testmessagewithcorrelbytes" , kafkaMessage .value ());
336
346
337
- newConnectTask . stop ( );
347
+ connectTask . commitRecord ( kafkaMessage );
338
348
}
339
349
340
350
341
351
342
352
@ Test
343
353
public void verifyDestinationAsKey () throws Exception {
344
- MQSourceTask newConnectTask = new MQSourceTask ();
354
+ connectTask = new MQSourceTask ();
345
355
346
356
Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
347
357
connectorConfigProps .put ("mq.message.body.jms" , "true" );
348
358
connectorConfigProps .put ("mq.record.builder" , "com.ibm.eventstreams.connect.mqsource.builders.DefaultRecordBuilder" );
349
359
connectorConfigProps .put ("mq.record.builder.key.header" , "JMSDestination" );
350
360
351
- newConnectTask .start (connectorConfigProps );
361
+ connectTask .start (connectorConfigProps );
352
362
353
363
TextMessage message = getJmsContext ().createTextMessage ("testmessagewithdest" );
354
364
putAllMessagesToQueue (MQ_QUEUE , Arrays .asList (message ));
355
365
356
- List <SourceRecord > kafkaMessages = newConnectTask .poll ();
366
+ List <SourceRecord > kafkaMessages = connectTask .poll ();
357
367
assertEquals (1 , kafkaMessages .size ());
358
368
359
369
SourceRecord kafkaMessage = kafkaMessages .get (0 );
@@ -362,6 +372,6 @@ public void verifyDestinationAsKey() throws Exception {
362
372
363
373
assertEquals ("testmessagewithdest" , kafkaMessage .value ());
364
374
365
- newConnectTask . stop ( );
375
+ connectTask . commitRecord ( kafkaMessage );
366
376
}
367
377
}
0 commit comments