1- package cloud .localstack . awssdkv1 ;
1+ package cloud .localstack ;
22
33import cloud .localstack .LocalstackTestRunner ;
4+ import cloud .localstack .awssdkv1 .TestUtils ;
45
56import com .amazonaws .services .kinesis .AmazonKinesisAsync ;
67import com .amazonaws .services .kinesis .model .CreateStreamRequest ;
78import com .amazonaws .services .kinesis .model .PutRecordRequest ;
8- import com .amazonaws .services .kinesis .model .PutRecordResult ;
99import com .amazonaws .services .kinesis .model .GetRecordsRequest ;
1010import com .amazonaws .services .kinesis .model .GetRecordsResult ;
1111import com .amazonaws .services .kinesis .model .GetShardIteratorRequest ;
12- import com .amazonaws .services .kinesis .model .Record ;
13- import com .amazonaws .internal .SdkInternalList ;
12+ import com .amazonaws .SDKGlobalConfiguration ;
1413
15- import static org .junit .Assert .assertEquals ;
16- import static org .junit .Assert .assertNotNull ;
1714import org .junit .Assert ;
1815import org .junit .Test ;
1916import org .junit .runner .RunWith ;
2017
21- import static java .lang .System .out ;
2218import java .util .*;
2319import java .util .concurrent .TimeUnit ;
20+ import java .util .stream .Collectors ;
2421import java .nio .ByteBuffer ;
2522
2623@ RunWith (LocalstackTestRunner .class )
2724public class KinesisConsumerTest {
2825
29- @ Test
30- public void testGetRecord () throws Exception {
31- String streamName = "test-s-" +UUID .randomUUID ().toString ();
32- AmazonKinesisAsync kinesisClient = TestUtils .getClientKinesisAsync ();
33-
34- CreateStreamRequest createStreamRequest = new CreateStreamRequest ();
35- createStreamRequest .setStreamName (streamName );
36- createStreamRequest .setShardCount (1 );
37-
38- kinesisClient .createStream (createStreamRequest );
39- TimeUnit .SECONDS .sleep (2 );
40-
41- PutRecordRequest putRecordRequest = new PutRecordRequest ();
42- putRecordRequest .setPartitionKey ("partitionkey" );
43- putRecordRequest .setStreamName (streamName );
44- putRecordRequest .setData (ByteBuffer .wrap ("hello, world!" .getBytes ()));
45-
46- String shardId = kinesisClient .putRecord (putRecordRequest ).getShardId ();
47-
48- GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest ();
49- getShardIteratorRequest .setShardId (shardId );
50- getShardIteratorRequest .setShardIteratorType ("TRIM_HORIZON" );
51- getShardIteratorRequest .setStreamName (streamName );
52-
53- String shardIterator = kinesisClient
54- .getShardIterator (getShardIteratorRequest )
55- .getShardIterator ();
56-
57- GetRecordsRequest getRecordRequest = new GetRecordsRequest () ;
58- getRecordRequest .setShardIterator (shardIterator );
59-
60- Integer limit = 100 ;
61- Integer counter = 0 ;
62- Boolean recordFound = false ;
63-
64- while (true ) {
65- getRecordRequest .setShardIterator (shardIterator );
66- GetRecordsResult recordsResponse = kinesisClient .getRecords (getRecordRequest );
67-
68- List records = recordsResponse .getRecords ();
69- if (records .isEmpty ()) {
70- recordFound = true ;
71- break ;
72- }
73-
74- if (counter >= limit ){
75- break ;
76- }
77-
78- counter += 1 ;
79- shardIterator = recordsResponse .getNextShardIterator ();
80- }
81- Assert .assertTrue (recordFound );
82- }
26+ @ Test
27+ public void testGetRecordCBOR () throws Exception {
28+ String streamName = "test-s-" + UUID .randomUUID ().toString ();
29+ AmazonKinesisAsync kinesisClient = TestUtils .getClientKinesisAsync ();
30+
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+ }
8371}
0 commit comments