From 9ab27542d09f640475e035e84df23900f110e2e0 Mon Sep 17 00:00:00 2001 From: Jerome Van Der Linden Date: Thu, 3 Aug 2023 15:16:50 +0200 Subject: [PATCH 1/3] apply checkstyle again --- .../src/main/java/helloworld/App.java | 9 +- .../src/main/java/helloworld/App.java | 26 +- .../java/org/demo/sqs/SqsMessageSender.java | 32 +- .../CloudFormationResponseTest.java | 20 +- .../internal/UserAgentConfiguratorTest.java | 3 +- .../lambda/powertools/e2e/Function.java | 17 +- .../lambda/powertools/e2e/Function.java | 10 +- .../lambda/powertools/e2e/Function.java | 14 +- .../lambda/powertools/LargeMessageE2ET.java | 53 ++-- .../LargeMessageIdempotentE2ET.java | 3 +- .../powertools/testutils/Infrastructure.java | 57 ++-- .../testutils/metrics/MetricsFetcher.java | 60 ++-- .../testutils/tracing/TraceFetcher.java | 72 ++--- .../persistence/DynamoDBPersistenceStore.java | 32 +- .../largemessages/LargeMessage.java | 2 +- .../internal/LargeMessageAspect.java | 3 +- .../internal/LargeMessageProcessor.java | 3 +- .../internal/LargeSQSMessageProcessor.java | 70 ++--- .../internal/LargeMessageAspectTest.java | 40 ++- .../logging/internal/LambdaJsonLayout.java | 10 +- .../logging/internal/PowertoolsResolver.java | 12 +- .../core/layout/LambdaJsonLayoutTest.java | 44 +-- .../powertools/metrics/MetricsUtils.java | 18 +- .../powertools/metrics/MetricsLoggerTest.java | 96 +++--- ...MetricsEnabledDefaultDimensionHandler.java | 4 +- ...tricsEnabledDefaultNoDimensionHandler.java | 4 +- .../internal/LambdaMetricsAspectTest.java | 284 +++++++++--------- .../parameters/AppConfigProvider.java | 3 +- .../powertools/parameters/BaseProvider.java | 50 +-- .../parameters/DynamoDbProvider.java | 20 +- .../powertools/parameters/SSMProvider.java | 20 +- .../parameters/SecretsProvider.java | 4 +- .../parameters/DynamoDbProviderTest.java | 22 +- .../parameters/SSMProviderTest.java | 10 +- .../internal/LambdaParametersAspectTest.java | 6 +- .../utilities/EventDeserializer.java | 16 +- .../lambda/powertools/sqs/SqsUtils.java | 10 +- .../powertools/sqs/internal/BatchContext.java | 146 ++++----- .../sqs/internal/SqsLargeMessageAspect.java | 34 +-- .../sqs/SqsUtilsBatchProcessorTest.java | 190 ++++++------ .../sqs/SqsUtilsFifoBatchProcessorTest.java | 76 ++--- .../sqs/SqsUtilsLargeMessageTest.java | 54 ++-- .../internal/SqsLargeMessageAspectTest.java | 12 +- .../SqsMessageBatchProcessorAspectTest.java | 120 ++++---- .../testsuite/LoggingOrderTest.java | 12 +- .../powertools/tracing/TracingUtilsTest.java | 116 +++---- .../internal/LambdaTracingAspectTest.java | 242 +++++++-------- .../validation/ValidationUtilsTest.java | 36 +-- .../internal/ValidationAspectTest.java | 6 +- 49 files changed, 1123 insertions(+), 1080 deletions(-) diff --git a/examples/powertools-examples-cloudformation/src/main/java/helloworld/App.java b/examples/powertools-examples-cloudformation/src/main/java/helloworld/App.java index ca3cb0ab7..54f13244c 100644 --- a/examples/powertools-examples-cloudformation/src/main/java/helloworld/App.java +++ b/examples/powertools-examples-cloudformation/src/main/java/helloworld/App.java @@ -2,6 +2,7 @@ import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent; +import java.util.Objects; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import software.amazon.awssdk.awscore.exception.AwsServiceException; @@ -9,13 +10,15 @@ import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.s3.S3Client; -import software.amazon.awssdk.services.s3.model.*; +import software.amazon.awssdk.services.s3.model.CreateBucketRequest; +import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; +import software.amazon.awssdk.services.s3.model.HeadBucketRequest; +import software.amazon.awssdk.services.s3.model.HeadBucketResponse; +import software.amazon.awssdk.services.s3.model.NoSuchBucketException; import software.amazon.awssdk.services.s3.waiters.S3Waiter; import software.amazon.lambda.powertools.cloudformation.AbstractCustomResourceHandler; import software.amazon.lambda.powertools.cloudformation.Response; -import java.util.Objects; - /** * Handler for requests to Lambda function. */ diff --git a/examples/powertools-examples-core/src/main/java/helloworld/App.java b/examples/powertools-examples-core/src/main/java/helloworld/App.java index 94360cf59..a1ea9a9e3 100644 --- a/examples/powertools-examples-core/src/main/java/helloworld/App.java +++ b/examples/powertools-examples-core/src/main/java/helloworld/App.java @@ -61,10 +61,10 @@ public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEv metricsLogger().putMetric("CustomMetric1", 1, Unit.COUNT); withSingleMetric("CustomMetrics2", 1, Unit.COUNT, "Another", (metric) -> - { - metric.setDimensions(DimensionSet.of("AnotherService", "CustomService")); - metric.setDimensions(DimensionSet.of("AnotherService1", "CustomService1")); - }); + { + metric.setDimensions(DimensionSet.of("AnotherService", "CustomService")); + metric.setDimensions(DimensionSet.of("AnotherService1", "CustomService1")); + }); LoggingUtils.appendKey("test", "willBeLogged"); @@ -77,11 +77,11 @@ public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEv String output = String.format("{ \"message\": \"hello world\", \"location\": \"%s\" }", pageContents); TracingUtils.withSubsegment("loggingResponse", subsegment -> - { - String sampled = "log something out"; - log.info(sampled); - log.info(output); - }); + { + String sampled = "log something out"; + log.info(sampled); + log.info(output); + }); threadOption1(); @@ -107,10 +107,10 @@ private void threadOption1() throws InterruptedException { private void threadOption2() throws InterruptedException { Entity traceEntity = AWSXRay.getTraceEntity(); Thread anotherThread = new Thread(() -> withEntitySubsegment("inlineLog", traceEntity, subsegment -> - { - String var = "somethingToProcess"; - log.info("inside threaded logging inline {}", var); - })); + { + String var = "somethingToProcess"; + log.info("inside threaded logging inline {}", var); + })); anotherThread.start(); anotherThread.join(); } diff --git a/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java index 45856d198..701d6808f 100644 --- a/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java +++ b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java @@ -63,22 +63,22 @@ public String handleRequest(final ScheduledEvent input, final Context context) { // Push 5 messages on each invoke. List batchRequestEntries = IntStream.range(0, 5) .mapToObj(value -> - { - Map attributeValueHashMap = new HashMap<>(); - attributeValueHashMap.put("Key" + value, MessageAttributeValue.builder() - .dataType("String") - .stringValue("Value" + value) - .build()); - - byte[] array = new byte[7]; - random.nextBytes(array); - - return SendMessageBatchRequestEntry.builder() - .messageAttributes(attributeValueHashMap) - .id(input.getId() + value) - .messageBody("Sample Message " + value) - .build(); - }).collect(toList()); + { + Map attributeValueHashMap = new HashMap<>(); + attributeValueHashMap.put("Key" + value, MessageAttributeValue.builder() + .dataType("String") + .stringValue("Value" + value) + .build()); + + byte[] array = new byte[7]; + random.nextBytes(array); + + return SendMessageBatchRequestEntry.builder() + .messageAttributes(attributeValueHashMap) + .id(input.getId() + value) + .messageBody("Sample Message " + value) + .build(); + }).collect(toList()); SendMessageBatchResponse sendMessageBatchResponse = sqsClient.sendMessageBatch(SendMessageBatchRequest.builder() .queueUrl(queueUrl) diff --git a/powertools-cloudformation/src/test/java/software/amazon/lambda/powertools/cloudformation/CloudFormationResponseTest.java b/powertools-cloudformation/src/test/java/software/amazon/lambda/powertools/cloudformation/CloudFormationResponseTest.java index 2e7fbcc0c..51f0e95f9 100644 --- a/powertools-cloudformation/src/test/java/software/amazon/lambda/powertools/cloudformation/CloudFormationResponseTest.java +++ b/powertools-cloudformation/src/test/java/software/amazon/lambda/powertools/cloudformation/CloudFormationResponseTest.java @@ -58,16 +58,16 @@ static CloudFormationResponse testableCloudFormationResponse() { ExecutableHttpRequest executableRequest = mock(ExecutableHttpRequest.class); when(client.prepareRequest(any(HttpExecuteRequest.class))).thenAnswer(args -> - { - HttpExecuteRequest request = args.getArgument(0, HttpExecuteRequest.class); - assertThat(request.contentStreamProvider()).isPresent(); - - InputStream inputStream = request.contentStreamProvider().get().newStream(); - HttpExecuteResponse response = mock(HttpExecuteResponse.class); - when(response.responseBody()).thenReturn(Optional.of(AbortableInputStream.create(inputStream))); - when(executableRequest.call()).thenReturn(response); - return executableRequest; - }); + { + HttpExecuteRequest request = args.getArgument(0, HttpExecuteRequest.class); + assertThat(request.contentStreamProvider()).isPresent(); + + InputStream inputStream = request.contentStreamProvider().get().newStream(); + HttpExecuteResponse response = mock(HttpExecuteResponse.class); + when(response.responseBody()).thenReturn(Optional.of(AbortableInputStream.create(inputStream))); + when(executableRequest.call()).thenReturn(response); + return executableRequest; + }); return new CloudFormationResponse(client); } diff --git a/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/UserAgentConfiguratorTest.java b/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/UserAgentConfiguratorTest.java index 00110077f..2d75bdb3a 100644 --- a/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/UserAgentConfiguratorTest.java +++ b/powertools-core/src/test/java/software/amazon/lambda/powertools/core/internal/UserAgentConfiguratorTest.java @@ -30,7 +30,8 @@ class UserAgentConfiguratorTest { - private static final String SEM_VER_PATTERN = "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"; + private static final String SEM_VER_PATTERN = + "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"; private static final String VERSION = UserAgentConfigurator.getProjectVersion(); diff --git a/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index 70f1bceea..36cb9fcd2 100644 --- a/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/largemessage/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -19,6 +19,9 @@ import com.amazonaws.services.lambda.runtime.events.SQSBatchResponse; import com.amazonaws.services.lambda.runtime.events.SQSEvent; import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; @@ -29,10 +32,6 @@ import software.amazon.lambda.powertools.largemessages.LargeMessage; import software.amazon.lambda.powertools.logging.Logging; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.Map; - public class Function implements RequestHandler { private static final String TABLE_FOR_ASYNC_TESTS = System.getenv("TABLE_FOR_ASYNC_TESTS"); @@ -49,7 +48,7 @@ public Function() { @Logging(logEvent = true) public SQSBatchResponse handleRequest(SQSEvent event, Context context) { - for (SQSMessage message: event.getRecords()) { + for (SQSMessage message : event.getRecords()) { processRawMessage(message, context); } return SQSBatchResponse.builder().build(); @@ -59,14 +58,18 @@ public SQSBatchResponse handleRequest(SQSEvent event, Context context) { private void processRawMessage(SQSMessage sqsMessage, Context context) { String bodyMD5 = md5(sqsMessage.getBody()); if (!sqsMessage.getMd5OfBody().equals(bodyMD5)) { - throw new SecurityException(String.format("message digest does not match, expected %s, got %s", sqsMessage.getMd5OfBody(), bodyMD5)); + throw new SecurityException( + String.format("message digest does not match, expected %s, got %s", sqsMessage.getMd5OfBody(), + bodyMD5)); } Map item = new HashMap<>(); item.put("functionName", AttributeValue.builder().s(context.getFunctionName()).build()); item.put("id", AttributeValue.builder().s(sqsMessage.getMessageId()).build()); item.put("bodyMD5", AttributeValue.builder().s(bodyMD5).build()); - item.put("bodySize", AttributeValue.builder().n(String.valueOf(sqsMessage.getBody().getBytes(StandardCharsets.UTF_8).length)).build()); + item.put("bodySize", + AttributeValue.builder().n(String.valueOf(sqsMessage.getBody().getBytes(StandardCharsets.UTF_8).length)) + .build()); client.putItem(PutItemRequest.builder().tableName(TABLE_FOR_ASYNC_TESTS).item(item).build()); } diff --git a/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index b9f737857..5269b37c9 100644 --- a/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/largemessage_idempotent/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -71,7 +71,7 @@ public Function(DynamoDbClient client) { @Logging(logEvent = true) public SQSBatchResponse handleRequest(SQSEvent event, Context context) { - for (SQSEvent.SQSMessage message: event.getRecords()) { + for (SQSEvent.SQSMessage message : event.getRecords()) { processRawMessage(message, context); } return SQSBatchResponse.builder().build(); @@ -82,7 +82,9 @@ public SQSBatchResponse handleRequest(SQSEvent event, Context context) { private String processRawMessage(@IdempotencyKey SQSEvent.SQSMessage sqsMessage, Context context) { String bodyMD5 = md5(sqsMessage.getBody()); if (!sqsMessage.getMd5OfBody().equals(bodyMD5)) { - throw new SecurityException(String.format("message digest does not match, expected %s, got %s", sqsMessage.getMd5OfBody(), bodyMD5)); + throw new SecurityException( + String.format("message digest does not match, expected %s, got %s", sqsMessage.getMd5OfBody(), + bodyMD5)); } Instant now = Instant.now(); @@ -91,7 +93,9 @@ private String processRawMessage(@IdempotencyKey SQSEvent.SQSMessage sqsMessage, item.put("id", AttributeValue.builder().s(sqsMessage.getMessageId()).build()); item.put("bodyMD5", AttributeValue.builder().s(bodyMD5).build()); item.put("now", AttributeValue.builder().n(String.valueOf(now.getEpochSecond())).build()); - item.put("bodySize", AttributeValue.builder().n(String.valueOf(sqsMessage.getBody().getBytes(StandardCharsets.UTF_8).length)).build()); + item.put("bodySize", + AttributeValue.builder().n(String.valueOf(sqsMessage.getBody().getBytes(StandardCharsets.UTF_8).length)) + .build()); client.putItem(PutItemRequest.builder().tableName(TABLE_FOR_ASYNC_TESTS).item(item).build()); diff --git a/powertools-e2e-tests/handlers/tracing/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/tracing/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index 462b7c71d..397e34a85 100644 --- a/powertools-e2e-tests/handlers/tracing/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/tracing/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -31,13 +31,13 @@ public String handleRequest(Input input, Context context) { String message = buildMessage(input.getMessage(), context.getFunctionName()); TracingUtils.withSubsegment("internal_stuff", subsegment -> - { - try { - Thread.sleep(100); // simulate stuff - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - }); + { + try { + Thread.sleep(100); // simulate stuff + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); return message; } diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java index 2d9f74135..548a710b8 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageE2ET.java @@ -1,7 +1,19 @@ package software.amazon.lambda.powertools; +import static org.assertj.core.api.Assertions.assertThat; +import static software.amazon.lambda.powertools.testutils.Infrastructure.FUNCTION_NAME_OUTPUT; + import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient; import com.amazon.sqs.javamessaging.ExtendedClientConfiguration; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; @@ -23,19 +35,6 @@ import software.amazon.awssdk.services.sqs.model.SendMessageRequest; import software.amazon.lambda.powertools.testutils.Infrastructure; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -import static org.assertj.core.api.Assertions.assertThat; -import static software.amazon.lambda.powertools.testutils.Infrastructure.FUNCTION_NAME_OUTPUT; - public class LargeMessageE2ET { private static final Logger LOG = LoggerFactory.getLogger(LargeMessageE2ET.class); @@ -81,6 +80,13 @@ public static void setup() { LOG.info("Testing '" + LargeMessageE2ET.class.getSimpleName() + "'"); } + @AfterAll + public static void tearDown() { + if (infrastructure != null) { + infrastructure.destroy(); + } + } + @AfterEach public void reset() { if (messageId != null) { @@ -92,19 +98,14 @@ public void reset() { } } - @AfterAll - public static void tearDown() { - if (infrastructure != null) - infrastructure.destroy(); - } - @Test public void bigSQSMessageOffloadedToS3_shouldLoadFromS3() throws IOException, InterruptedException { // given final ExtendedClientConfiguration extendedClientConfig = new ExtendedClientConfiguration() .withPayloadSupportEnabled(s3Client, bucketName); - AmazonSQSExtendedClient client = new AmazonSQSExtendedClient(SqsClient.builder().httpClient(httpClient).build(), extendedClientConfig); + AmazonSQSExtendedClient client = + new AmazonSQSExtendedClient(SqsClient.builder().httpClient(httpClient).build(), extendedClientConfig); InputStream inputStream = this.getClass().getResourceAsStream("/large_sqs_message.txt"); String bigMessage = IOUtils.toString(inputStream, StandardCharsets.UTF_8); @@ -122,7 +123,8 @@ public void bigSQSMessageOffloadedToS3_shouldLoadFromS3() throws IOException, In .builder() .tableName(tableName) .keyConditionExpression("functionName = :func") - .expressionAttributeValues(Collections.singletonMap(":func", AttributeValue.builder().s(functionName).build())) + .expressionAttributeValues( + Collections.singletonMap(":func", AttributeValue.builder().s(functionName).build())) .build(); QueryResponse response = dynamoDbClient.query(request); List> items = response.items(); @@ -138,7 +140,8 @@ public void smallSQSMessage_shouldNotReadFromS3() throws IOException, Interrupte final ExtendedClientConfiguration extendedClientConfig = new ExtendedClientConfiguration() .withPayloadSupportEnabled(s3Client, bucketName); - AmazonSQSExtendedClient client = new AmazonSQSExtendedClient(SqsClient.builder().httpClient(httpClient).build(), extendedClientConfig); + AmazonSQSExtendedClient client = + new AmazonSQSExtendedClient(SqsClient.builder().httpClient(httpClient).build(), extendedClientConfig); String message = "Hello World"; // when @@ -155,13 +158,15 @@ public void smallSQSMessage_shouldNotReadFromS3() throws IOException, Interrupte .builder() .tableName(tableName) .keyConditionExpression("functionName = :func") - .expressionAttributeValues(Collections.singletonMap(":func", AttributeValue.builder().s(functionName).build())) + .expressionAttributeValues( + Collections.singletonMap(":func", AttributeValue.builder().s(functionName).build())) .build(); QueryResponse response = dynamoDbClient.query(request); List> items = response.items(); assertThat(items).hasSize(1); messageId = items.get(0).get("id").s(); - assertThat(Integer.valueOf(items.get(0).get("bodySize").n())).isEqualTo(message.getBytes(StandardCharsets.UTF_8).length); + assertThat(Integer.valueOf(items.get(0).get("bodySize").n())).isEqualTo( + message.getBytes(StandardCharsets.UTF_8).length); assertThat(items.get(0).get("bodyMD5").s()).isEqualTo("b10a8db164e0754105b7a99be72e3fe5"); } } diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java index 986d22a2f..e8ee3ca5c 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LargeMessageIdempotentE2ET.java @@ -142,7 +142,8 @@ public void test_ttlNotExpired_doesNotInsertInDDB_ttlExpired_insertInDDB() throw .builder() .tableName(tableName) .keyConditionExpression("functionName = :func") - .expressionAttributeValues(Collections.singletonMap(":func", AttributeValue.builder().s(functionName).build())) + .expressionAttributeValues( + Collections.singletonMap(":func", AttributeValue.builder().s(functionName).build())) .build(); QueryResponse response = dynamoDbClient.query(request); List> items = response.items(); diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java index 996f49bd4..9eb7cc8e2 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java @@ -172,7 +172,8 @@ public Map deploy() { WaiterResponse waiterResponse = cfn.waiter().waitUntilStackCreateComplete(DescribeStacksRequest.builder().stackName(stackName).build()); if (waiterResponse.matched().response().isPresent()) { - software.amazon.awssdk.services.cloudformation.model.Stack deployedStack = waiterResponse.matched().response().get().stacks().get(0); + software.amazon.awssdk.services.cloudformation.model.Stack deployedStack = + waiterResponse.matched().response().get().stacks().get(0); LOG.info("Stack " + deployedStack.stackName() + " successfully deployed"); Map outputs = new HashMap<>(); deployedStack.outputs().forEach(output -> outputs.put(output.outputKey(), output.outputValue())); @@ -225,8 +226,8 @@ private Stack createStackWithLambda() { functionName = stackName + "-function"; CfnOutput.Builder.create(stack, FUNCTION_NAME_OUTPUT) - .value(functionName) - .build(); + .value(functionName) + .build(); LOG.debug("Building Lambda function with command " + packagingInstruction.stream().collect(Collectors.joining(" ", "[", "]"))); @@ -394,20 +395,20 @@ private void synthesize() { private void uploadAssets() { Map assets = findAssets(); assets.forEach((objectKey, asset) -> - { - if (!asset.assetPath.endsWith(".jar")) { - return; - } - ListObjectsV2Response objects = - s3.listObjectsV2(ListObjectsV2Request.builder().bucket(asset.bucketName).build()); - if (objects.contents().stream().anyMatch(o -> o.key().equals(objectKey))) { - LOG.debug("Asset already exists, skipping"); - return; - } - LOG.info("Uploading asset " + objectKey + " to " + asset.bucketName); - s3.putObject(PutObjectRequest.builder().bucket(asset.bucketName).key(objectKey).build(), - Paths.get(cfnAssetDirectory, asset.assetPath)); - }); + { + if (!asset.assetPath.endsWith(".jar")) { + return; + } + ListObjectsV2Response objects = + s3.listObjectsV2(ListObjectsV2Request.builder().bucket(asset.bucketName).build()); + if (objects.contents().stream().anyMatch(o -> o.key().equals(objectKey))) { + LOG.debug("Asset already exists, skipping"); + return; + } + LOG.info("Uploading asset " + objectKey + " to " + asset.bucketName); + s3.putObject(PutObjectRequest.builder().bucket(asset.bucketName).key(objectKey).build(), + Paths.get(cfnAssetDirectory, asset.assetPath)); + }); } /** @@ -422,17 +423,17 @@ private Map findAssets() { .readTree(new File(cfnAssetDirectory, stackName + ".assets.json")); JsonNode files = jsonNode.get("files"); files.iterator().forEachRemaining(file -> - { - String assetPath = file.get("source").get("path").asText(); - String assetPackaging = file.get("source").get("packaging").asText(); - String bucketName = - file.get("destinations").get("current_account-current_region").get("bucketName").asText(); - String objectKey = - file.get("destinations").get("current_account-current_region").get("objectKey").asText(); - Asset asset = new Asset(assetPath, assetPackaging, bucketName.replace("${AWS::AccountId}", account) - .replace("${AWS::Region}", region.toString())); - assets.put(objectKey, asset); - }); + { + String assetPath = file.get("source").get("path").asText(); + String assetPackaging = file.get("source").get("packaging").asText(); + String bucketName = + file.get("destinations").get("current_account-current_region").get("bucketName").asText(); + String objectKey = + file.get("destinations").get("current_account-current_region").get("objectKey").asText(); + Asset asset = new Asset(assetPath, assetPackaging, bucketName.replace("${AWS::AccountId}", account) + .replace("${AWS::Region}", region.toString())); + assets.put(objectKey, asset); + }); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java index 349a9acc1..00728f451 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/metrics/MetricsFetcher.java @@ -73,33 +73,33 @@ public List fetchMetrics(Instant start, Instant end, int period, String } Callable> callable = () -> - { - LOG.debug("Get Metrics for namespace {}, start {}, end {}, metric {}, dimensions {}", namespace, start, - end, metricName, dimensionsList); - GetMetricDataResponse metricData = cloudwatch.getMetricData(GetMetricDataRequest.builder() - .startTime(start) - .endTime(end) - .metricDataQueries(MetricDataQuery.builder() - .id(metricName.toLowerCase()) - .metricStat(MetricStat.builder() - .unit(StandardUnit.COUNT) - .metric(Metric.builder() - .namespace(namespace) - .metricName(metricName) - .dimensions(dimensionsList) - .build()) - .period(period) - .stat("Sum") - .build()) - .returnData(true) - .build()) - .build()); - List values = metricData.metricDataResults().get(0).values(); - if (values == null || values.isEmpty()) { - throw new Exception("No data found for metric " + metricName); - } - return values; - }; + { + LOG.debug("Get Metrics for namespace {}, start {}, end {}, metric {}, dimensions {}", namespace, start, + end, metricName, dimensionsList); + GetMetricDataResponse metricData = cloudwatch.getMetricData(GetMetricDataRequest.builder() + .startTime(start) + .endTime(end) + .metricDataQueries(MetricDataQuery.builder() + .id(metricName.toLowerCase()) + .metricStat(MetricStat.builder() + .unit(StandardUnit.COUNT) + .metric(Metric.builder() + .namespace(namespace) + .metricName(metricName) + .dimensions(dimensionsList) + .build()) + .period(period) + .stat("Sum") + .build()) + .returnData(true) + .build()) + .build()); + List values = metricData.metricDataResults().get(0).values(); + if (values == null || values.isEmpty()) { + throw new Exception("No data found for metric " + metricName); + } + return values; + }; RetryConfig retryConfig = new RetryConfigBuilder() .withMaxNumberOfTries(10) @@ -110,9 +110,9 @@ public List fetchMetrics(Instant start, Instant end, int period, String CallExecutor> callExecutor = new CallExecutorBuilder>() .config(retryConfig) .afterFailedTryListener(s -> - { - LOG.warn(s.getLastExceptionThatCausedRetry().getMessage() + ", attempts: " + s.getTotalTries()); - }) + { + LOG.warn(s.getLastExceptionThatCausedRetry().getMessage() + ", attempts: " + s.getTotalTries()); + }) .build(); Status> status = callExecutor.execute(callable); return status.getResult(); diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java index dc63987fd..2b5b6e15b 100644 --- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java +++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/tracing/TraceFetcher.java @@ -89,10 +89,10 @@ public static Builder builder() { */ public Trace fetchTrace() { Callable callable = () -> - { - List traceIds = getTraceIds(); - return getTrace(traceIds); - }; + { + List traceIds = getTraceIds(); + return getTrace(traceIds); + }; RetryConfig retryConfig = new RetryConfigBuilder() .withMaxNumberOfTries(10) @@ -103,9 +103,9 @@ public Trace fetchTrace() { CallExecutor callExecutor = new CallExecutorBuilder() .config(retryConfig) .afterFailedTryListener(s -> - { - LOG.warn(s.getLastExceptionThatCausedRetry().getMessage() + ", attempts: " + s.getTotalTries()); - }) + { + LOG.warn(s.getLastExceptionThatCausedRetry().getMessage() + ", attempts: " + s.getTotalTries()); + }) .build(); Status status = callExecutor.execute(callable); return status.getResult(); @@ -126,43 +126,43 @@ private Trace getTrace(List traceIds) { } Trace traceRes = new Trace(); tracesResponse.traces().forEach(trace -> - { - if (trace.hasSegments()) { - trace.segments().forEach(segment -> - { - try { - SegmentDocument document = MAPPER.readValue(segment.document(), SegmentDocument.class); - if (document.getOrigin().equals("AWS::Lambda::Function")) { - if (document.hasSubsegments()) { - getNestedSubSegments(document.getSubsegments(), traceRes, - Collections.emptyList()); - } - } - } catch (JsonProcessingException e) { - LOG.error("Failed to parse segment document: " + e.getMessage()); - throw new RuntimeException(e); + { + if (trace.hasSegments()) { + trace.segments().forEach(segment -> + { + try { + SegmentDocument document = MAPPER.readValue(segment.document(), SegmentDocument.class); + if (document.getOrigin().equals("AWS::Lambda::Function")) { + if (document.hasSubsegments()) { + getNestedSubSegments(document.getSubsegments(), traceRes, + Collections.emptyList()); } - }); - } - }); + } + } catch (JsonProcessingException e) { + LOG.error("Failed to parse segment document: " + e.getMessage()); + throw new RuntimeException(e); + } + }); + } + }); return traceRes; } private void getNestedSubSegments(List subsegments, Trace traceRes, List idsToIgnore) { subsegments.forEach(subsegment -> - { - List subSegmentIdsToIgnore = Collections.emptyList(); - if (!excludedSegments.contains(subsegment.getName()) && !idsToIgnore.contains(subsegment.getId())) { - traceRes.addSubSegment(subsegment); - if (subsegment.hasSubsegments()) { - subSegmentIdsToIgnore = subsegment.getSubsegments().stream().map(SubSegment::getId) - .collect(Collectors.toList()); - } - } + { + List subSegmentIdsToIgnore = Collections.emptyList(); + if (!excludedSegments.contains(subsegment.getName()) && !idsToIgnore.contains(subsegment.getId())) { + traceRes.addSubSegment(subsegment); if (subsegment.hasSubsegments()) { - getNestedSubSegments(subsegment.getSubsegments(), traceRes, subSegmentIdsToIgnore); + subSegmentIdsToIgnore = subsegment.getSubsegments().stream().map(SubSegment::getId) + .collect(Collectors.toList()); } - }); + } + if (subsegment.hasSubsegments()) { + getNestedSubSegments(subsegment.getSubsegments(), traceRes, subSegmentIdsToIgnore); + } + }); } /** diff --git a/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java b/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java index d7301b149..82e7b9ead 100644 --- a/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java +++ b/powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/DynamoDBPersistenceStore.java @@ -14,18 +14,6 @@ package software.amazon.lambda.powertools.idempotency.persistence; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; -import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; -import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; -import software.amazon.awssdk.regions.Region; -import software.amazon.awssdk.services.dynamodb.DynamoDbClient; -import software.amazon.awssdk.utils.StringUtils; -import software.amazon.lambda.powertools.core.internal.UserAgentConfigurator; -import software.amazon.lambda.powertools.idempotency.Constants; -import software.amazon.lambda.powertools.idempotency.exceptions.IdempotencyItemAlreadyExistsException; -import software.amazon.lambda.powertools.idempotency.exceptions.IdempotencyItemNotFoundException; import static software.amazon.lambda.powertools.core.internal.LambdaConstants.AWS_REGION_ENV; import static software.amazon.lambda.powertools.core.internal.LambdaConstants.LAMBDA_FUNCTION_NAME_ENV; import static software.amazon.lambda.powertools.idempotency.persistence.DataRecord.Status.INPROGRESS; @@ -37,7 +25,13 @@ import java.util.OptionalLong; import java.util.stream.Collectors; import java.util.stream.Stream; - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption; +import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.ConditionalCheckFailedException; import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest; @@ -45,6 +39,11 @@ import software.amazon.awssdk.services.dynamodb.model.GetItemResponse; import software.amazon.awssdk.services.dynamodb.model.PutItemRequest; import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest; +import software.amazon.awssdk.utils.StringUtils; +import software.amazon.lambda.powertools.core.internal.UserAgentConfigurator; +import software.amazon.lambda.powertools.idempotency.Constants; +import software.amazon.lambda.powertools.idempotency.exceptions.IdempotencyItemAlreadyExistsException; +import software.amazon.lambda.powertools.idempotency.exceptions.IdempotencyItemNotFoundException; /** * DynamoDB version of the {@link PersistenceStore}. Will store idempotency data in DynamoDB.
@@ -52,9 +51,8 @@ */ public class DynamoDBPersistenceStore extends BasePersistenceStore implements PersistenceStore { - private static final Logger LOG = LoggerFactory.getLogger(DynamoDBPersistenceStore.class); public static final String IDEMPOTENCY = "idempotency"; - + private static final Logger LOG = LoggerFactory.getLogger(DynamoDBPersistenceStore.class); private final String tableName; private final String keyAttr; private final String staticPkValue; @@ -97,7 +95,9 @@ private DynamoDBPersistenceStore(String tableName, if (idempotencyDisabledEnv == null || "false".equalsIgnoreCase(idempotencyDisabledEnv)) { this.dynamoDbClient = DynamoDbClient.builder() .httpClient(UrlConnectionHttpClient.builder().build()) - .overrideConfiguration(ClientOverrideConfiguration.builder().putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, UserAgentConfigurator.getUserAgent(IDEMPOTENCY)).build()) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, + UserAgentConfigurator.getUserAgent(IDEMPOTENCY)).build()) .region(Region.of(System.getenv(AWS_REGION_ENV))) .build(); } else { diff --git a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessage.java b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessage.java index 758d7eb45..4e556966c 100644 --- a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessage.java +++ b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/LargeMessage.java @@ -64,7 +64,7 @@ /** * Specify if S3 objects must be deleted after being processed (default = true) - Alternatively you might consider using S3 lifecycle policies to remove the payloads automatically after a period of time. + * Alternatively you might consider using S3 lifecycle policies to remove the payloads automatically after a period of time. */ boolean deleteS3Object() default true; } diff --git a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspect.java b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspect.java index 861193203..2aa81691f 100644 --- a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspect.java +++ b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspect.java @@ -51,7 +51,8 @@ public Object around(ProceedingJoinPoint pjp, Optional> largeMessageProcessor = LargeMessageProcessorFactory.get(message); if (!largeMessageProcessor.isPresent()) { - LOG.warn("@LargeMessage annotation is placed on a method with unsupported message type [{}], proceeding", message.getClass()); + LOG.warn("@LargeMessage annotation is placed on a method with unsupported message type [{}], proceeding", + message.getClass()); return pjp.proceed(proceedArgs); } diff --git a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageProcessor.java b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageProcessor.java index f0e89e631..5478931f1 100644 --- a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageProcessor.java +++ b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageProcessor.java @@ -56,7 +56,8 @@ public Object process(ProceedingJoinPoint pjp, boolean deleteS3Object) throws Th return pjp.proceed(proceedArgs); } // legacy attribute (sqs only) - payloadPointer = payloadPointer.replace("com.amazon.sqs.javamessaging.MessageS3Pointer", "software.amazon.payloadoffloading.PayloadS3Pointer"); + payloadPointer = payloadPointer.replace("com.amazon.sqs.javamessaging.MessageS3Pointer", + "software.amazon.payloadoffloading.PayloadS3Pointer"); if (LOG.isInfoEnabled()) { LOG.info("Large message [{}]: retrieving content from S3", getMessageId(message)); diff --git a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeSQSMessageProcessor.java b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeSQSMessageProcessor.java index 18c99e300..7fd79b7c9 100644 --- a/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeSQSMessageProcessor.java +++ b/powertools-large-messages/src/main/java/software/amazon/lambda/powertools/largemessages/internal/LargeSQSMessageProcessor.java @@ -40,40 +40,6 @@ class LargeSQSMessageProcessor extends LargeMessageProcessor { private static final byte STRING_LIST_TYPE_FIELD_INDEX = 3; private static final byte BINARY_LIST_TYPE_FIELD_INDEX = 4; - @Override - protected String getMessageId(SQSMessage message) { - return message.getMessageId(); - } - - @Override - protected String getMessageContent(SQSMessage message) { - return message.getBody(); - } - - @Override - protected void updateMessageContent(SQSMessage message, String messageContent) { - message.setBody(messageContent); - // we update the MD5 digest so it doesn't look tempered - message.setMd5OfBody(calculateMessageBodyMd5(messageContent).orElse(message.getMd5OfBody())); - } - - @Override - protected boolean isLargeMessage(SQSMessage message) { - Map msgAttributes = message.getMessageAttributes(); - return msgAttributes != null && (msgAttributes.containsKey(RESERVED_ATTRIBUTE_NAME) || msgAttributes.containsKey(LEGACY_RESERVED_ATTRIBUTE_NAME)); - } - - @Override - protected void removeLargeMessageAttributes(SQSMessage message) { - // message.getMessageAttributes() does not support remove operation, copy to new map - Map newAttributes = new HashMap<>(message.getMessageAttributes()); - newAttributes.remove(RESERVED_ATTRIBUTE_NAME); - newAttributes.remove(LEGACY_RESERVED_ATTRIBUTE_NAME); - message.setMessageAttributes(newAttributes); - // we update the MD5 digest so it doesn't look tempered - message.setMd5OfMessageAttributes(calculateMessageAttributesMd5(newAttributes).orElse(message.getMd5OfMessageAttributes())); - } - /** * Compute the MD5 of the message body.
* Inspired from {@code software.amazon.awssdk.services.sqs.internal.MessageMD5ChecksumInterceptor}.
@@ -170,4 +136,40 @@ private static void updateLengthAndBytes(MessageDigest digest, ByteBuffer binary digest.update(lengthBytes.array()); digest.update(readOnlyBuffer); } + + @Override + protected String getMessageId(SQSMessage message) { + return message.getMessageId(); + } + + @Override + protected String getMessageContent(SQSMessage message) { + return message.getBody(); + } + + @Override + protected void updateMessageContent(SQSMessage message, String messageContent) { + message.setBody(messageContent); + // we update the MD5 digest so it doesn't look tempered + message.setMd5OfBody(calculateMessageBodyMd5(messageContent).orElse(message.getMd5OfBody())); + } + + @Override + protected boolean isLargeMessage(SQSMessage message) { + Map msgAttributes = message.getMessageAttributes(); + return msgAttributes != null && (msgAttributes.containsKey(RESERVED_ATTRIBUTE_NAME) || + msgAttributes.containsKey(LEGACY_RESERVED_ATTRIBUTE_NAME)); + } + + @Override + protected void removeLargeMessageAttributes(SQSMessage message) { + // message.getMessageAttributes() does not support remove operation, copy to new map + Map newAttributes = new HashMap<>(message.getMessageAttributes()); + newAttributes.remove(RESERVED_ATTRIBUTE_NAME); + newAttributes.remove(LEGACY_RESERVED_ATTRIBUTE_NAME); + message.setMessageAttributes(newAttributes); + // we update the MD5 digest so it doesn't look tempered + message.setMd5OfMessageAttributes( + calculateMessageAttributesMd5(newAttributes).orElse(message.getMd5OfMessageAttributes())); + } } diff --git a/powertools-large-messages/src/test/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspectTest.java b/powertools-large-messages/src/test/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspectTest.java index 95dfd445a..c364a89d9 100644 --- a/powertools-large-messages/src/test/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspectTest.java +++ b/powertools-large-messages/src/test/java/software/amazon/lambda/powertools/largemessages/internal/LargeMessageAspectTest.java @@ -65,7 +65,9 @@ public class LargeMessageAspectTest { private static final String BUCKET_NAME = "bucketname"; private static final String BUCKET_KEY = "c71eb2ae-37e0-4265-8909-32f4153faddf"; - private static final String BIG_MESSAGE_BODY = "[\"software.amazon.payloadoffloading.PayloadS3Pointer\", {\"s3BucketName\":\"" + BUCKET_NAME + "\", \"s3Key\":\"" + BUCKET_KEY + "\"}]"; + private static final String BIG_MESSAGE_BODY = + "[\"software.amazon.payloadoffloading.PayloadS3Pointer\", {\"s3BucketName\":\"" + BUCKET_NAME + + "\", \"s3Key\":\"" + BUCKET_KEY + "\"}]"; @Mock private S3Client s3Client; @@ -89,7 +91,8 @@ private String processSQSMessage(SQSMessage sqsMessage, Context context) { } @LargeMessage - private String processSQSMessageWithMd5Checks(SQSMessage transformedMessage, String initialBodyMD5, String initialAttributesMD5) { + private String processSQSMessageWithMd5Checks(SQSMessage transformedMessage, String initialBodyMD5, + String initialAttributesMD5) { assertThat(transformedMessage.getMd5OfBody()).isNotEqualTo(initialBodyMD5); assertThat(transformedMessage.getMd5OfBody()).isEqualTo(BIG_MSG_MD5); @@ -133,7 +136,8 @@ public void testLargeSQSMessageWithDefaultDeletion() { ArgumentCaptor delete = ArgumentCaptor.forClass(DeleteObjectRequest.class); verify(s3Client).deleteObject(delete.capture()); Assertions.assertThat(delete.getValue()) - .satisfies((Consumer) deleteObjectRequest -> { + .satisfies((Consumer) deleteObjectRequest -> + { assertThat(deleteObjectRequest.bucket()) .isEqualTo(BUCKET_NAME); @@ -156,7 +160,8 @@ public void testLargeSQSMessage_shouldChangeMd5OfBodyAndAttributes() { binAttribute.setDataType("Binary"); MessageAttribute listBinAttribute = new MessageAttribute(); - listBinAttribute.setBinaryListValues(Collections.singletonList(ByteBuffer.wrap("customAttributeValue".getBytes(StandardCharsets.UTF_8)))); + listBinAttribute.setBinaryListValues( + Collections.singletonList(ByteBuffer.wrap("customAttributeValue".getBytes(StandardCharsets.UTF_8)))); listBinAttribute.setDataType("BinaryList"); Map attrs = new HashMap<>(); @@ -166,7 +171,8 @@ public void testLargeSQSMessage_shouldChangeMd5OfBodyAndAttributes() { SQSMessage sqsMessage = sqsMessageWithBody(BIG_MESSAGE_BODY, true, attrs); // when - String message = processSQSMessageWithMd5Checks(sqsMessage, sqsMessage.getMd5OfBody(), sqsMessage.getMd5OfMessageAttributes()); + String message = processSQSMessageWithMd5Checks(sqsMessage, sqsMessage.getMd5OfBody(), + sqsMessage.getMd5OfMessageAttributes()); // then assertThat(message).isEqualTo(BIG_MSG); @@ -186,7 +192,8 @@ public void testLargeSNSMessageWithDefaultDeletion() { ArgumentCaptor delete = ArgumentCaptor.forClass(DeleteObjectRequest.class); verify(s3Client).deleteObject(delete.capture()); Assertions.assertThat(delete.getValue()) - .satisfies((Consumer) deleteObjectRequest -> { + .satisfies((Consumer) deleteObjectRequest -> + { assertThat(deleteObjectRequest.bucket()) .isEqualTo(BUCKET_NAME); @@ -263,7 +270,8 @@ public void testNullMessage_shouldProceedWithoutS3() { @Test public void testGetS3ObjectException_shouldThrowLargeMessageProcessingException() { // given - when(s3Client.getObject(any(GetObjectRequest.class))).thenThrow(S3Exception.create("Permission denied", new Exception("User is not allowed to access bucket " + BUCKET_NAME))); + when(s3Client.getObject(any(GetObjectRequest.class))).thenThrow(S3Exception.create("Permission denied", + new Exception("User is not allowed to access bucket " + BUCKET_NAME))); SQSMessage sqsMessage = sqsMessageWithBody(BIG_MESSAGE_BODY, true); // when / then @@ -276,7 +284,8 @@ public void testGetS3ObjectException_shouldThrowLargeMessageProcessingException( public void testDeleteS3ObjectException_shouldThrowLargeMessageProcessingException() { // given when(s3Client.getObject(any(GetObjectRequest.class))).thenReturn(s3ObjectWithLargeMessage()); - when(s3Client.deleteObject(any(DeleteObjectRequest.class))).thenThrow(S3Exception.create("Permission denied", new Exception("User is not allowed to access bucket " + BUCKET_NAME))); + when(s3Client.deleteObject(any(DeleteObjectRequest.class))).thenThrow(S3Exception.create("Permission denied", + new Exception("User is not allowed to access bucket " + BUCKET_NAME))); SQSMessage sqsMessage = sqsMessageWithBody(BIG_MESSAGE_BODY, true); // when / then @@ -286,18 +295,21 @@ public void testDeleteS3ObjectException_shouldThrowLargeMessageProcessingExcepti } private ResponseInputStream s3ObjectWithLargeMessage() { - return new ResponseInputStream<>(GetObjectResponse.builder().build(), AbortableInputStream.create(new ByteArrayInputStream(BIG_MSG.getBytes()))); + return new ResponseInputStream<>(GetObjectResponse.builder().build(), + AbortableInputStream.create(new ByteArrayInputStream(BIG_MSG.getBytes()))); } private SQSMessage sqsMessageWithBody(String messageBody, boolean largeMessage) { return sqsMessageWithBody(messageBody, largeMessage, null); } - private SQSMessage sqsMessageWithBody(String messageBody, boolean largeMessage, Map optionalAttributes) { + private SQSMessage sqsMessageWithBody(String messageBody, boolean largeMessage, + Map optionalAttributes) { SQSMessage sqsMessage = new SQSMessage(); sqsMessage.setBody(messageBody); if (messageBody != null) { - sqsMessage.setMd5OfBody(calculateMessageBodyMd5(messageBody).orElseThrow(() -> new RuntimeException("Unable to md5 body " + messageBody))); + sqsMessage.setMd5OfBody(calculateMessageBodyMd5(messageBody).orElseThrow( + () -> new RuntimeException("Unable to md5 body " + messageBody))); } if (largeMessage) { @@ -311,7 +323,8 @@ private SQSMessage sqsMessageWithBody(String messageBody, boolean largeMessage, attributeMap.put(LargeMessageProcessor.RESERVED_ATTRIBUTE_NAME, payloadAttribute); sqsMessage.setMessageAttributes(attributeMap); - sqsMessage.setMd5OfMessageAttributes(calculateMessageAttributesMd5(attributeMap).orElseThrow(() -> new RuntimeException("Unable to md5 attributes " + attributeMap))); + sqsMessage.setMd5OfMessageAttributes(calculateMessageAttributesMd5(attributeMap).orElseThrow( + () -> new RuntimeException("Unable to md5 attributes " + attributeMap))); } return sqsMessage; } @@ -319,7 +332,8 @@ private SQSMessage sqsMessageWithBody(String messageBody, boolean largeMessage, private SNSRecord snsRecordWithMessage(String messageBody, boolean largeMessage) { SNS sns = new SNS().withMessage(messageBody); if (largeMessage) { - sns.setMessageAttributes(Collections.singletonMap(LargeMessageProcessor.RESERVED_ATTRIBUTE_NAME, new SNSEvent.MessageAttribute())); + sns.setMessageAttributes(Collections.singletonMap(LargeMessageProcessor.RESERVED_ATTRIBUTE_NAME, + new SNSEvent.MessageAttribute())); } return new SNSRecord().withSns(sns); } diff --git a/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonLayout.java b/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonLayout.java index c2c13c86f..fd646ab50 100644 --- a/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonLayout.java +++ b/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonLayout.java @@ -163,11 +163,11 @@ private Map resolveAdditionalFields(LogEvent logEvent) { // Go over MDC logEvent.getContextData().forEach((key, value) -> - { - if (Strings.isNotBlank(key) && value != null) { - additionalFieldsMap.put(key, value); - } - }); + { + if (Strings.isNotBlank(key) && value != null) { + additionalFieldsMap.put(key, value); + } + }); return additionalFieldsMap; } diff --git a/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsResolver.java b/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsResolver.java index c7b7c5d53..dc9816932 100644 --- a/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsResolver.java +++ b/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsResolver.java @@ -40,12 +40,12 @@ public void resolve(LogEvent logEvent, JsonWriter jsonWriter) { // Inject all the context information. ReadOnlyStringMap contextData = logEvent.getContextData(); contextData.forEach((key, value) -> - { - jsonWriter.writeSeparator(); - jsonWriter.writeString(key); - stringBuilder.append(':'); - jsonWriter.writeValue(value); - }); + { + jsonWriter.writeSeparator(); + jsonWriter.writeString(key); + stringBuilder.append(':'); + jsonWriter.writeValue(value); + }); } }; } diff --git a/powertools-logging/src/test/java/org/apache/logging/log4j/core/layout/LambdaJsonLayoutTest.java b/powertools-logging/src/test/java/org/apache/logging/log4j/core/layout/LambdaJsonLayoutTest.java index 47b495da3..9b0c6165a 100644 --- a/powertools-logging/src/test/java/org/apache/logging/log4j/core/layout/LambdaJsonLayoutTest.java +++ b/powertools-logging/src/test/java/org/apache/logging/log4j/core/layout/LambdaJsonLayoutTest.java @@ -83,15 +83,15 @@ void shouldModifyLogLevelBasedOnEnvVariable() assertThat(Files.lines(Paths.get("target/logfile.json"))) .hasSize(2) .satisfies(line -> - { - assertThat(parseToMap(line.get(0))) - .containsEntry("level", "INFO") - .containsEntry("message", "Test event"); - - assertThat(parseToMap(line.get(1))) - .containsEntry("level", "DEBUG") - .containsEntry("message", "Test debug event"); - }); + { + assertThat(parseToMap(line.get(0))) + .containsEntry("level", "INFO") + .containsEntry("message", "Test event"); + + assertThat(parseToMap(line.get(1))) + .containsEntry("level", "DEBUG") + .containsEntry("message", "Test debug event"); + }); } @Test @@ -103,19 +103,19 @@ void shouldModifyLogLevelBasedOnSamplingRule() throws IOException { assertThat(Files.lines(Paths.get("target/logfile.json"))) .hasSize(3) .satisfies(line -> - { - assertThat(parseToMap(line.get(0))) - .containsEntry("level", "DEBUG") - .containsEntry("loggerName", LambdaLoggingAspect.class.getCanonicalName()); - - assertThat(parseToMap(line.get(1))) - .containsEntry("level", "INFO") - .containsEntry("message", "Test event"); - - assertThat(parseToMap(line.get(2))) - .containsEntry("level", "DEBUG") - .containsEntry("message", "Test debug event"); - }); + { + assertThat(parseToMap(line.get(0))) + .containsEntry("level", "DEBUG") + .containsEntry("loggerName", LambdaLoggingAspect.class.getCanonicalName()); + + assertThat(parseToMap(line.get(1))) + .containsEntry("level", "INFO") + .containsEntry("message", "Test event"); + + assertThat(parseToMap(line.get(2))) + .containsEntry("level", "DEBUG") + .containsEntry("message", "Test debug event"); + }); } private void resetLogLevel(Level level) diff --git a/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/MetricsUtils.java b/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/MetricsUtils.java index 1da100f26..09517d46e 100644 --- a/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/MetricsUtils.java +++ b/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/MetricsUtils.java @@ -96,10 +96,10 @@ public static void withSingleMetric(final String name, final Unit unit, final Consumer logger) { withMetricsLogger(metricsLogger -> - { - metricsLogger.putMetric(name, value, unit); - logger.accept(metricsLogger); - }); + { + metricsLogger.putMetric(name, value, unit); + logger.accept(metricsLogger); + }); } /** @@ -119,11 +119,11 @@ public static void withSingleMetric(final String name, final String namespace, final Consumer logger) { withMetricsLogger(metricsLogger -> - { - metricsLogger.setNamespace(namespace); - metricsLogger.putMetric(name, value, unit); - logger.accept(metricsLogger); - }); + { + metricsLogger.setNamespace(namespace); + metricsLogger.putMetric(name, value, unit); + logger.accept(metricsLogger); + }); } /** diff --git a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/MetricsLoggerTest.java b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/MetricsLoggerTest.java index da4162ea0..7f234a4d6 100644 --- a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/MetricsLoggerTest.java +++ b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/MetricsLoggerTest.java @@ -72,20 +72,20 @@ void singleMetricsCaptureUtilityWithDefaultDimension() { MetricsUtils.withSingleMetric("Metric1", 1, Unit.COUNT, "test", metricsLogger -> - { - }); + { + }); assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); - - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("Service", "Booking") - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); - }); + { + Map logAsJson = readAsJson(s); + + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("Service", "Booking") + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); + }); } } @@ -103,15 +103,15 @@ void singleMetricsCaptureUtility() { assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); - - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("Dimension1", "Value1") - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); - }); + { + Map logAsJson = readAsJson(s); + + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("Dimension1", "Value1") + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); + }); } } @@ -130,21 +130,21 @@ void singleMetricsCaptureUtilityWithDefaultNameSpace() { assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); + { + Map logAsJson = readAsJson(s); - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("Dimension1", "Value1") - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("Dimension1", "Value1") + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); - Map aws = (Map) logAsJson.get("_aws"); + Map aws = (Map) logAsJson.get("_aws"); - assertThat(aws.get("CloudWatchMetrics")) - .asString() - .contains("Namespace=GlobalName"); - }); + assertThat(aws.get("CloudWatchMetrics")) + .asString() + .contains("Namespace=GlobalName"); + }); } } @@ -175,28 +175,28 @@ private void testLogger(Consumer> methodToTest) { .thenReturn("Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1\""); methodToTest.accept(metricsLogger -> - { - metricsLogger.setDimensions(DimensionSet.of("Dimension1", "Value1")); - metricsLogger.putMetric("Metric1", 1, Unit.COUNT); - }); + { + metricsLogger.setDimensions(DimensionSet.of("Dimension1", "Value1")); + metricsLogger.putMetric("Metric1", 1, Unit.COUNT); + }); assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); + { + Map logAsJson = readAsJson(s); - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("Dimension1", "Value1") - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("Dimension1", "Value1") + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793"); - Map aws = (Map) logAsJson.get("_aws"); + Map aws = (Map) logAsJson.get("_aws"); - assertThat(aws.get("CloudWatchMetrics")) - .asString() - .contains("Namespace=GlobalName"); - }); + assertThat(aws.get("CloudWatchMetrics")) + .asString() + .contains("Namespace=GlobalName"); + }); } } diff --git a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultDimensionHandler.java b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultDimensionHandler.java index 5d7fb7120..761c20caa 100644 --- a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultDimensionHandler.java +++ b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultDimensionHandler.java @@ -38,8 +38,8 @@ public Object handleRequest(Object input, Context context) { metricsLogger.putMetric("Metric1", 1, Unit.BYTES); withSingleMetric("Metric2", 1, Unit.COUNT, log -> - { - }); + { + }); return null; } diff --git a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultNoDimensionHandler.java b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultNoDimensionHandler.java index 0a0079b80..d968f94f5 100644 --- a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultNoDimensionHandler.java +++ b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/handlers/PowertoolsMetricsEnabledDefaultNoDimensionHandler.java @@ -37,8 +37,8 @@ public Object handleRequest(Object input, Context context) { metricsLogger.putMetric("Metric1", 1, Unit.BYTES); withSingleMetric("Metric2", 1, Unit.COUNT, log -> - { - }); + { + }); return null; } diff --git a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspectTest.java b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspectTest.java index 44202b8b8..eaddfa75d 100644 --- a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspectTest.java +++ b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspectTest.java @@ -100,30 +100,30 @@ public void metricsWithoutColdStart() { assertThat(out.toString().split("\n")) .hasSize(2) .satisfies(s -> - { - Map logAsJson = readAsJson(s[0]); - - assertThat(logAsJson) - .containsEntry("Metric2", 1.0) - .containsEntry("Dimension1", "Value1") - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793") - .containsEntry("function_request_id", "123ABC"); - - Map aws = (Map) logAsJson.get("_aws"); - - assertThat(aws.get("CloudWatchMetrics")) - .asString() - .contains("Namespace=ExampleApplication"); - - logAsJson = readAsJson(s[1]); - - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s[0]); + + assertThat(logAsJson) + .containsEntry("Metric2", 1.0) + .containsEntry("Dimension1", "Value1") + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793") + .containsEntry("function_request_id", "123ABC"); + + Map aws = (Map) logAsJson.get("_aws"); + + assertThat(aws.get("CloudWatchMetrics")) + .asString() + .contains("Namespace=ExampleApplication"); + + logAsJson = readAsJson(s[1]); + + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -144,30 +144,30 @@ public void metricsWithDefaultDimensionSpecified() { assertThat(out.toString().split("\n")) .hasSize(2) .satisfies(s -> - { - Map logAsJson = readAsJson(s[0]); - - assertThat(logAsJson) - .containsEntry("Metric2", 1.0) - .containsEntry("CustomDimension", "booking") - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793") - .containsEntry("function_request_id", "123ABC"); - - Map aws = (Map) logAsJson.get("_aws"); - - assertThat(aws.get("CloudWatchMetrics")) - .asString() - .contains("Namespace=ExampleApplication"); - - logAsJson = readAsJson(s[1]); - - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("CustomDimension", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s[0]); + + assertThat(logAsJson) + .containsEntry("Metric2", 1.0) + .containsEntry("CustomDimension", "booking") + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793") + .containsEntry("function_request_id", "123ABC"); + + Map aws = (Map) logAsJson.get("_aws"); + + assertThat(aws.get("CloudWatchMetrics")) + .asString() + .contains("Namespace=ExampleApplication"); + + logAsJson = readAsJson(s[1]); + + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("CustomDimension", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -188,28 +188,28 @@ public void metricsWithDefaultNoDimensionSpecified() { assertThat(out.toString().split("\n")) .hasSize(2) .satisfies(s -> - { - Map logAsJson = readAsJson(s[0]); + { + Map logAsJson = readAsJson(s[0]); - assertThat(logAsJson) - .containsEntry("Metric2", 1.0) - .containsKey("_aws") - .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793") - .containsEntry("function_request_id", "123ABC"); + assertThat(logAsJson) + .containsEntry("Metric2", 1.0) + .containsKey("_aws") + .containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793") + .containsEntry("function_request_id", "123ABC"); - Map aws = (Map) logAsJson.get("_aws"); + Map aws = (Map) logAsJson.get("_aws"); - assertThat(aws.get("CloudWatchMetrics")) - .asString() - .contains("Namespace=ExampleApplication"); + assertThat(aws.get("CloudWatchMetrics")) + .asString() + .contains("Namespace=ExampleApplication"); - logAsJson = readAsJson(s[1]); + logAsJson = readAsJson(s[1]); - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -228,25 +228,25 @@ public void metricsWithColdStart() { assertThat(out.toString().split("\n")) .hasSize(2) .satisfies(s -> - { - Map logAsJson = readAsJson(s[0]); - - assertThat(logAsJson) - .doesNotContainKey("Metric1") - .containsEntry("ColdStart", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - - logAsJson = readAsJson(s[1]); - - assertThat(logAsJson) - .doesNotContainKey("ColdStart") - .containsEntry("Metric1", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s[0]); + + assertThat(logAsJson) + .doesNotContainKey("Metric1") + .containsEntry("ColdStart", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + + logAsJson = readAsJson(s[1]); + + assertThat(logAsJson) + .doesNotContainKey("ColdStart") + .containsEntry("Metric1", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -265,34 +265,34 @@ public void noColdStartMetricsWhenColdStartDone() { assertThat(out.toString().split("\n")) .hasSize(3) .satisfies(s -> - { - Map logAsJson = readAsJson(s[0]); - - assertThat(logAsJson) - .doesNotContainKey("Metric1") - .containsEntry("ColdStart", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - - logAsJson = readAsJson(s[1]); - - assertThat(logAsJson) - .doesNotContainKey("ColdStart") - .containsEntry("Metric1", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - - logAsJson = readAsJson(s[2]); - - assertThat(logAsJson) - .doesNotContainKey("ColdStart") - .containsEntry("Metric1", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s[0]); + + assertThat(logAsJson) + .doesNotContainKey("Metric1") + .containsEntry("ColdStart", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + + logAsJson = readAsJson(s[1]); + + assertThat(logAsJson) + .doesNotContainKey("ColdStart") + .containsEntry("Metric1", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + + logAsJson = readAsJson(s[2]); + + assertThat(logAsJson) + .doesNotContainKey("ColdStart") + .containsEntry("Metric1", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -309,15 +309,15 @@ public void metricsWithStreamHandler() throws IOException { assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); - - assertThat(logAsJson) - .containsEntry("Metric1", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s); + + assertThat(logAsJson) + .containsEntry("Metric1", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -348,13 +348,13 @@ public void noExceptionWhenNoMetricsEmitted() { assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); + { + Map logAsJson = readAsJson(s); - assertThat(logAsJson) - .containsEntry("Service", "booking") - .doesNotContainKey("_aws"); - }); + assertThat(logAsJson) + .containsEntry("Service", "booking") + .doesNotContainKey("_aws"); + }); } } @@ -369,13 +369,13 @@ public void allowWhenNoDimensionsSet() { assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); - assertThat(logAsJson) - .containsEntry("CoolMetric", 1.0) - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s); + assertThat(logAsJson) + .containsEntry("CoolMetric", 1.0) + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } @@ -409,14 +409,14 @@ public void metricsPublishedEvenHandlerThrowsException() { assertThat(out.toString()) .satisfies(s -> - { - Map logAsJson = readAsJson(s); - assertThat(logAsJson) - .containsEntry("CoolMetric", 1.0) - .containsEntry("Service", "booking") - .containsEntry("function_request_id", "123ABC") - .containsKey("_aws"); - }); + { + Map logAsJson = readAsJson(s); + assertThat(logAsJson) + .containsEntry("CoolMetric", 1.0) + .containsEntry("Service", "booking") + .containsEntry("function_request_id", "123ABC") + .containsKey("_aws"); + }); } } diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/AppConfigProvider.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/AppConfigProvider.java index 0df05f875..f2e4faebb 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/AppConfigProvider.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/AppConfigProvider.java @@ -157,7 +157,8 @@ public AppConfigProvider build() { .httpClientBuilder(UrlConnectionHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) .overrideConfiguration(ClientOverrideConfiguration.builder() - .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) + .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, + UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) .build(); } diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java index e6481c5da..edb82f5ec 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java @@ -129,15 +129,15 @@ public Map getMultiple(String path) { String pathWithoutTrailingSlash = path.replaceAll("\\/+$", ""); try { return (Map) cacheManager.getIfNotExpired(pathWithoutTrailingSlash, now()).orElseGet(() -> - { - Map params = getMultipleValues(pathWithoutTrailingSlash); + { + Map params = getMultipleValues(pathWithoutTrailingSlash); - cacheManager.putInCache(pathWithoutTrailingSlash, params); + cacheManager.putInCache(pathWithoutTrailingSlash, params); - params.forEach((k, v) -> cacheManager.putInCache(pathWithoutTrailingSlash + "/" + k, v)); + params.forEach((k, v) -> cacheManager.putInCache(pathWithoutTrailingSlash + "/" + k, v)); - return params; - }); + return params; + }); } finally { resetToDefaults(); } @@ -158,18 +158,18 @@ public Map getMultiple(String path) { public String get(final String key) { try { return (String) cacheManager.getIfNotExpired(key, now()).orElseGet(() -> - { - String value = getValue(key); + { + String value = getValue(key); - String transformedValue = value; - if (transformationManager != null && transformationManager.shouldTransform()) { - transformedValue = transformationManager.performBasicTransformation(value); - } + String transformedValue = value; + if (transformationManager != null && transformationManager.shouldTransform()) { + transformedValue = transformationManager.performBasicTransformation(value); + } - cacheManager.putInCache(key, transformedValue); + cacheManager.putInCache(key, transformedValue); - return transformedValue; - }); + return transformedValue; + }); } finally { // in all case, we reset options to default, for next call resetToDefaults(); @@ -192,19 +192,19 @@ public String get(final String key) { public T get(final String key, final Class targetClass) { try { return (T) cacheManager.getIfNotExpired(key, now()).orElseGet(() -> - { - String value = getValue(key); + { + String value = getValue(key); - if (transformationManager == null) { - throw new IllegalStateException( - "Trying to transform value while no TransformationManager has been provided."); - } - T transformedValue = transformationManager.performComplexTransformation(value, targetClass); + if (transformationManager == null) { + throw new IllegalStateException( + "Trying to transform value while no TransformationManager has been provided."); + } + T transformedValue = transformationManager.performComplexTransformation(value, targetClass); - cacheManager.putInCache(key, transformedValue); + cacheManager.putInCache(key, transformedValue); - return transformedValue; - }); + return transformedValue; + }); } finally { // in all case, we reset options to default, for next call resetToDefaults(); diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/DynamoDbProvider.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/DynamoDbProvider.java index 499241927..3a8732e18 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/DynamoDbProvider.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/DynamoDbProvider.java @@ -109,14 +109,14 @@ protected Map getMultipleValues(String path) { .items() .stream() .peek((i) -> - { - if (!i.containsKey("sk")) { - throw new DynamoDbProviderSchemaException("Missing 'sk': " + i.toString()); - } - if (!i.containsKey("value")) { - throw new DynamoDbProviderSchemaException("Missing 'value': " + i.toString()); - } - }) + { + if (!i.containsKey("sk")) { + throw new DynamoDbProviderSchemaException("Missing 'sk': " + i.toString()); + } + if (!i.containsKey("value")) { + throw new DynamoDbProviderSchemaException("Missing 'value': " + i.toString()); + } + }) .collect( Collectors.toMap( (i) -> i.get("sk").s(), @@ -135,7 +135,9 @@ private static DynamoDbClient createClient() { return DynamoDbClient.builder() .httpClientBuilder(UrlConnectionHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) - .overrideConfiguration(ClientOverrideConfiguration.builder().putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, + UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) .build(); } diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SSMProvider.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SSMProvider.java index 4cfd8f899..549cdfbab 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SSMProvider.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SSMProvider.java @@ -208,19 +208,19 @@ private Map getMultipleBis(String path, String nextToken) { GetParametersByPathResponse res = client.getParametersByPath(request); if (res.hasParameters()) { res.parameters().forEach(parameter -> - { + { /* Standardize the parameter name The parameter name returned by SSM will contained the full path. However, for readability, we should return only the part after the path. */ - String name = parameter.name(); - if (name.startsWith(path)) { - name = name.replaceFirst(path, ""); - } - name = name.replaceFirst("/", ""); - params.put(name, parameter.value()); - }); + String name = parameter.name(); + if (name.startsWith(path)) { + name = name.replaceFirst(path, ""); + } + name = name.replaceFirst("/", ""); + params.put(name, parameter.value()); + }); } if (!StringUtils.isEmpty(res.nextToken())) { @@ -251,7 +251,9 @@ private static SsmClient createClient() { return SsmClient.builder() .httpClientBuilder(UrlConnectionHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) - .overrideConfiguration(ClientOverrideConfiguration.builder().putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, + UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) .build(); } diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SecretsProvider.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SecretsProvider.java index 788367ea8..2612f6c7f 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SecretsProvider.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/SecretsProvider.java @@ -161,7 +161,9 @@ private static SecretsManagerClient createClient() { return SecretsManagerClient.builder() .httpClientBuilder(UrlConnectionHttpClient.builder()) .region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))) - .overrideConfiguration(ClientOverrideConfiguration.builder().putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX, + UserAgentConfigurator.getUserAgent(PARAMETERS)).build()) .build(); } diff --git a/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/DynamoDbProviderTest.java b/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/DynamoDbProviderTest.java index abfc9ab8a..2cf84dad4 100644 --- a/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/DynamoDbProviderTest.java +++ b/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/DynamoDbProviderTest.java @@ -123,9 +123,9 @@ public void getValueWithMalformedRowThrows() { .build()); // Act Assertions.assertThrows(DynamoDbProviderSchemaException.class, () -> - { - provider.getValue(key); - }); + { + provider.getValue(key); + }); } @@ -190,10 +190,10 @@ public void getMultipleValuesMissingSortKey_throwsException() { // Assert Assertions.assertThrows(DynamoDbProviderSchemaException.class, () -> - { - // Act - provider.getMultipleValues(key); - }); + { + // Act + provider.getMultipleValues(key); + }); } @Test @@ -211,10 +211,10 @@ public void getValuesWithMalformedRowThrows() { // Assert Assertions.assertThrows(DynamoDbProviderSchemaException.class, () -> - { - // Act - provider.getMultipleValues(key); - }); + { + // Act + provider.getMultipleValues(key); + }); } @Test diff --git a/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/SSMProviderTest.java b/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/SSMProviderTest.java index 6a5aa3e68..2a4f8f927 100644 --- a/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/SSMProviderTest.java +++ b/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/SSMProviderTest.java @@ -186,11 +186,11 @@ public void getMultipleWithNextToken() { GetParametersByPathRequest request2 = requestParams.get(1); assertThat(asList(request1, request2)).allSatisfy(req -> - { - assertThat(req.path()).isEqualTo("/prod/app1"); - assertThat(req.withDecryption()).isFalse(); - assertThat(req.recursive()).isFalse(); - }); + { + assertThat(req.path()).isEqualTo("/prod/app1"); + assertThat(req.withDecryption()).isFalse(); + assertThat(req.recursive()).isFalse(); + }); assertThat(request1.nextToken()).isNull(); assertThat(request2.nextToken()).isEqualTo("123abc"); diff --git a/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/internal/LambdaParametersAspectTest.java b/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/internal/LambdaParametersAspectTest.java index d346a1aa4..2c246336b 100644 --- a/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/internal/LambdaParametersAspectTest.java +++ b/powertools-parameters/src/test/java/software/amazon/lambda/powertools/parameters/internal/LambdaParametersAspectTest.java @@ -97,9 +97,9 @@ public void testWithComplexTransform() { public void testWithComplexTransformWrongTargetClass_ShouldThrowException() { assertThatExceptionOfType(TransformationException.class) .isThrownBy(() -> - { - AnotherObject obj = wrongTransform; - }); + { + AnotherObject obj = wrongTransform; + }); } } diff --git a/powertools-serialization/src/main/java/software/amazon/lambda/powertools/utilities/EventDeserializer.java b/powertools-serialization/src/main/java/software/amazon/lambda/powertools/utilities/EventDeserializer.java index 22712e8ce..2155c7c0b 100644 --- a/powertools-serialization/src/main/java/software/amazon/lambda/powertools/utilities/EventDeserializer.java +++ b/powertools-serialization/src/main/java/software/amazon/lambda/powertools/utilities/EventDeserializer.java @@ -241,14 +241,14 @@ public List asListOf(Class clazz) { } } else { return contentList.stream().map(s -> - { - try { - return s == null ? null : JsonConfig.get().getObjectMapper().reader().readValue(s, clazz); - } catch (IOException e) { - throw new EventDeserializationException( - "Cannot load the event as a list of " + clazz.getSimpleName(), e); - } - }).collect(Collectors.toList()); + { + try { + return s == null ? null : JsonConfig.get().getObjectMapper().reader().readValue(s, clazz); + } catch (IOException e) { + throw new EventDeserializationException( + "Cannot load the event as a list of " + clazz.getSimpleName(), e); + } + }).collect(Collectors.toList()); } } } diff --git a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/SqsUtils.java b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/SqsUtils.java index c838180fd..27ae71387 100644 --- a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/SqsUtils.java +++ b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/SqsUtils.java @@ -548,11 +548,11 @@ public static List batchProcessor(final SQSEvent event, event.getRecords() .subList(offset, event.getRecords().size()) .forEach(message -> - { - LOG.info("Skipping message {} as another message with a message group failed in this batch", - message.getMessageId()); - batchContext.addFailure(message, new SkippedMessageDueToFailedBatchException()); - }); + { + LOG.info("Skipping message {} as another message with a message group failed in this batch", + message.getMessageId()); + batchContext.addFailure(message, new SkippedMessageDueToFailedBatchException()); + }); } batchContext.processSuccessAndHandleFailed(handlerReturn, suppressException, deleteNonRetryableMessageFromQueue, diff --git a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java index 57ddeb22f..70cf04fb8 100644 --- a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java +++ b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java @@ -84,16 +84,16 @@ public final void processSuccessAndHandleFailed(final List successReturns failedMessages.addAll(messageToException.keySet()); } else { messageToException.forEach((sqsMessage, exception) -> - { - boolean nonRetryableException = isNonRetryableException(exception, nonRetryableExceptions); - - if (nonRetryableException) { - nonRetryableMessageToException.put(sqsMessage, exception); - } else { - exceptions.add(exception); - failedMessages.add(sqsMessage); - } - }); + { + boolean nonRetryableException = isNonRetryableException(exception, nonRetryableExceptions); + + if (nonRetryableException) { + nonRetryableMessageToException.put(sqsMessage, exception); + } else { + exceptions.add(exception); + failedMessages.add(sqsMessage); + } + }); } List messagesToBeDeleted = new ArrayList<>(success); @@ -151,46 +151,46 @@ private boolean moveNonRetryableMessagesToDlqIfConfigured( List dlqMessages = nonRetryableMessageToException.keySet().stream() .map(sqsMessage -> - { - Map messageAttributesMap = new HashMap<>(); + { + Map messageAttributesMap = new HashMap<>(); - sqsMessage.getMessageAttributes().forEach((s, messageAttribute) -> - { - MessageAttributeValue.Builder builder = MessageAttributeValue.builder(); + sqsMessage.getMessageAttributes().forEach((s, messageAttribute) -> + { + MessageAttributeValue.Builder builder = MessageAttributeValue.builder(); - builder - .dataType(messageAttribute.getDataType()) - .stringValue(messageAttribute.getStringValue()); + builder + .dataType(messageAttribute.getDataType()) + .stringValue(messageAttribute.getStringValue()); - if (null != messageAttribute.getBinaryValue()) { - builder.binaryValue(SdkBytes.fromByteBuffer(messageAttribute.getBinaryValue())); - } + if (null != messageAttribute.getBinaryValue()) { + builder.binaryValue(SdkBytes.fromByteBuffer(messageAttribute.getBinaryValue())); + } - messageAttributesMap.put(s, builder.build()); - }); + messageAttributesMap.put(s, builder.build()); + }); - return SendMessageBatchRequestEntry.builder() - .messageBody(sqsMessage.getBody()) - .id(sqsMessage.getMessageId()) - .messageAttributes(messageAttributesMap) - .build(); - }) + return SendMessageBatchRequestEntry.builder() + .messageBody(sqsMessage.getBody()) + .id(sqsMessage.getMessageId()) + .messageAttributes(messageAttributesMap) + .build(); + }) .collect(toList()); List sendMessageBatchResponses = batchRequest(dlqMessages, 10, entriesToSend -> - { + { - SendMessageBatchResponse sendMessageBatchResponse = - client.sendMessageBatch(SendMessageBatchRequest.builder() - .entries(entriesToSend) - .queueUrl(dlqUrl.get()) - .build()); + SendMessageBatchResponse sendMessageBatchResponse = + client.sendMessageBatch(SendMessageBatchRequest.builder() + .entries(entriesToSend) + .queueUrl(dlqUrl.get()) + .build()); - LOG.debug("Response from send batch message to DLQ request {}", sendMessageBatchResponse); + LOG.debug("Response from send batch message to DLQ request {}", sendMessageBatchResponse); - return sendMessageBatchResponse; - }); + return sendMessageBatchResponse; + }); return sendMessageBatchResponses.stream() .filter(response -> null != response && response.hasFailed()) @@ -206,32 +206,32 @@ private Optional fetchDlqUrl(Map nonRetryableMess .findFirst() .map(sqsMessage -> QUEUE_ARN_TO_DLQ_URL_MAPPING.computeIfAbsent(sqsMessage.getEventSourceArn(), sourceArn -> - { - String queueUrl = url(sourceArn); - - GetQueueAttributesResponse queueAttributes = - client.getQueueAttributes(GetQueueAttributesRequest.builder() - .attributeNames(QueueAttributeName.REDRIVE_POLICY) - .queueUrl(queueUrl) - .build()); - - return ofNullable(queueAttributes.attributes().get(QueueAttributeName.REDRIVE_POLICY)) - .map(policy -> - { - try { - return SqsUtils.objectMapper().readTree(policy); - } catch (JsonProcessingException e) { - LOG.debug( - "Unable to parse Re drive policy for queue {}. Even if DLQ exists, failed messages will be send back to main queue.", - queueUrl, e); - return null; - } - }) - .map(node -> node.get("deadLetterTargetArn")) - .map(JsonNode::asText) - .map(this::url) - .orElse(null); - })); + { + String queueUrl = url(sourceArn); + + GetQueueAttributesResponse queueAttributes = + client.getQueueAttributes(GetQueueAttributesRequest.builder() + .attributeNames(QueueAttributeName.REDRIVE_POLICY) + .queueUrl(queueUrl) + .build()); + + return ofNullable(queueAttributes.attributes().get(QueueAttributeName.REDRIVE_POLICY)) + .map(policy -> + { + try { + return SqsUtils.objectMapper().readTree(policy); + } catch (JsonProcessingException e) { + LOG.debug( + "Unable to parse Re drive policy for queue {}. Even if DLQ exists, failed messages will be send back to main queue.", + queueUrl, e); + return null; + } + }) + .map(node -> node.get("deadLetterTargetArn")) + .map(JsonNode::asText) + .map(this::url) + .orElse(null); + })); } private boolean hasFailures() { @@ -248,18 +248,18 @@ private void deleteMessagesFromQueue(final List messages) { .build()).collect(toList()); batchRequest(entries, 10, entriesToDelete -> - { - DeleteMessageBatchRequest request = DeleteMessageBatchRequest.builder() - .queueUrl(url(messages.get(0).getEventSourceArn())) - .entries(entriesToDelete) - .build(); + { + DeleteMessageBatchRequest request = DeleteMessageBatchRequest.builder() + .queueUrl(url(messages.get(0).getEventSourceArn())) + .entries(entriesToDelete) + .build(); - DeleteMessageBatchResponse deleteMessageBatchResponse = client.deleteMessageBatch(request); + DeleteMessageBatchResponse deleteMessageBatchResponse = client.deleteMessageBatch(request); - LOG.debug("Response from delete request {}", deleteMessageBatchResponse); + LOG.debug("Response from delete request {}", deleteMessageBatchResponse); - return deleteMessageBatchResponse; - }); + return deleteMessageBatchResponse; + }); } } diff --git a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspect.java b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspect.java index 7022e399a..e5176e13a 100644 --- a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspect.java +++ b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspect.java @@ -58,16 +58,16 @@ public static List processMessages(final List reco sqsMessage.getBody()))); ResponseInputStream s3Object = callS3Gracefully(s3Pointer, pointer -> - { - ResponseInputStream response = - s3Client().getObject(GetObjectRequest.builder() - .bucket(pointer.getS3BucketName()) - .key(pointer.getS3Key()) - .build()); + { + ResponseInputStream response = + s3Client().getObject(GetObjectRequest.builder() + .bucket(pointer.getS3BucketName()) + .key(pointer.getS3Key()) + .build()); - LOG.debug("Object downloaded with key: " + s3Pointer.getS3Key()); - return response; - }); + LOG.debug("Object downloaded with key: " + s3Pointer.getS3Key()); + return response; + }); sqsMessage.setBody(readStringFromS3Object(s3Object, s3Pointer)); s3Pointers.add(s3Pointer); @@ -95,14 +95,14 @@ private static String readStringFromS3Object(ResponseInputStream - { - s3Client().deleteObject(DeleteObjectRequest.builder() - .bucket(pointer.getS3BucketName()) - .key(pointer.getS3Key()) - .build()); - LOG.info("Message deleted from S3: " + s3Pointer.toJson()); - return null; - }); + { + s3Client().deleteObject(DeleteObjectRequest.builder() + .bucket(pointer.getS3BucketName()) + .key(pointer.getS3Key()) + .build()); + LOG.info("Message deleted from S3: " + s3Pointer.toJson()); + return null; + }); } private static R callS3Gracefully(final PayloadS3Pointer pointer, diff --git a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsBatchProcessorTest.java b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsBatchProcessorTest.java index 42e4b9d8f..c0c334e78 100644 --- a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsBatchProcessorTest.java +++ b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsBatchProcessorTest.java @@ -61,10 +61,10 @@ void setUp() throws IOException { @Test void shouldBatchProcessAndNotDeleteMessagesWhenAllSuccess() { List returnValues = batchProcessor(event, false, (message) -> - { - interactionClient.listQueues(); - return "Success"; - }); + { + interactionClient.listQueues(); + return "Success"; + }); assertThat(returnValues) .hasSize(2) @@ -92,34 +92,34 @@ void shouldBatchProcessAndDeleteSuccessMessageOnPartialFailures() { String failedId = "2e1424d4-f796-459a-8184-9c92662be6da"; SqsMessageHandler failedHandler = (message) -> - { - if (failedId.equals(message.getMessageId())) { - throw new RuntimeException("Failed processing"); - } + { + if (failedId.equals(message.getMessageId())) { + throw new RuntimeException("Failed processing"); + } - interactionClient.listQueues(); - return "Success"; - }; + interactionClient.listQueues(); + return "Success"; + }; assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(event, failedHandler)) .satisfies(e -> - { + { - assertThat(e.successMessageReturnValues()) - .hasSize(1) - .contains("Success"); + assertThat(e.successMessageReturnValues()) + .hasSize(1) + .contains("Success"); - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .contains(failedId); + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .contains(failedId); - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("detailMessage") - .contains("Failed processing"); - }); + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("detailMessage") + .contains("Failed processing"); + }); verify(interactionClient).listQueues(); @@ -133,30 +133,30 @@ void shouldBatchProcessAndDeleteSuccessMessageOnPartialFailures() { @Test void shouldBatchProcessAndFullFailuresInBatch() { SqsMessageHandler failedHandler = (message) -> - { - throw new RuntimeException(message.getMessageId()); - }; + { + throw new RuntimeException(message.getMessageId()); + }; assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(event, failedHandler)) .satisfies(e -> - { + { - assertThat(e.successMessageReturnValues()) - .isEmpty(); + assertThat(e.successMessageReturnValues()) + .isEmpty(); - assertThat(e.getFailures()) - .hasSize(2) - .extracting("messageId") - .containsExactly("059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da"); + assertThat(e.getFailures()) + .hasSize(2) + .extracting("messageId") + .containsExactly("059f36b4-87a3-44ab-83d2-661975830a7d", + "2e1424d4-f796-459a-8184-9c92662be6da"); - assertThat(e.getExceptions()) - .hasSize(2) - .extracting("detailMessage") - .containsExactly("059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da"); - }); + assertThat(e.getExceptions()) + .hasSize(2) + .extracting("detailMessage") + .containsExactly("059f36b4-87a3-44ab-83d2-661975830a7d", + "2e1424d4-f796-459a-8184-9c92662be6da"); + }); verifyNoInteractions(sqsClient); } @@ -166,22 +166,22 @@ void shouldBatchProcessViaClassAndDeleteSuccessMessageOnPartialFailures() { assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(event, FailureSampleInnerSqsHandler.class)) .satisfies(e -> - { + { - assertThat(e.successMessageReturnValues()) - .hasSize(1) - .contains("Success"); + assertThat(e.successMessageReturnValues()) + .hasSize(1) + .contains("Success"); - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .contains("2e1424d4-f796-459a-8184-9c92662be6da"); + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .contains("2e1424d4-f796-459a-8184-9c92662be6da"); - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("detailMessage") - .contains("Failed processing"); - }); + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("detailMessage") + .contains("Failed processing"); + }); verify(sqsClient).deleteMessageBatch(any(DeleteMessageBatchRequest.class)); } @@ -192,14 +192,14 @@ void shouldBatchProcessAndSuppressExceptions() { String failedId = "2e1424d4-f796-459a-8184-9c92662be6da"; SqsMessageHandler failedHandler = (message) -> - { - if (failedId.equals(message.getMessageId())) { - throw new RuntimeException("Failed processing"); - } + { + if (failedId.equals(message.getMessageId())) { + throw new RuntimeException("Failed processing"); + } - interactionClient.listQueues(); - return "Success"; - }; + interactionClient.listQueues(); + return "Success"; + }; List returnValues = batchProcessor(event, true, failedHandler); @@ -239,14 +239,14 @@ void shouldBatchProcessAndMoveNonRetryableExceptionToDlq() { .build()); List batchProcessor = batchProcessor(event, (message) -> - { - if (failedId.equals(message.getMessageId())) { - throw new IllegalStateException("Failed processing"); - } + { + if (failedId.equals(message.getMessageId())) { + throw new IllegalStateException("Failed processing"); + } - interactionClient.listQueues(); - return "Success"; - }, IllegalStateException.class, IllegalArgumentException.class); + interactionClient.listQueues(); + return "Success"; + }, IllegalStateException.class, IllegalArgumentException.class); assertThat(batchProcessor) .hasSize(1); @@ -270,14 +270,14 @@ void shouldBatchProcessAndDeleteNonRetryableException() { .build()); List batchProcessor = batchProcessor(event, false, (message) -> - { - if (failedId.equals(message.getMessageId())) { - throw new IllegalStateException("Failed processing"); - } + { + if (failedId.equals(message.getMessageId())) { + throw new IllegalStateException("Failed processing"); + } - interactionClient.listQueues(); - return "Success"; - }, true, IllegalStateException.class, IllegalArgumentException.class); + interactionClient.listQueues(); + return "Success"; + }, true, IllegalStateException.class, IllegalArgumentException.class); assertThat(batchProcessor) .hasSize(1); @@ -294,22 +294,22 @@ void shouldDeleteSuccessfulMessageInBatchesOfT10orLess() throws IOException { assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(batch25Message, FailureSampleInnerSqsHandler.class)) .satisfies(e -> - { + { - assertThat(e.successMessageReturnValues()) - .hasSize(24) - .contains("Success"); + assertThat(e.successMessageReturnValues()) + .hasSize(24) + .contains("Success"); - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .contains("2e1424d4-f796-459a-8184-9c92662be6da"); + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .contains("2e1424d4-f796-459a-8184-9c92662be6da"); - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("detailMessage") - .contains("Failed processing"); - }); + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("detailMessage") + .contains("Failed processing"); + }); ArgumentCaptor captor = ArgumentCaptor.forClass(DeleteMessageBatchRequest.class); @@ -339,14 +339,14 @@ void shouldBatchProcessAndMoveNonRetryableExceptionToDlqInBatchesOfT10orLess() t .build()); List batchProcessor = batchProcessor(batch25Message, (message) -> - { - if ("2e1424d4-f796-459a-8184-9c92662be6da".equals(message.getMessageId())) { - interactionClient.listQueues(); - return "Success"; - } + { + if ("2e1424d4-f796-459a-8184-9c92662be6da".equals(message.getMessageId())) { + interactionClient.listQueues(); + return "Success"; + } - throw new IllegalStateException("Failed processing"); - }, IllegalStateException.class, IllegalArgumentException.class); + throw new IllegalStateException("Failed processing"); + }, IllegalStateException.class, IllegalArgumentException.class); assertThat(batchProcessor) .hasSize(1); diff --git a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsFifoBatchProcessorTest.java b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsFifoBatchProcessorTest.java index 53beeefcb..bfc555405 100644 --- a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsFifoBatchProcessorTest.java +++ b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsFifoBatchProcessorTest.java @@ -76,10 +76,10 @@ public void processWholeBatch() { // Act AtomicInteger processedCount = new AtomicInteger(); List results = batchProcessor(sqsBatchEvent, false, (message) -> - { - processedCount.getAndIncrement(); - return true; - }); + { + processedCount.getAndIncrement(); + return true; + }); // Assert assertThat(processedCount.get()).isEqualTo(3); @@ -103,26 +103,26 @@ public void singleFailureInMiddleOfBatch() { AtomicInteger processedCount = new AtomicInteger(); assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(sqsBatchEvent, false, (message) -> - { - int value = processedCount.getAndIncrement(); - if (value == 1) { - throw new RuntimeException("Whoops"); - } - return true; - })) + { + int value = processedCount.getAndIncrement(); + if (value == 1) { + throw new RuntimeException("Whoops"); + } + return true; + })) // Assert .isInstanceOf(SQSBatchProcessingException.class) .satisfies(e -> - { - List failures = ((SQSBatchProcessingException) e).getFailures(); - assertThat(failures.size()).isEqualTo(2); - List failureIds = failures.stream() - .map(SQSEvent.SQSMessage::getMessageId) - .collect(Collectors.toList()); - assertThat(failureIds).contains(sqsBatchEvent.getRecords().get(1).getMessageId()); - assertThat(failureIds).contains(sqsBatchEvent.getRecords().get(2).getMessageId()); - }); + { + List failures = ((SQSBatchProcessingException) e).getFailures(); + assertThat(failures.size()).isEqualTo(2); + List failureIds = failures.stream() + .map(SQSEvent.SQSMessage::getMessageId) + .collect(Collectors.toList()); + assertThat(failureIds).contains(sqsBatchEvent.getRecords().get(1).getMessageId()); + assertThat(failureIds).contains(sqsBatchEvent.getRecords().get(2).getMessageId()); + }); DeleteMessageBatchRequest deleteRequest = deleteMessageBatchCaptor.getValue(); List messageIds = deleteRequest.entries().stream() @@ -146,13 +146,13 @@ public void singleFailureAtEndOfBatch() { AtomicInteger processedCount = new AtomicInteger(); assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(sqsBatchEvent, false, (message) -> - { - int value = processedCount.getAndIncrement(); - if (value == 2) { - throw new RuntimeException("Whoops"); - } - return true; - })); + { + int value = processedCount.getAndIncrement(); + if (value == 2) { + throw new RuntimeException("Whoops"); + } + return true; + })); // Assert DeleteMessageBatchRequest deleteRequest = deleteMessageBatchCaptor.getValue(); @@ -171,18 +171,18 @@ public void messageFailureStopsGroupProcessing() { assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> batchProcessor(sqsBatchEvent, (message) -> - { - String groupId = message.getAttributes().get("MessageGroupId"); - if (groupId.equals(groupToFail)) { - throw new RuntimeException("Failed processing"); - } - return groupId; - })) + { + String groupId = message.getAttributes().get("MessageGroupId"); + if (groupId.equals(groupToFail)) { + throw new RuntimeException("Failed processing"); + } + return groupId; + })) .satisfies(e -> - { - assertThat(e.successMessageReturnValues().size()).isEqualTo(0); - assertThat(e.successMessageReturnValues().contains(groupToFail)).isFalse(); - }); + { + assertThat(e.successMessageReturnValues().size()).isEqualTo(0); + assertThat(e.successMessageReturnValues().contains(groupToFail)).isFalse(); + }); } } diff --git a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsLargeMessageTest.java b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsLargeMessageTest.java index d3b675371..afc426976 100644 --- a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsLargeMessageTest.java +++ b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/SqsUtilsLargeMessageTest.java @@ -86,11 +86,11 @@ public void testLargeMessage() { "\",\"s3Key\":\"" + BUCKET_KEY + "\"}]"); Map sqsMessage = SqsUtils.enrichedMessageFromS3(sqsEvent, sqsMessages -> - { - Map someBusinessLogic = new HashMap<>(); - someBusinessLogic.put("Message", sqsMessages.get(0).getBody()); - return someBusinessLogic; - }); + { + Map someBusinessLogic = new HashMap<>(); + someBusinessLogic.put("Message", sqsMessages.get(0).getBody()); + return someBusinessLogic; + }); assertThat(sqsMessage) .hasSize(1) @@ -102,13 +102,13 @@ public void testLargeMessage() { Assertions.assertThat(delete.getValue()) .satisfies((Consumer) deleteObjectRequest -> - { - assertThat(deleteObjectRequest.bucket()) - .isEqualTo(BUCKET_NAME); + { + assertThat(deleteObjectRequest.bucket()) + .isEqualTo(BUCKET_NAME); - assertThat(deleteObjectRequest.key()) - .isEqualTo(BUCKET_KEY); - }); + assertThat(deleteObjectRequest.key()) + .isEqualTo(BUCKET_KEY); + }); } @ParameterizedTest @@ -125,11 +125,11 @@ public void testLargeMessageDeleteFromS3Toggle(boolean deleteS3Payload) { "\",\"s3Key\":\"" + BUCKET_KEY + "\"}]"); Map sqsMessage = SqsUtils.enrichedMessageFromS3(sqsEvent, deleteS3Payload, sqsMessages -> - { - Map someBusinessLogic = new HashMap<>(); - someBusinessLogic.put("Message", sqsMessages.get(0).getBody()); - return someBusinessLogic; - }); + { + Map someBusinessLogic = new HashMap<>(); + someBusinessLogic.put("Message", sqsMessages.get(0).getBody()); + return someBusinessLogic; + }); assertThat(sqsMessage) .hasSize(1) @@ -141,13 +141,13 @@ public void testLargeMessageDeleteFromS3Toggle(boolean deleteS3Payload) { Assertions.assertThat(delete.getValue()) .satisfies((Consumer) deleteObjectRequest -> - { - assertThat(deleteObjectRequest.bucket()) - .isEqualTo(BUCKET_NAME); + { + assertThat(deleteObjectRequest.bucket()) + .isEqualTo(BUCKET_NAME); - assertThat(deleteObjectRequest.key()) - .isEqualTo(BUCKET_KEY); - }); + assertThat(deleteObjectRequest.key()) + .isEqualTo(BUCKET_KEY); + }); } else { verify(s3Client, never()).deleteObject(any(DeleteObjectRequest.class)); } @@ -164,11 +164,11 @@ public void shouldNotProcessSmallMessageBody() { SQSEvent sqsEvent = messageWithBody("This is small message"); Map sqsMessage = SqsUtils.enrichedMessageFromS3(sqsEvent, sqsMessages -> - { - Map someBusinessLogic = new HashMap<>(); - someBusinessLogic.put("Message", sqsMessages.get(0).getBody()); - return someBusinessLogic; - }); + { + Map someBusinessLogic = new HashMap<>(); + someBusinessLogic.put("Message", sqsMessages.get(0).getBody()); + return someBusinessLogic; + }); assertThat(sqsMessage) .containsEntry("Message", "This is small message"); diff --git a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspectTest.java b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspectTest.java index ff04aba25..535da11c7 100644 --- a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspectTest.java +++ b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsLargeMessageAspectTest.java @@ -101,13 +101,13 @@ public void testLargeMessage() { Assertions.assertThat(delete.getValue()) .satisfies((Consumer) deleteObjectRequest -> - { - assertThat(deleteObjectRequest.bucket()) - .isEqualTo(BUCKET_NAME); + { + assertThat(deleteObjectRequest.bucket()) + .isEqualTo(BUCKET_NAME); - assertThat(deleteObjectRequest.key()) - .isEqualTo(BUCKET_KEY); - }); + assertThat(deleteObjectRequest.key()) + .isEqualTo(BUCKET_KEY); + }); } @Test diff --git a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsMessageBatchProcessorAspectTest.java b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsMessageBatchProcessorAspectTest.java index b257c1962..c0211cb83 100644 --- a/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsMessageBatchProcessorAspectTest.java +++ b/powertools-sqs/src/test/java/software/amazon/lambda/powertools/sqs/internal/SqsMessageBatchProcessorAspectTest.java @@ -86,21 +86,21 @@ void shouldBatchProcessMessageWithSuccessDeletedOnFailureInBatchFromSQS() { assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> requestHandler.handleRequest(event, context)) .satisfies(e -> - { - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("message") - .containsExactly("2e1424d4-f796-459a-8184-9c92662be6da"); - - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .containsExactly("2e1424d4-f796-459a-8184-9c92662be6da"); - - assertThat(e.successMessageReturnValues()) - .hasSize(1) - .contains("Success"); - }); + { + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("message") + .containsExactly("2e1424d4-f796-459a-8184-9c92662be6da"); + + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .containsExactly("2e1424d4-f796-459a-8184-9c92662be6da"); + + assertThat(e.successMessageReturnValues()) + .hasSize(1) + .contains("Success"); + }); verify(interactionClient).listQueues(); verify(sqsClient).deleteMessageBatch(any(DeleteMessageBatchRequest.class)); @@ -218,21 +218,21 @@ void shouldBatchProcessAndFailWithExceptionForNonRetryableExceptionAndNoDlq() { assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> requestHandler.handleRequest(event, context)) .satisfies(e -> - { - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("message") - .containsExactly("Invalid message and was moved to DLQ"); - - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .containsExactly(""); - - assertThat(e.successMessageReturnValues()) - .hasSize(1) - .contains("Success"); - }); + { + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("message") + .containsExactly("Invalid message and was moved to DLQ"); + + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .containsExactly(""); + + assertThat(e.successMessageReturnValues()) + .hasSize(1) + .contains("Success"); + }); verify(interactionClient).listQueues(); verify(sqsClient).deleteMessageBatch(any(DeleteMessageBatchRequest.class)); @@ -258,21 +258,21 @@ void shouldBatchProcessAndFailWithExceptionForNonRetryableExceptionWhenFailedPar assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> requestHandler.handleRequest(event, context)) .satisfies(e -> - { - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("message") - .containsExactly("Invalid message and was moved to DLQ"); - - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .containsExactly(""); - - assertThat(e.successMessageReturnValues()) - .hasSize(1) - .contains("Success"); - }); + { + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("message") + .containsExactly("Invalid message and was moved to DLQ"); + + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .containsExactly(""); + + assertThat(e.successMessageReturnValues()) + .hasSize(1) + .contains("Success"); + }); verify(interactionClient).listQueues(); verify(sqsClient).deleteMessageBatch(any(DeleteMessageBatchRequest.class)); @@ -301,21 +301,21 @@ void shouldBatchProcessAndMoveNonRetryableExceptionToDlqAndThrowException() thro assertThatExceptionOfType(SQSBatchProcessingException.class) .isThrownBy(() -> requestHandler.handleRequest(event, context)) .satisfies(e -> - { - assertThat(e.getExceptions()) - .hasSize(1) - .extracting("message") - .containsExactly("Invalid message and should be reprocessed"); - - assertThat(e.getFailures()) - .hasSize(1) - .extracting("messageId") - .containsExactly("2e1424d4-f796-459a-9696-9c92662ba5da"); - - assertThat(e.successMessageReturnValues()) - .hasSize(1) - .contains("Success"); - }); + { + assertThat(e.getExceptions()) + .hasSize(1) + .extracting("message") + .containsExactly("Invalid message and should be reprocessed"); + + assertThat(e.getFailures()) + .hasSize(1) + .extracting("messageId") + .containsExactly("2e1424d4-f796-459a-9696-9c92662ba5da"); + + assertThat(e.successMessageReturnValues()) + .hasSize(1) + .contains("Success"); + }); verify(interactionClient).listQueues(); verify(sqsClient).deleteMessageBatch(any(DeleteMessageBatchRequest.class)); diff --git a/powertools-test-suite/src/test/java/software/amazon/lambda/powertools/testsuite/LoggingOrderTest.java b/powertools-test-suite/src/test/java/software/amazon/lambda/powertools/testsuite/LoggingOrderTest.java index 55349b267..9e9c464a6 100644 --- a/powertools-test-suite/src/test/java/software/amazon/lambda/powertools/testsuite/LoggingOrderTest.java +++ b/powertools-test-suite/src/test/java/software/amazon/lambda/powertools/testsuite/LoggingOrderTest.java @@ -108,14 +108,14 @@ public void testThatLoggingAnnotationActsLast() throws IOException { assertThat(Files.lines(Paths.get("target/logfile.json"))) .hasSize(2) .satisfies(line -> - { - Map actual = parseToMap(line.get(0)); + { + Map actual = parseToMap(line.get(0)); - String message = actual.get("message").toString(); + String message = actual.get("message").toString(); - assertThat(message) - .contains("A big message"); - }); + assertThat(message) + .contains("A big message"); + }); } @Test diff --git a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/TracingUtilsTest.java b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/TracingUtilsTest.java index 69054d0c6..78283fbc2 100644 --- a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/TracingUtilsTest.java +++ b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/TracingUtilsTest.java @@ -96,31 +96,31 @@ void shouldInvokeCodeBlockWrappedWithinSubsegment() { Context test = mock(Context.class); TracingUtils.withSubsegment("testSubSegment", subsegment -> - { - subsegment.putAnnotation("key", "val"); - subsegment.putMetadata("key", "val"); - test.getFunctionName(); - }); + { + subsegment.putAnnotation("key", "val"); + subsegment.putMetadata("key", "val"); + test.getFunctionName(); + }); verify(test).getFunctionName(); assertThat(AWSXRay.getTraceEntity().getSubsegments()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getName()) - .isEqualTo("## testSubSegment"); + { + assertThat(subsegment.getName()) + .isEqualTo("## testSubSegment"); - assertThat(subsegment.getNamespace()) - .isEqualTo("service_undefined"); + assertThat(subsegment.getNamespace()) + .isEqualTo("service_undefined"); - assertThat(subsegment.getAnnotations()) - .hasSize(1) - .containsEntry("key", "val"); + assertThat(subsegment.getAnnotations()) + .hasSize(1) + .containsEntry("key", "val"); - assertThat(subsegment.getMetadata()) - .hasSize(1); - }); + assertThat(subsegment.getMetadata()) + .hasSize(1); + }); } @Test @@ -128,31 +128,31 @@ void shouldInvokeCodeBlockWrappedWithinNamespacedSubsegment() { Context test = mock(Context.class); TracingUtils.withSubsegment("testNamespace", "testSubSegment", subsegment -> - { - subsegment.putAnnotation("key", "val"); - subsegment.putMetadata("key", "val"); - test.getFunctionName(); - }); + { + subsegment.putAnnotation("key", "val"); + subsegment.putMetadata("key", "val"); + test.getFunctionName(); + }); verify(test).getFunctionName(); assertThat(AWSXRay.getTraceEntity().getSubsegments()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getName()) - .isEqualTo("## testSubSegment"); + { + assertThat(subsegment.getName()) + .isEqualTo("## testSubSegment"); - assertThat(subsegment.getNamespace()) - .isEqualTo("testNamespace"); + assertThat(subsegment.getNamespace()) + .isEqualTo("testNamespace"); - assertThat(subsegment.getAnnotations()) - .hasSize(1) - .containsEntry("key", "val"); + assertThat(subsegment.getAnnotations()) + .hasSize(1) + .containsEntry("key", "val"); - assertThat(subsegment.getMetadata()) - .hasSize(1); - }); + assertThat(subsegment.getMetadata()) + .hasSize(1); + }); } @Test @@ -162,10 +162,10 @@ void shouldInvokeCodeBlockWrappedWithinEntitySubsegment() throws InterruptedExce Entity traceEntity = AWSXRay.getTraceEntity(); Thread thread = new Thread(() -> withEntitySubsegment("testSubSegment", traceEntity, subsegment -> - { - subsegment.putAnnotation("key", "val"); - test.getFunctionName(); - })); + { + subsegment.putAnnotation("key", "val"); + test.getFunctionName(); + })); thread.start(); thread.join(); @@ -175,17 +175,17 @@ void shouldInvokeCodeBlockWrappedWithinEntitySubsegment() throws InterruptedExce assertThat(AWSXRay.getTraceEntity().getSubsegments()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getName()) - .isEqualTo("## testSubSegment"); + { + assertThat(subsegment.getName()) + .isEqualTo("## testSubSegment"); - assertThat(subsegment.getNamespace()) - .isEqualTo("service_undefined"); + assertThat(subsegment.getNamespace()) + .isEqualTo("service_undefined"); - assertThat(subsegment.getAnnotations()) - .hasSize(1) - .containsEntry("key", "val"); - }); + assertThat(subsegment.getAnnotations()) + .hasSize(1) + .containsEntry("key", "val"); + }); } @Test @@ -196,10 +196,10 @@ void shouldInvokeCodeBlockWrappedWithinNamespacedEntitySubsegment() throws Inter Thread thread = new Thread(() -> withEntitySubsegment("testNamespace", "testSubSegment", traceEntity, subsegment -> - { - subsegment.putAnnotation("key", "val"); - test.getFunctionName(); - })); + { + subsegment.putAnnotation("key", "val"); + test.getFunctionName(); + })); thread.start(); thread.join(); @@ -209,16 +209,16 @@ void shouldInvokeCodeBlockWrappedWithinNamespacedEntitySubsegment() throws Inter assertThat(AWSXRay.getTraceEntity().getSubsegments()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getName()) - .isEqualTo("## testSubSegment"); + { + assertThat(subsegment.getName()) + .isEqualTo("## testSubSegment"); - assertThat(subsegment.getNamespace()) - .isEqualTo("testNamespace"); + assertThat(subsegment.getNamespace()) + .isEqualTo("testNamespace"); - assertThat(subsegment.getAnnotations()) - .hasSize(1) - .containsEntry("key", "val"); - }); + assertThat(subsegment.getAnnotations()) + .hasSize(1) + .containsEntry("key", "val"); + }); } } \ No newline at end of file diff --git a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java index 5e3ec6545..d61206886 100644 --- a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java +++ b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java @@ -120,16 +120,16 @@ void shouldCaptureTraces() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("lambdaHandler"); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("lambdaHandler"); + }); } @Test @@ -144,20 +144,20 @@ void shouldCaptureTracesWithExceptionMetaData() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("lambdaHandler"); - - assertThat(subsegment.getMetadata().get("lambdaHandler")) - .satisfies(stringObjectMap -> assertThat(stringObjectMap) - .containsEntry("handleRequest error", exception)); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("lambdaHandler"); + + assertThat(subsegment.getMetadata().get("lambdaHandler")) + .satisfies(stringObjectMap -> assertThat(stringObjectMap) + .containsEntry("handleRequest error", exception)); + }); } @Test @@ -170,16 +170,16 @@ void shouldCaptureTracesForStream() throws IOException { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "streamHandler"); - - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("streamHandler"); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "streamHandler"); + + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("streamHandler"); + }); } @Test @@ -212,15 +212,15 @@ void shouldCaptureTracesWithNoMetadata() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "service_undefined"); - - assertThat(subsegment.getMetadata()) - .isEmpty(); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "service_undefined"); + + assertThat(subsegment.getMetadata()) + .isEmpty(); + }); } @Test @@ -235,15 +235,15 @@ void shouldCaptureTracesForStreamWithNoMetadata() throws IOException { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "service_undefined"); - - assertThat(subsegment.getMetadata()) - .isEmpty(); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "service_undefined"); + + assertThat(subsegment.getMetadata()) + .isEmpty(); + }); } @Test @@ -258,15 +258,15 @@ void shouldCaptureTracesWithNoMetadataDeprecated() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "service_undefined"); - - assertThat(subsegment.getMetadata()) - .isEmpty(); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "service_undefined"); + + assertThat(subsegment.getMetadata()) + .isEmpty(); + }); } @Test @@ -283,15 +283,15 @@ void shouldNotCaptureTracesIfDisabledViaEnvironmentVariable() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .isEmpty(); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .isEmpty(); + }); } } @@ -309,16 +309,16 @@ void shouldCaptureTracesIfExplicitlyEnabledAndEnvironmentVariableIsDisabled() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("lambdaHandler"); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("lambdaHandler"); + }); } } @@ -334,15 +334,15 @@ void shouldCaptureTracesForSelfReferencingReturnTypesViaCustomMapper() { assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("lambdaHandler"); + { + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("lambdaHandler"); - assertThat(subsegment.getMetadata().get("lambdaHandler")) - .hasFieldOrPropertyWithValue("handleRequest response", - "{\"name\":\"parent\",\"c\":{\"name\":\"child\",\"p\":\"parent\"}}"); - }); + assertThat(subsegment.getMetadata().get("lambdaHandler")) + .hasFieldOrPropertyWithValue("handleRequest response", + "{\"name\":\"parent\",\"c\":{\"name\":\"child\",\"p\":\"parent\"}}"); + }); assertThatNoException().isThrownBy(AWSXRay::endSegment); @@ -366,16 +366,16 @@ void shouldCaptureTracesIfExplicitlyEnabledBothAndEnvironmentVariableIsDisabled( assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("lambdaHandler"); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("lambdaHandler"); + }); } } @@ -397,15 +397,15 @@ void shouldNotCaptureTracesWithExceptionMetaDataIfDisabledViaEnvironmentVariable assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .isEmpty(); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .isEmpty(); + }); } } @@ -424,20 +424,20 @@ void shouldCaptureTracesWithExceptionMetaDataEnabledExplicitlyAndEnvironmentVari assertThat(AWSXRay.getTraceEntity().getSubsegmentsCopy()) .hasSize(1) .allSatisfy(subsegment -> - { - assertThat(subsegment.getAnnotations()) - .hasSize(2) - .containsEntry("ColdStart", true) - .containsEntry("Service", "lambdaHandler"); - - assertThat(subsegment.getMetadata()) - .hasSize(1) - .containsKey("lambdaHandler"); - - assertThat(subsegment.getMetadata().get("lambdaHandler")) - .satisfies(stringObjectMap -> assertThat(stringObjectMap) - .containsEntry("handleRequest error", exception)); - }); + { + assertThat(subsegment.getAnnotations()) + .hasSize(2) + .containsEntry("ColdStart", true) + .containsEntry("Service", "lambdaHandler"); + + assertThat(subsegment.getMetadata()) + .hasSize(1) + .containsKey("lambdaHandler"); + + assertThat(subsegment.getMetadata().get("lambdaHandler")) + .satisfies(stringObjectMap -> assertThat(stringObjectMap) + .containsEntry("handleRequest error", exception)); + }); } } diff --git a/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/ValidationUtilsTest.java b/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/ValidationUtilsTest.java index 86dddd3e2..fa0d1394c 100644 --- a/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/ValidationUtilsTest.java +++ b/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/ValidationUtilsTest.java @@ -65,9 +65,9 @@ public void testLoadMetaSchema_NoValidation() { ValidationConfig.get().setSchemaVersion(SpecVersion.VersionFlag.V7); assertThatNoException().isThrownBy(() -> - { - getJsonSchema("classpath:/schema_v7_ko.json", false); - }); + { + getJsonSchema("classpath:/schema_v7_ko.json", false); + }); } @Test @@ -118,9 +118,9 @@ public void testValidateJsonNodeOK() throws IOException { ValidationConfig.get().getObjectMapper().readTree(this.getClass().getResourceAsStream("/json_ok.json")); assertThatNoException().isThrownBy(() -> - { - validate(node, schemaString); - }); + { + validate(node, schemaString); + }); } @Test @@ -140,9 +140,9 @@ public void testValidateMapOK() { map.put("price", 258); assertThatNoException().isThrownBy(() -> - { - validate(map, schemaString); - }); + { + validate(map, schemaString); + }); } @Test @@ -167,9 +167,9 @@ public void testValidateStringOK() { String json = "{\n \"id\": 43242,\n \"name\": \"FooBar XY\",\n \"price\": 258\n}"; assertThatNoException().isThrownBy(() -> - { - validate(json, schemaString); - }); + { + validate(json, schemaString); + }); } @Test @@ -184,9 +184,9 @@ public void testValidateObjectOK() { Product product = new Product(42, "FooBar", 42); assertThatNoException().isThrownBy(() -> - { - validate(product, schemaString); - }); + { + validate(product, schemaString); + }); } @Test @@ -211,9 +211,9 @@ public void testValidateSubObjectOK() { MyCustomEvent event = new MyCustomEvent(basket); assertThatNoException().isThrownBy(() -> - { - validate(event, schemaString, "basket.products[0]"); - }); + { + validate(event, schemaString, "basket.products[0]"); + }); } @Test diff --git a/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/internal/ValidationAspectTest.java b/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/internal/ValidationAspectTest.java index 9ea596ff3..c8d5e7ade 100644 --- a/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/internal/ValidationAspectTest.java +++ b/powertools-validation/src/test/java/software/amazon/lambda/powertools/validation/internal/ValidationAspectTest.java @@ -110,9 +110,9 @@ public void testValidateOutboundJsonSchema(Object object) throws Throwable { when(validation.outboundSchema()).thenReturn("classpath:/schema_v7.json"); assertThatExceptionOfType(ValidationException.class).isThrownBy(() -> - { - validationAspect.around(pjp, validation); - }); + { + validationAspect.around(pjp, validation); + }); } @Test From 16becc985d0a25a028fcd11e1c14b5acf13e38de Mon Sep 17 00:00:00 2001 From: Jerome Van Der Linden Date: Fri, 4 Aug 2023 09:02:13 +0200 Subject: [PATCH 2/3] exclude examples from sonar --- .sonarcloud.properties | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .sonarcloud.properties diff --git a/.sonarcloud.properties b/.sonarcloud.properties new file mode 100644 index 000000000..cab1c3e9a --- /dev/null +++ b/.sonarcloud.properties @@ -0,0 +1,14 @@ +# +# Copyright 2023 Amazon.com, Inc. or its affiliates. +# Licensed under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +sonar.exclusions=examples/**/* \ No newline at end of file From 8a94fef39efebc0f70eb416d388ea17be2477df5 Mon Sep 17 00:00:00 2001 From: Jerome Van Der Linden Date: Fri, 4 Aug 2023 09:08:48 +0200 Subject: [PATCH 3/3] exclude e2e handlers from sonar --- .sonarcloud.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.sonarcloud.properties b/.sonarcloud.properties index cab1c3e9a..adc8fb371 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -11,4 +11,4 @@ # limitations under the License. # # -sonar.exclusions=examples/**/* \ No newline at end of file +sonar.exclusions=examples/**/*,powertools-e2e-tests/handlers/**/* \ No newline at end of file