22
33import cloud .localstack .Constants ;
44import cloud .localstack .LocalstackTestRunner ;
5+ import cloud .localstack .awssdkv1 .sample .SQSLambdaHandler ;
56import cloud .localstack .docker .annotation .LocalstackDockerProperties ;
67import cloud .localstack .sample .LambdaHandler ;
8+ import cloud .localstack .utils .LocalTestUtil ;
9+ import com .amazonaws .services .s3 .model .ObjectListing ;
710import io .thundra .jexter .junit4 .core .sysprop .SystemPropertySandboxRule ;
11+ import lombok .SneakyThrows ;
812import lombok .val ;
13+ import org .assertj .core .api .Assertions ;
914import org .junit .Assert ;
1015import org .junit .BeforeClass ;
1116import org .junit .ClassRule ;
4045import software .amazon .awssdk .services .iam .model .User ;
4146import software .amazon .awssdk .services .kinesis .KinesisAsyncClient ;
4247import software .amazon .awssdk .services .kinesis .KinesisClient ;
43- import software .amazon .awssdk .services .kinesis .model .CreateStreamRequest ;
44- import software .amazon .awssdk .services .kinesis .model .CreateStreamResponse ;
45- import software .amazon .awssdk .services .kinesis .model .PutRecordRequest ;
46- import software .amazon .awssdk .services .kinesis .model .PutRecordResponse ;
48+ import software .amazon .awssdk .services .kinesis .model .*;
4749import software .amazon .awssdk .services .lambda .model .CreateFunctionRequest ;
4850import software .amazon .awssdk .services .lambda .model .CreateFunctionResponse ;
4951import software .amazon .awssdk .services .lambda .model .ListFunctionsResponse ;
@@ -152,6 +154,7 @@ public void testCreateKinesisRecordAsyncV2() throws Exception {
152154 KinesisAsyncClient kinesisAsyncClient = TestUtils .getClientKinesisAsyncV2 ();
153155 validateCreateKinesisRecordV2 (
154156 createReq -> kinesisAsyncClient .createStream (createReq ).get (),
157+ describeReq -> kinesisAsyncClient .describeStream (describeReq ).get (),
155158 putReq -> kinesisAsyncClient .putRecord (putReq ).get ()
156159 );
157160 }
@@ -161,12 +164,14 @@ public void testCreateKinesisRecordV2() throws Exception {
161164 KinesisClient kinesisClient = TestUtils .getClientKinesisV2 ();
162165 validateCreateKinesisRecordV2 (
163166 createReq -> kinesisClient .createStream (createReq ),
167+ describeReq -> kinesisClient .describeStream (describeReq ),
164168 putReq -> kinesisClient .putRecord (putReq )
165169 );
166170 }
167171
168172 protected static void validateCreateKinesisRecordV2 (
169173 ThrowingFunction <CreateStreamRequest , CreateStreamResponse > createAction ,
174+ ThrowingFunction <DescribeStreamRequest , DescribeStreamResponse > describeAction ,
170175 ThrowingFunction <PutRecordRequest , PutRecordResponse > putAction
171176 ) throws Exception {
172177 String streamName = "test-s-" +UUID .randomUUID ().toString ();
@@ -175,6 +180,18 @@ protected static void validateCreateKinesisRecordV2(
175180 CreateStreamResponse response = createAction .apply (request );
176181 Assert .assertNotNull (response );
177182
183+ // wait for the stream to become active
184+ DescribeStreamRequest describeStreamRequest = DescribeStreamRequest .builder ().streamName (streamName ).build ();
185+ Runnable check = new Runnable () {
186+ @ SneakyThrows
187+ public void run () {
188+ DescribeStreamResponse describeResponse = describeAction .apply (describeStreamRequest );
189+ Assert .assertNotNull (describeResponse );
190+ Assert .assertEquals (describeResponse .streamDescription ().streamStatus (), StreamStatus .ACTIVE );
191+ }
192+ };
193+ LocalTestUtil .retry (check , 5 , 1 );
194+
178195 SdkBytes payload = SdkBytes .fromByteBuffer (ByteBuffer .wrap (String .format ("testData-%d" , 1 ).getBytes ()));
179196 PutRecordRequest .Builder putRecordRequest = PutRecordRequest .builder ();
180197 putRecordRequest .streamName (streamName );
0 commit comments