Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions powertools-logging/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,6 @@
<artifactId>jsonassert</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit-pioneer</groupId>
<artifactId>junit-pioneer</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public final class LambdaLoggingAspect {

private static final String LOG_LEVEL = System.getenv("POWERTOOLS_LOG_LEVEL");
private static final String SAMPLING_RATE = System.getenv("POWERTOOLS_LOGGER_SAMPLE_RATE");
private static final Boolean LOG_EVENT;
private static Boolean LOG_EVENT;

private static Level LEVEL_AT_INITIALISATION;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,6 @@

package software.amazon.lambda.powertools.logging.internal;

import static java.util.Collections.emptyMap;
import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.joining;
import static org.apache.commons.lang3.reflect.FieldUtils.writeStaticField;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.openMocks;
import static org.skyscreamer.jsonassert.JSONAssert.assertEquals;
import static software.amazon.lambda.powertools.core.internal.SystemWrapper.getProperty;
import static software.amazon.lambda.powertools.core.internal.SystemWrapper.getenv;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
Expand All @@ -37,45 +24,42 @@
import com.amazonaws.services.lambda.runtime.tests.annotations.Event;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.ThreadContext;
import org.json.JSONException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junitpioneer.jupiter.SetEnvironmentVariable;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import software.amazon.lambda.powertools.core.internal.EnvironmentVariables;
import software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor;
import software.amazon.lambda.powertools.core.internal.SystemWrapper;
import software.amazon.lambda.powertools.logging.handlers.PowerLogToolApiGatewayHttpApiCorrelationId;
import software.amazon.lambda.powertools.logging.handlers.PowerLogToolApiGatewayRestApiCorrelationId;
import software.amazon.lambda.powertools.logging.handlers.PowerLogToolEnabled;
import software.amazon.lambda.powertools.logging.handlers.PowerLogToolEnabledForStream;
import software.amazon.lambda.powertools.logging.handlers.PowerToolDisabled;
import software.amazon.lambda.powertools.logging.handlers.PowerToolDisabledForStream;
import software.amazon.lambda.powertools.logging.handlers.PowerToolLogEventEnabled;
import software.amazon.lambda.powertools.logging.handlers.PowerToolLogEventEnabledForStream;
import software.amazon.lambda.powertools.logging.handlers.PowerToolLogEventEnabledWithCustomMapper;
import software.amazon.lambda.powertools.logging.handlers.PowertoolsLogAlbCorrelationId;
import software.amazon.lambda.powertools.logging.handlers.PowertoolsLogEnabledWithClearState;
import software.amazon.lambda.powertools.logging.handlers.PowertoolsLogEventBridgeCorrelationId;
import software.amazon.lambda.powertools.logging.handlers.*;

import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import static java.util.Collections.emptyMap;
import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.joining;
import static org.apache.commons.lang3.reflect.FieldUtils.writeStaticField;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.openMocks;
import static org.skyscreamer.jsonassert.JSONAssert.assertEquals;
import static software.amazon.lambda.powertools.core.internal.SystemWrapper.getProperty;
import static software.amazon.lambda.powertools.core.internal.SystemWrapper.getenv;

class LambdaLoggingAspectTest {

Expand All @@ -91,6 +75,7 @@ void setUp() throws IllegalAccessException, IOException, NoSuchMethodException,
openMocks(this);
ThreadContext.clearAll();
writeStaticField(LambdaHandlerProcessor.class, "IS_COLD_START", null, true);
writeStaticField(LambdaLoggingAspect.class, "LOG_EVENT", Boolean.TRUE, true);
setupContext();
requestHandler = new PowerLogToolEnabled();
requestStreamHandler = new PowerLogToolEnabledForStream();
Expand Down Expand Up @@ -180,7 +165,6 @@ void shouldHaveNoEffectIfNotUsedOnLambdaHandler() {
}

@Test
@SetEnvironmentVariable(key = EnvironmentVariables.LOGGER.LOG_EVENT, value = "true")
void shouldLogEventForHandler() throws IOException, JSONException {
requestHandler = new PowerToolLogEventEnabled();
S3EventNotification s3EventNotification = s3EventNotification();
Expand All @@ -198,27 +182,24 @@ void shouldLogEventForHandler() throws IOException, JSONException {
assertEquals(expectEvent, event, false);
}

/**
* If POWERTOOLS_LOGGER_LOG_EVENT was set to false, the handler should log anything, despite @Logging(logEvent=true)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, see my other comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

python is the ref, not typescript

* @throws IOException
*/
@Test
@SetEnvironmentVariable(key = EnvironmentVariables.LOGGER.LOG_EVENT, value = "false")
void shouldNotLogEventForHandlerWhenEnvVariableSetToFalse() throws IOException, JSONException {
void shouldNotLogEventForHandlerWhenEnvVariableSetToFalse() throws IOException, IllegalAccessException {
writeStaticField(LambdaLoggingAspect.class, "LOG_EVENT", Boolean.FALSE, true);

requestHandler = new PowerToolLogEventEnabled();
S3EventNotification s3EventNotification = s3EventNotification();

requestHandler.handleRequest(s3EventNotification, context);

Map<String, Object> log = parseToMap(Files.lines(Paths.get("target/logfile.json")).collect(joining()));

String event = (String) log.get("message");

String expectEvent = new BufferedReader(
new InputStreamReader(this.getClass().getResourceAsStream("/s3EventNotification.json")))
.lines().collect(joining("\n"));

assertEquals(expectEvent, event, false);
String s = Files.lines(Paths.get("target/logfile.json")).collect(joining());
assertThat(s).isEmpty();
}

@Test
@SetEnvironmentVariable(key = EnvironmentVariables.LOGGER.LOG_EVENT, value = "true")
void shouldLogEventForHandlerWithOverriddenObjectMapper() throws IOException, JSONException {
RequestHandler<S3EventNotification, Object> handler = new PowerToolLogEventEnabledWithCustomMapper();
S3EventNotification s3EventNotification = s3EventNotification();
Expand All @@ -237,7 +218,6 @@ void shouldLogEventForHandlerWithOverriddenObjectMapper() throws IOException, JS
}

@Test
@SetEnvironmentVariable(key = EnvironmentVariables.LOGGER.LOG_EVENT, value = "true")
void shouldLogEventForStreamAndLambdaStreamIsValid() throws IOException, JSONException {
requestStreamHandler = new PowerToolLogEventEnabledForStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
Expand Down