11package cloud .localstack .awssdkv1 ;
22
33import cloud .localstack .LocalstackTestRunner ;
4- import cloud .localstack .awssdkv1 . TestUtils ;
4+ import cloud .localstack .docker . annotation .* ;
55
66import com .amazonaws .services .kinesis .AmazonKinesisAsync ;
77import com .amazonaws .services .kinesis .model .CreateStreamRequest ;
1010import com .amazonaws .services .kinesis .model .GetRecordsResult ;
1111import com .amazonaws .services .kinesis .model .GetShardIteratorRequest ;
1212import com .amazonaws .SDKGlobalConfiguration ;
13+ import com .amazonaws .services .kinesis .model .ResourceInUseException ;
1314
1415import org .junit .Assert ;
1516import org .junit .Test ;
2122import java .nio .ByteBuffer ;
2223
2324@ RunWith (LocalstackTestRunner .class )
25+ @ LocalstackDockerProperties (ignoreDockerRunErrors =true )
2426public class KinesisConsumerTest {
2527
26- @ Test
27- public void testGetRecordCBOR () throws Exception {
28- String streamName = "test-s-" + UUID .randomUUID ().toString ();
29- AmazonKinesisAsync kinesisClient = TestUtils .getClientKinesisAsync ();
28+ @ Test
29+ public void testGetRecordCBOR () throws Exception {
30+ String valueBefore = this .getCborDisableConfig ();
31+ System .setProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY , "false" );
32+ try {
33+ this .runGetRecord ();
34+ } finally {
35+ System .setProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY , valueBefore );
36+ }
37+ }
38+
39+ @ Test
40+ public void testGetRecordJSON () throws Exception {
41+ String valueBefore = this .getCborDisableConfig ();
42+ System .setProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY , "true" );
43+ try {
44+ this .runGetRecord ();
45+ } finally {
46+ System .setProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY , valueBefore );
47+ }
48+ }
49+
50+ private String getCborDisableConfig () {
51+ String valueBefore = System .getProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY );
52+ valueBefore = valueBefore == null ? "" : valueBefore ;
53+ return valueBefore ;
54+ }
55+
56+ private void runGetRecord () throws Exception {
57+ String streamName = "test-s-" + UUID .randomUUID ().toString ();
58+ AmazonKinesisAsync kinesisClient = TestUtils .getClientKinesisAsync ();
59+
60+ try {
61+ CreateStreamRequest createStreamRequest = new CreateStreamRequest ();
62+ createStreamRequest .setStreamName (streamName );
63+ createStreamRequest .setShardCount (1 );
64+
65+ kinesisClient .createStream (createStreamRequest );
66+ TimeUnit .SECONDS .sleep (1 );
67+ } catch (ResourceInUseException e ) { /* ignore */ }
68+
69+ PutRecordRequest putRecordRequest = new PutRecordRequest ();
70+ putRecordRequest .setPartitionKey ("partitionkey" );
71+ putRecordRequest .setStreamName (streamName );
72+
73+ String message = "Hello world!" ;
74+ putRecordRequest .setData (ByteBuffer .wrap (message .getBytes ()));
75+
76+ String shardId = kinesisClient .putRecord (putRecordRequest ).getShardId ();
77+
78+ GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest ();
79+ getShardIteratorRequest .setShardId (shardId );
80+ getShardIteratorRequest .setShardIteratorType ("TRIM_HORIZON" );
81+ getShardIteratorRequest .setStreamName (streamName );
82+
83+ String shardIterator = kinesisClient .getShardIterator (getShardIteratorRequest ).getShardIterator ();
84+
85+ GetRecordsRequest getRecordRequest = new GetRecordsRequest ();
86+ getRecordRequest .setShardIterator (shardIterator );
87+
88+ getRecordRequest .setShardIterator (shardIterator );
89+ GetRecordsResult recordsResponse = kinesisClient .getRecords (getRecordRequest );
90+
91+ List <String > records = recordsResponse .getRecords ().stream ().map (r -> new String (r .getData ().array ()))
92+ .collect (Collectors .toList ());
93+ Assert .assertEquals (message , records .get (0 ));
94+ }
3095
31- CreateStreamRequest createStreamRequest = new CreateStreamRequest ();
32- createStreamRequest .setStreamName (streamName );
33- createStreamRequest .setShardCount (1 );
34-
35- kinesisClient .createStream (createStreamRequest );
36- TimeUnit .SECONDS .sleep (2 );
37-
38- PutRecordRequest putRecordRequest = new PutRecordRequest ();
39- putRecordRequest .setPartitionKey ("partitionkey" );
40- putRecordRequest .setStreamName (streamName );
41-
42- String message = "Hello world!" ;
43- putRecordRequest .setData (ByteBuffer .wrap (message .getBytes ()));
44-
45- String shardId = kinesisClient .putRecord (putRecordRequest ).getShardId ();
46-
47- GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest ();
48- getShardIteratorRequest .setShardId (shardId );
49- getShardIteratorRequest .setShardIteratorType ("TRIM_HORIZON" );
50- getShardIteratorRequest .setStreamName (streamName );
51-
52- String shardIterator = kinesisClient .getShardIterator (getShardIteratorRequest ).getShardIterator ();
53-
54- GetRecordsRequest getRecordRequest = new GetRecordsRequest ();
55- getRecordRequest .setShardIterator (shardIterator );
56-
57- getRecordRequest .setShardIterator (shardIterator );
58- GetRecordsResult recordsResponse = kinesisClient .getRecords (getRecordRequest );
59-
60- List <String > records = recordsResponse .getRecords ().stream ().map (r -> new String (r .getData ().array ()))
61- .collect (Collectors .toList ());
62- Assert .assertEquals (message , records .get (0 ));
63- }
64-
65- @ Test
66- public void testGetRecordJSON () throws Exception {
67- System .setProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY , "true" );
68- this .testGetRecordCBOR ();
69- System .setProperty (SDKGlobalConfiguration .AWS_CBOR_DISABLE_SYSTEM_PROPERTY , "false" );
70- }
7196}
0 commit comments