From 76cea4db2a7364a12d95930c720fad81d72e4d49 Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Fri, 26 Feb 2021 21:35:50 +0100 Subject: [PATCH] feat: respect code guru profile handler implementation --- .../core/internal/LambdaHandlerProcessor.java | 4 +- .../internal/LambdaHandlerProcessorTest.java | 45 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessorTest.java diff --git a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java index f049b0b04..362a75e39 100644 --- a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java +++ b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java @@ -36,7 +36,9 @@ private LambdaHandlerProcessor() { } public static boolean isHandlerMethod(final ProceedingJoinPoint pjp) { - return "handleRequest".equals(pjp.getSignature().getName()); + return "handleRequest".equals(pjp.getSignature().getName()) || + // https://docs.aws.amazon.com/codeguru/latest/profiler-ug/lambda-custom.html + "requestHandler".equals(pjp.getSignature().getName()); } public static boolean placedOnRequestHandler(final ProceedingJoinPoint pjp) { diff --git a/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessorTest.java b/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessorTest.java new file mode 100644 index 000000000..18adae32e --- /dev/null +++ b/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessorTest.java @@ -0,0 +1,45 @@ +package software.amazon.lambda.powertools.core.internal; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.Signature; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +class LambdaHandlerProcessorTest { + + @Test + void shouldTreatProfilerHandlerMethodAsValid() { + ProceedingJoinPoint pjpMock = mock(ProceedingJoinPoint.class); + Signature signature = mock(Signature.class); + when(signature.getName()).thenReturn("requestHandler"); + when(pjpMock.getSignature()).thenReturn(signature); + + assertThat(LambdaHandlerProcessor.isHandlerMethod(pjpMock)) + .isTrue(); + } + + @Test + void shouldTreatDefaultHandlerMethodAsValid() { + ProceedingJoinPoint pjpMock = mock(ProceedingJoinPoint.class); + Signature signature = mock(Signature.class); + when(signature.getName()).thenReturn("handleRequest"); + when(pjpMock.getSignature()).thenReturn(signature); + + assertThat(LambdaHandlerProcessor.isHandlerMethod(pjpMock)) + .isTrue(); + } + + @Test + void shouldNotTreatOtherMethodNamesAsValidHandlerMethod() { + ProceedingJoinPoint pjpMock = mock(ProceedingJoinPoint.class); + Signature signature = mock(Signature.class); + when(signature.getName()).thenReturn("handleRequestInvalid"); + when(pjpMock.getSignature()).thenReturn(signature); + + assertThat(LambdaHandlerProcessor.isHandlerMethod(pjpMock)) + .isFalse(); + } +} \ No newline at end of file