3
3
import com .redislabs .kafka .connect .source .RedisEnterpriseSourceConfig ;
4
4
import com .redislabs .kafka .connect .source .RedisEnterpriseSourceTask ;
5
5
import com .redislabs .testcontainers .RedisServer ;
6
+ import org .apache .kafka .connect .data .Struct ;
6
7
import org .apache .kafka .connect .source .SourceRecord ;
7
8
import org .junit .jupiter .api .AfterEach ;
8
9
import org .junit .jupiter .api .Assertions ;
13
14
import java .util .List ;
14
15
import java .util .Map ;
15
16
16
- import static org .junit .jupiter .api .Assertions .assertEquals ;
17
-
18
17
public class RedisEnterpriseSourceTaskIT extends AbstractRedisEnterpriseIT {
19
18
20
19
private RedisEnterpriseSourceTask task ;
@@ -40,23 +39,30 @@ public void teardown() {
40
39
@ MethodSource ("redisServers" )
41
40
public void pollStream (RedisServer redis ) throws InterruptedException {
42
41
final String stream = "stream1" ;
43
- startTask (redis , RedisEnterpriseSourceConfig .TOPIC , RedisEnterpriseSourceConfig .TOKEN_STREAM , RedisEnterpriseSourceConfig .READER_TYPE , RedisEnterpriseSourceConfig .ReaderType .STREAM .name (), RedisEnterpriseSourceConfig .STREAM_NAME , stream );
42
+ final String topicPrefix = "testprefix-" ;
43
+ startTask (redis , RedisEnterpriseSourceConfig .TOPIC , topicPrefix + RedisEnterpriseSourceConfig .TOKEN_STREAM , RedisEnterpriseSourceConfig .READER_TYPE , RedisEnterpriseSourceConfig .ReaderType .STREAM .name (), RedisEnterpriseSourceConfig .STREAM_NAME , stream );
44
44
String field1 = "field1" ;
45
45
String value1 = "value1" ;
46
46
String field2 = "field2" ;
47
47
String value2 = "value2" ;
48
- syncStream (redis ).xadd (stream , map (field1 , value1 , field2 , value2 ));
49
- syncStream (redis ).xadd (stream , map (field1 , value1 , field2 , value2 ));
50
- syncStream (redis ).xadd (stream , map (field1 , value1 , field2 , value2 ));
48
+ final Map <String , String > body = map (field1 , value1 , field2 , value2 );
49
+ final String id1 = syncStream (redis ).xadd (stream , body );
50
+ final String id2 = syncStream (redis ).xadd (stream , body );
51
+ final String id3 = syncStream (redis ).xadd (stream , body );
51
52
Thread .sleep (100 );
52
53
List <SourceRecord > sourceRecords = task .poll ();
53
- assertEquals (3 , sourceRecords .size ());
54
- for (SourceRecord record : sourceRecords ) {
55
- Assertions .assertEquals (stream , record .topic ());
56
- Map <String , String > map = (Map <String , String >) record .value ();
57
- Assertions .assertEquals (value1 , map .get (field1 ));
58
- Assertions .assertEquals (value2 , map .get (field2 ));
59
- }
54
+ Assertions .assertEquals (3 , sourceRecords .size ());
55
+ assertEquals (id1 , body , stream , topicPrefix + stream , sourceRecords .get (0 ));
56
+ assertEquals (id2 , body , stream , topicPrefix + stream , sourceRecords .get (1 ));
57
+ assertEquals (id3 , body , stream , topicPrefix + stream , sourceRecords .get (2 ));
58
+ }
59
+
60
+ private void assertEquals (String expectedId , Map <String , String > expectedBody , String expectedStream , String expectedTopic , SourceRecord record ) {
61
+ Struct struct = (Struct ) record .value ();
62
+ Assertions .assertEquals (expectedId , struct .get ("id" ));
63
+ Assertions .assertEquals (expectedBody , struct .get ("body" ));
64
+ Assertions .assertEquals (expectedStream , struct .get ("stream" ));
65
+ Assertions .assertEquals (expectedTopic , record .topic ());
60
66
}
61
67
62
68
@ ParameterizedTest
@@ -73,12 +79,12 @@ public void pollKeys(RedisServer redis) throws InterruptedException {
73
79
syncHash (redis ).hset (hashKey , hashValue );
74
80
Thread .sleep (100 );
75
81
List <SourceRecord > sourceRecords = task .poll ();
76
- assertEquals (2 , sourceRecords .size ());
82
+ Assertions . assertEquals (2 , sourceRecords .size ());
77
83
for (SourceRecord record : sourceRecords ) {
78
- assertEquals (topic , record .topic ());
84
+ Assertions . assertEquals (topic , record .topic ());
79
85
}
80
- assertEquals (stringValue , sourceRecords .get (0 ).value ());
81
- assertEquals (hashValue , sourceRecords .get (1 ).value ());
86
+ Assertions . assertEquals (stringValue , sourceRecords .get (0 ).value ());
87
+ Assertions . assertEquals (hashValue , sourceRecords .get (1 ).value ());
82
88
}
83
89
84
90
}
0 commit comments