Skip to content

Commit

Permalink
Merge reactor#2447 into 1.1.0-M6
Browse files Browse the repository at this point in the history
  • Loading branch information
violetagg committed Aug 24, 2022
2 parents 4af72ee + 1510518 commit 8691df2
Showing 1 changed file with 25 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.read.ListAppender;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
Expand All @@ -35,7 +34,6 @@
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
import org.slf4j.LoggerFactory;
import reactor.core.publisher.Flux;
Expand All @@ -58,6 +56,7 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CountDownLatch;
Expand Down Expand Up @@ -339,7 +338,6 @@ else if (serverProtocols.containsAll(clientProtocols) || clientProtocols.contain
}

@ParameterizedCompatibleCombinationsTest
@SuppressWarnings("unchecked")
void testAccessLog(HttpServer server, HttpClient client) throws Exception {
disposableServer =
server.handle((req, resp) -> {
Expand All @@ -352,13 +350,13 @@ void testAccessLog(HttpServer server, HttpClient client) throws Exception {
.accessLog(true)
.bindNow();

Appender<ILoggingEvent> mockedAppender = (Appender<ILoggingEvent>) Mockito.mock(Appender.class);
ArgumentCaptor<LoggingEvent> loggingEventArgumentCaptor = ArgumentCaptor.forClass(LoggingEvent.class);
Mockito.when(mockedAppender.getName()).thenReturn("MOCK");
AccessLogAppender accessLogAppender = new AccessLogAppender();
accessLogAppender.start();
Logger accessLogger = (Logger) LoggerFactory.getLogger("reactor.netty.http.server.AccessLog");
AtomicReference<String> protocol = new AtomicReference<>();
try {
accessLogger.addAppender(mockedAppender);
accessLogger.addAppender(accessLogAppender);

client.port(disposableServer.port())
.get()
.uri("/")
Expand All @@ -370,14 +368,15 @@ void testAccessLog(HttpServer server, HttpClient client) throws Exception {
.expectNext("FOUND")
.expectComplete()
.verify(Duration.ofSeconds(5));

assertThat(accessLogAppender.latch.await(5, TimeUnit.SECONDS)).isTrue();

assertThat(accessLogAppender.list).hasSize(1);
assertThat(accessLogAppender.list.get(0).getFormattedMessage()).contains("GET / HTTP/" + protocol.get() + "\" 200");
}
finally {
Thread.sleep(20);
Mockito.verify(mockedAppender, Mockito.times(1)).doAppend(loggingEventArgumentCaptor.capture());
assertThat(loggingEventArgumentCaptor.getAllValues()).hasSize(1);
LoggingEvent relevantLog = loggingEventArgumentCaptor.getAllValues().get(0);
assertThat(relevantLog.getFormattedMessage()).contains("GET / HTTP/" + protocol.get() + "\" 200");
accessLogger.detachAppender(mockedAppender);
accessLogger.detachAppender(accessLogAppender);
accessLogAppender.stop();
}
}

Expand Down Expand Up @@ -648,4 +647,16 @@ void testIdleTimeout(HttpServer server, HttpClient client) throws Exception {

assertThat(goAwayReceived.await(10, TimeUnit.SECONDS)).isTrue();
}

static final class AccessLogAppender extends AppenderBase<ILoggingEvent> {

final CountDownLatch latch = new CountDownLatch(1);
final List<ILoggingEvent> list = new ArrayList<>();

@Override
protected void append(ILoggingEvent eventObject) {
list.add(eventObject);
latch.countDown();
}
}
}

0 comments on commit 8691df2

Please sign in to comment.