@@ -115,6 +115,134 @@ void configureSdkClient(SdkClientBuilder<?, ?> builder) {
115115          "attributeOne" , AttributeValue .builder ().s ("one" ).build (),
116116          "attributeTwo" , AttributeValue .builder ().s ("two" ).build ());
117117
118+   private  void  executeCall (String  operation , Object  response )
119+       throws  ExecutionException , InterruptedException  {
120+     if  (response  instanceof  Future ) {
121+       response  = ((Future <?>) response ).get ();
122+     }
123+ 
124+     assertThat (response ).isNotNull ();
125+     assertThat (response .getClass ().getSimpleName ()).startsWith (operation );
126+ 
127+     RecordedRequest  request  = server .takeRequest ();
128+     assertThat (request ).isNotNull ();
129+     assertThat (request .request ().headers ().get ("X-Amzn-Trace-Id" )).isNotNull ();
130+     assertThat (request .request ().headers ().get ("traceparent" )).isNull ();
131+ 
132+     getTesting ()
133+         .waitAndAssertTraces (
134+             trace  ->
135+                 trace .hasSpansSatisfyingExactly (
136+                     span  -> {
137+                       if  (operation .equals ("CreateTable" )) {
138+                         assertCreateTableRequest (span );
139+                       } else  if  (operation .equals ("Query" )) {
140+                         assertQueryRequest (span );
141+                       } else  {
142+                         assertDynamoDbRequest (span , operation );
143+                       }
144+                     }));
145+   }
146+ 
147+   static  CreateTableRequest  createTableRequest () {
148+     return  CreateTableRequest .builder ()
149+         .tableName ("sometable" )
150+         .globalSecondaryIndexes (
151+             Arrays .asList (
152+                 GlobalSecondaryIndex .builder ()
153+                     .indexName ("globalIndex" )
154+                     .keySchema (KeySchemaElement .builder ().attributeName ("attribute" ).build ())
155+                     .provisionedThroughput (
156+                         ProvisionedThroughput .builder ()
157+                             .readCapacityUnits (10L )
158+                             .writeCapacityUnits (12L )
159+                             .build ())
160+                     .build (),
161+                 GlobalSecondaryIndex .builder ()
162+                     .indexName ("globalIndexSecondary" )
163+                     .keySchema (
164+                         KeySchemaElement .builder ().attributeName ("attributeSecondary" ).build ())
165+                     .provisionedThroughput (
166+                         ProvisionedThroughput .builder ()
167+                             .readCapacityUnits (7L )
168+                             .writeCapacityUnits (8L )
169+                             .build ())
170+                     .build ()))
171+         .provisionedThroughput (
172+             ProvisionedThroughput .builder ().readCapacityUnits (1L ).writeCapacityUnits (1L ).build ())
173+         .build ();
174+   }
175+ 
176+   @ SuppressWarnings ("deprecation" ) // uses deprecated semconv 
177+   static  void  assertCreateTableRequest (SpanDataAssert  span ) {
178+     span .hasName ("DynamoDb.CreateTable" )
179+         .hasKind (SpanKind .CLIENT )
180+         .hasNoParent ()
181+         .hasAttributesSatisfyingExactly (
182+             equalTo (SERVER_ADDRESS , "127.0.0.1" ),
183+             equalTo (SERVER_PORT , server .httpPort ()),
184+             equalTo (URL_FULL , server .httpUri () + "/" ),
185+             equalTo (HTTP_REQUEST_METHOD , "POST" ),
186+             equalTo (HTTP_RESPONSE_STATUS_CODE , 200 ),
187+             equalTo (RPC_SYSTEM , "aws-api" ),
188+             equalTo (RPC_SERVICE , "DynamoDb" ),
189+             equalTo (RPC_METHOD , "CreateTable" ),
190+             equalTo (stringKey ("aws.agent" ), "java-aws-sdk" ),
191+             equalTo (AWS_REQUEST_ID , "UNKNOWN" ),
192+             equalTo (stringKey ("aws.table.name" ), "sometable" ),
193+             equalTo (DB_SYSTEM , "dynamodb" ),
194+             equalTo (maybeStable (DB_OPERATION ), "CreateTable" ),
195+             equalTo (
196+                 stringKey ("aws.dynamodb.global_secondary_indexes" ),
197+                 "[{\" IndexName\" :\" globalIndex\" ,\" KeySchema\" :[{\" AttributeName\" :\" attribute\" }],\" ProvisionedThroughput\" :{\" ReadCapacityUnits\" :10,\" WriteCapacityUnits\" :12}},{\" IndexName\" :\" globalIndexSecondary\" ,\" KeySchema\" :[{\" AttributeName\" :\" attributeSecondary\" }],\" ProvisionedThroughput\" :{\" ReadCapacityUnits\" :7,\" WriteCapacityUnits\" :8}}]" ),
198+             equalTo (stringKey ("aws.dynamodb.provisioned_throughput.read_capacity_units" ), "1" ),
199+             equalTo (stringKey ("aws.dynamodb.provisioned_throughput.write_capacity_units" ), "1" ));
200+   }
201+ 
202+   @ SuppressWarnings ("deprecation" ) // using deprecated semconv 
203+   static  void  assertQueryRequest (SpanDataAssert  span ) {
204+     span .hasName ("DynamoDb.Query" )
205+         .hasKind (SpanKind .CLIENT )
206+         .hasNoParent ()
207+         .hasAttributesSatisfyingExactly (
208+             equalTo (SERVER_ADDRESS , "127.0.0.1" ),
209+             equalTo (SERVER_PORT , server .httpPort ()),
210+             equalTo (URL_FULL , server .httpUri () + "/" ),
211+             equalTo (HTTP_REQUEST_METHOD , "POST" ),
212+             equalTo (HTTP_RESPONSE_STATUS_CODE , 200 ),
213+             equalTo (RPC_SYSTEM , "aws-api" ),
214+             equalTo (RPC_SERVICE , "DynamoDb" ),
215+             equalTo (RPC_METHOD , "Query" ),
216+             equalTo (stringKey ("aws.agent" ), "java-aws-sdk" ),
217+             equalTo (AWS_REQUEST_ID , "UNKNOWN" ),
218+             equalTo (stringKey ("aws.table.name" ), "sometable" ),
219+             equalTo (DB_SYSTEM , "dynamodb" ),
220+             equalTo (maybeStable (DB_OPERATION ), "Query" ),
221+             equalTo (stringKey ("aws.dynamodb.limit" ), "10" ),
222+             equalTo (stringKey ("aws.dynamodb.select" ), "ALL_ATTRIBUTES" ));
223+   }
224+ 
225+   @ SuppressWarnings ("deprecation" ) // uses deprecated semconv 
226+   static  void  assertDynamoDbRequest (SpanDataAssert  span , String  operation ) {
227+     span .hasName ("DynamoDb."  + operation )
228+         .hasKind (SpanKind .CLIENT )
229+         .hasNoParent ()
230+         .hasAttributesSatisfyingExactly (
231+             equalTo (SERVER_ADDRESS , "127.0.0.1" ),
232+             equalTo (SERVER_PORT , server .httpPort ()),
233+             equalTo (URL_FULL , server .httpUri () + "/" ),
234+             equalTo (HTTP_REQUEST_METHOD , "POST" ),
235+             equalTo (HTTP_RESPONSE_STATUS_CODE , 200 ),
236+             equalTo (RPC_SYSTEM , "aws-api" ),
237+             equalTo (RPC_SERVICE , "DynamoDb" ),
238+             equalTo (RPC_METHOD , operation ),
239+             equalTo (stringKey ("aws.agent" ), "java-aws-sdk" ),
240+             equalTo (AWS_REQUEST_ID , "UNKNOWN" ),
241+             equalTo (stringKey ("aws.table.name" ), "sometable" ),
242+             equalTo (DB_SYSTEM , "dynamodb" ),
243+             equalTo (maybeStable (DB_OPERATION ), operation ));
244+   }
245+ 
118246  private  static  Stream <Arguments > provideArguments () {
119247    return  Stream .of (
120248        Arguments .of (
@@ -288,132 +416,4 @@ void testSendDynamoDbAsyncRequestWithBuilderAndMockedResponse(
288416    Object  response  = call .apply (client );
289417    executeCall (operation , response );
290418  }
291- 
292-   private  void  executeCall (String  operation , Object  response )
293-       throws  ExecutionException , InterruptedException  {
294-     if  (response  instanceof  Future ) {
295-       response  = ((Future <?>) response ).get ();
296-     }
297- 
298-     assertThat (response ).isNotNull ();
299-     assertThat (response .getClass ().getSimpleName ()).startsWith (operation );
300- 
301-     RecordedRequest  request  = server .takeRequest ();
302-     assertThat (request ).isNotNull ();
303-     assertThat (request .request ().headers ().get ("X-Amzn-Trace-Id" )).isNotNull ();
304-     assertThat (request .request ().headers ().get ("traceparent" )).isNull ();
305- 
306-     getTesting ()
307-         .waitAndAssertTraces (
308-             trace  ->
309-                 trace .hasSpansSatisfyingExactly (
310-                     span  -> {
311-                       if  (operation .equals ("CreateTable" )) {
312-                         assertCreateTableRequest (span );
313-                       } else  if  (operation .equals ("Query" )) {
314-                         assertQueryRequest (span );
315-                       } else  {
316-                         assertDynamoDbRequest (span , operation );
317-                       }
318-                     }));
319-   }
320- 
321-   static  CreateTableRequest  createTableRequest () {
322-     return  CreateTableRequest .builder ()
323-         .tableName ("sometable" )
324-         .globalSecondaryIndexes (
325-             Arrays .asList (
326-                 GlobalSecondaryIndex .builder ()
327-                     .indexName ("globalIndex" )
328-                     .keySchema (KeySchemaElement .builder ().attributeName ("attribute" ).build ())
329-                     .provisionedThroughput (
330-                         ProvisionedThroughput .builder ()
331-                             .readCapacityUnits (10L )
332-                             .writeCapacityUnits (12L )
333-                             .build ())
334-                     .build (),
335-                 GlobalSecondaryIndex .builder ()
336-                     .indexName ("globalIndexSecondary" )
337-                     .keySchema (
338-                         KeySchemaElement .builder ().attributeName ("attributeSecondary" ).build ())
339-                     .provisionedThroughput (
340-                         ProvisionedThroughput .builder ()
341-                             .readCapacityUnits (7L )
342-                             .writeCapacityUnits (8L )
343-                             .build ())
344-                     .build ()))
345-         .provisionedThroughput (
346-             ProvisionedThroughput .builder ().readCapacityUnits (1L ).writeCapacityUnits (1L ).build ())
347-         .build ();
348-   }
349- 
350-   @ SuppressWarnings ("deprecation" ) // uses deprecated semconv 
351-   static  void  assertCreateTableRequest (SpanDataAssert  span ) {
352-     span .hasName ("DynamoDb.CreateTable" )
353-         .hasKind (SpanKind .CLIENT )
354-         .hasNoParent ()
355-         .hasAttributesSatisfyingExactly (
356-             equalTo (SERVER_ADDRESS , "127.0.0.1" ),
357-             equalTo (SERVER_PORT , server .httpPort ()),
358-             equalTo (URL_FULL , server .httpUri () + "/" ),
359-             equalTo (HTTP_REQUEST_METHOD , "POST" ),
360-             equalTo (HTTP_RESPONSE_STATUS_CODE , 200 ),
361-             equalTo (RPC_SYSTEM , "aws-api" ),
362-             equalTo (RPC_SERVICE , "DynamoDb" ),
363-             equalTo (RPC_METHOD , "CreateTable" ),
364-             equalTo (stringKey ("aws.agent" ), "java-aws-sdk" ),
365-             equalTo (AWS_REQUEST_ID , "UNKNOWN" ),
366-             equalTo (stringKey ("aws.table.name" ), "sometable" ),
367-             equalTo (DB_SYSTEM , "dynamodb" ),
368-             equalTo (maybeStable (DB_OPERATION ), "CreateTable" ),
369-             equalTo (
370-                 stringKey ("aws.dynamodb.global_secondary_indexes" ),
371-                 "[{\" IndexName\" :\" globalIndex\" ,\" KeySchema\" :[{\" AttributeName\" :\" attribute\" }],\" ProvisionedThroughput\" :{\" ReadCapacityUnits\" :10,\" WriteCapacityUnits\" :12}},{\" IndexName\" :\" globalIndexSecondary\" ,\" KeySchema\" :[{\" AttributeName\" :\" attributeSecondary\" }],\" ProvisionedThroughput\" :{\" ReadCapacityUnits\" :7,\" WriteCapacityUnits\" :8}}]" ),
372-             equalTo (stringKey ("aws.dynamodb.provisioned_throughput.read_capacity_units" ), "1" ),
373-             equalTo (stringKey ("aws.dynamodb.provisioned_throughput.write_capacity_units" ), "1" ));
374-   }
375- 
376-   @ SuppressWarnings ("deprecation" ) // using deprecated semconv 
377-   static  void  assertQueryRequest (SpanDataAssert  span ) {
378-     span .hasName ("DynamoDb.Query" )
379-         .hasKind (SpanKind .CLIENT )
380-         .hasNoParent ()
381-         .hasAttributesSatisfyingExactly (
382-             equalTo (SERVER_ADDRESS , "127.0.0.1" ),
383-             equalTo (SERVER_PORT , server .httpPort ()),
384-             equalTo (URL_FULL , server .httpUri () + "/" ),
385-             equalTo (HTTP_REQUEST_METHOD , "POST" ),
386-             equalTo (HTTP_RESPONSE_STATUS_CODE , 200 ),
387-             equalTo (RPC_SYSTEM , "aws-api" ),
388-             equalTo (RPC_SERVICE , "DynamoDb" ),
389-             equalTo (RPC_METHOD , "Query" ),
390-             equalTo (stringKey ("aws.agent" ), "java-aws-sdk" ),
391-             equalTo (AWS_REQUEST_ID , "UNKNOWN" ),
392-             equalTo (stringKey ("aws.table.name" ), "sometable" ),
393-             equalTo (DB_SYSTEM , "dynamodb" ),
394-             equalTo (maybeStable (DB_OPERATION ), "Query" ),
395-             equalTo (stringKey ("aws.dynamodb.limit" ), "10" ),
396-             equalTo (stringKey ("aws.dynamodb.select" ), "ALL_ATTRIBUTES" ));
397-   }
398- 
399-   @ SuppressWarnings ("deprecation" ) // uses deprecated semconv 
400-   static  void  assertDynamoDbRequest (SpanDataAssert  span , String  operation ) {
401-     span .hasName ("DynamoDb."  + operation )
402-         .hasKind (SpanKind .CLIENT )
403-         .hasNoParent ()
404-         .hasAttributesSatisfyingExactly (
405-             equalTo (SERVER_ADDRESS , "127.0.0.1" ),
406-             equalTo (SERVER_PORT , server .httpPort ()),
407-             equalTo (URL_FULL , server .httpUri () + "/" ),
408-             equalTo (HTTP_REQUEST_METHOD , "POST" ),
409-             equalTo (HTTP_RESPONSE_STATUS_CODE , 200 ),
410-             equalTo (RPC_SYSTEM , "aws-api" ),
411-             equalTo (RPC_SERVICE , "DynamoDb" ),
412-             equalTo (RPC_METHOD , operation ),
413-             equalTo (stringKey ("aws.agent" ), "java-aws-sdk" ),
414-             equalTo (AWS_REQUEST_ID , "UNKNOWN" ),
415-             equalTo (stringKey ("aws.table.name" ), "sometable" ),
416-             equalTo (DB_SYSTEM , "dynamodb" ),
417-             equalTo (maybeStable (DB_OPERATION ), operation ));
418-   }
419419}
0 commit comments