1010import com .amazonaws .services .lambda .runtime .Context ;
1111import com .amazonaws .services .lambda .runtime .LambdaLogger ;
1212import com .amazonaws .services .lambda .runtime .events .APIGatewayProxyRequestEvent ;
13+ import com .amazonaws .services .lambda .runtime .events .APIGatewayProxyResponseEvent ;
1314import com .amazonaws .services .lambda .runtime .events .APIGatewayV2ProxyRequestEvent ;
15+ import com .amazonaws .services .lambda .runtime .events .APIGatewayV2ProxyResponseEvent ;
1416import com .amazonaws .services .lambda .runtime .events .CloudFrontEvent ;
1517import com .amazonaws .services .lambda .runtime .events .CloudWatchLogsEvent ;
1618import com .amazonaws .services .lambda .runtime .events .CodeCommitEvent ;
@@ -254,6 +256,29 @@ public void testAPIGatewayProxyRequestEvent() {
254256 "APIGatewayProxyRequestEventUserARN" , span .tags ().get ("aws.lambda.eventSource.arn" ));
255257 }
256258
259+ @ Test
260+ public void testAPIGatewayProxyRequestResponseEvent () {
261+ int expectedStatusCode = 200 ;
262+ final MyApiGatewayProxyRequestResponseHandler myApiGatewayProxyRequestHandler =
263+ new MyApiGatewayProxyRequestResponseHandler (expectedStatusCode );
264+
265+ final APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent =
266+ new APIGatewayProxyRequestEvent ();
267+ final APIGatewayProxyRequestEvent .RequestIdentity requestIdentity =
268+ new APIGatewayProxyRequestEvent .RequestIdentity ();
269+ requestIdentity .setUserArn ("APIGatewayProxyRequestEventUserARN" );
270+ final APIGatewayProxyRequestEvent .ProxyRequestContext proxyRequestContext =
271+ new APIGatewayProxyRequestEvent .ProxyRequestContext ();
272+ proxyRequestContext .setIdentity (requestIdentity );
273+ apiGatewayProxyRequestEvent .setRequestContext (proxyRequestContext );
274+
275+ myApiGatewayProxyRequestHandler .handleRequest (apiGatewayProxyRequestEvent , createContext ());
276+ final MockSpan span = mockTracer .finishedSpans ().get (0 );
277+ Assert .assertEquals (
278+ "APIGatewayProxyRequestEventUserARN" , span .tags ().get ("aws.lambda.eventSource.arn" ));
279+ Assert .assertEquals (Integer .toString (expectedStatusCode ), span .tags ().get ("http.status_code" ));
280+ }
281+
257282 @ Test
258283 public void testAPIGatewayV2ProxyRequestEvent () {
259284 final MyApiGatewayV2ProxyRequestHandler myApiGatewayV2ProxyRequestHandler =
@@ -273,6 +298,30 @@ public void testAPIGatewayV2ProxyRequestEvent() {
273298 final MockSpan span = mockTracer .finishedSpans ().get (0 );
274299 Assert .assertEquals (
275300 "APIGatewayV2ProxyRequestEventUserARN" , span .tags ().get ("aws.lambda.eventSource.arn" ));
301+ Assert .assertFalse (span .tags ().containsKey ("http.status_code" ));
302+ }
303+
304+ @ Test
305+ public void testAPIGatewayV2ProxyRequestResponseEvent () {
306+ int expectedStatusCode = 200 ;
307+ final MyApiGatewayV2ProxyRequestResponseHandler myApiGatewayV2ProxyRequestHandler =
308+ new MyApiGatewayV2ProxyRequestResponseHandler (expectedStatusCode );
309+
310+ final APIGatewayV2ProxyRequestEvent apiGatewayV2ProxyRequestEvent =
311+ new APIGatewayV2ProxyRequestEvent ();
312+ final APIGatewayV2ProxyRequestEvent .RequestIdentity requestIdentity =
313+ new APIGatewayV2ProxyRequestEvent .RequestIdentity ();
314+ requestIdentity .setUserArn ("APIGatewayV2ProxyRequestEventUserARN" );
315+ final APIGatewayV2ProxyRequestEvent .RequestContext proxyRequestContext =
316+ new APIGatewayV2ProxyRequestEvent .RequestContext ();
317+ proxyRequestContext .setIdentity (requestIdentity );
318+ apiGatewayV2ProxyRequestEvent .setRequestContext (proxyRequestContext );
319+
320+ myApiGatewayV2ProxyRequestHandler .handleRequest (apiGatewayV2ProxyRequestEvent , createContext ());
321+ final MockSpan span = mockTracer .finishedSpans ().get (0 );
322+ Assert .assertEquals (
323+ "APIGatewayV2ProxyRequestEventUserARN" , span .tags ().get ("aws.lambda.eventSource.arn" ));
324+ Assert .assertEquals (Integer .toString (expectedStatusCode ), span .tags ().get ("http.status_code" ));
276325 }
277326
278327 @ Test
@@ -395,6 +444,25 @@ public Object doHandleRequest(
395444 }
396445 }
397446
447+ static class MyApiGatewayProxyRequestResponseHandler
448+ implements TracingRequestHandler <APIGatewayProxyRequestEvent , APIGatewayProxyResponseEvent > {
449+
450+ private int statusCode ;
451+
452+ public MyApiGatewayProxyRequestResponseHandler (int statusCode ) {
453+ this .statusCode = statusCode ;
454+ }
455+
456+ @ Override
457+ public APIGatewayProxyResponseEvent doHandleRequest (
458+ APIGatewayProxyRequestEvent apiGatewayV2ProxyRequestEvent , Context context ) {
459+ APIGatewayProxyResponseEvent responseEvent = new APIGatewayProxyResponseEvent ();
460+ responseEvent .setStatusCode (statusCode );
461+ responseEvent .setBody ("null" );
462+ return responseEvent ;
463+ }
464+ }
465+
398466 static class MyApiGatewayV2ProxyRequestHandler
399467 implements TracingRequestHandler <APIGatewayV2ProxyRequestEvent , Object > {
400468
@@ -405,6 +473,26 @@ public Object doHandleRequest(
405473 }
406474 }
407475
476+ static class MyApiGatewayV2ProxyRequestResponseHandler
477+ implements TracingRequestHandler <
478+ APIGatewayV2ProxyRequestEvent , APIGatewayV2ProxyResponseEvent > {
479+
480+ private int statusCode ;
481+
482+ public MyApiGatewayV2ProxyRequestResponseHandler (int statusCode ) {
483+ this .statusCode = statusCode ;
484+ }
485+
486+ @ Override
487+ public APIGatewayV2ProxyResponseEvent doHandleRequest (
488+ APIGatewayV2ProxyRequestEvent apiGatewayV2ProxyRequestEvent , Context context ) {
489+ APIGatewayV2ProxyResponseEvent responseEvent = new APIGatewayV2ProxyResponseEvent ();
490+ responseEvent .setStatusCode (statusCode );
491+ responseEvent .setBody ("null" );
492+ return responseEvent ;
493+ }
494+ }
495+
408496 // Cloud Front
409497 static class MyCloudFrontRequestHandler
410498 implements TracingRequestHandler <CloudFrontEvent , Object > {
0 commit comments