Skip to content

Commit

Permalink
Merge pull request #10262 from geoand/root-handlers
Browse files Browse the repository at this point in the history
Make sure that logging handlers don't leak in internal tests
  • Loading branch information
geoand authored Jun 25, 2020
2 parents 0513ad9 + 7a64dcd commit 235d0ec
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,17 @@
import java.util.function.Supplier;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.stream.Stream;

import org.jboss.logmanager.Logger;
import org.jboss.shrinkwrap.api.exporter.ExplodedExporter;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.TestInstanceFactory;
Expand Down Expand Up @@ -60,13 +63,14 @@
* A side effect of this is that the tests will run on port 8080 by default instead of port 8081.
*/
public class QuarkusDevModeTest
implements BeforeEachCallback, AfterEachCallback, TestInstanceFactory {
implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, TestInstanceFactory {

private static final Logger rootLogger;
private Handler[] originalRootLoggerHandlers;

static {
System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
rootLogger = LogManager.getLogManager().getLogger("");
rootLogger = (Logger) LogManager.getLogManager().getLogger("");
}

private DevModeMain devModeMain;
Expand Down Expand Up @@ -126,8 +130,13 @@ public Object createTestInstance(TestInstanceFactoryContext factoryContext, Exte
}

@Override
public void beforeEach(ExtensionContext extensionContext) throws Exception {
public void beforeAll(ExtensionContext context) throws Exception {
originalRootLoggerHandlers = rootLogger.getHandlers();
rootLogger.addHandler(inMemoryLogHandler);
}

@Override
public void beforeEach(ExtensionContext extensionContext) throws Exception {
if (archiveProducer == null) {
throw new RuntimeException("QuarkusDevModeTest does not have archive producer set");
}
Expand Down Expand Up @@ -180,6 +189,11 @@ public void close() throws Throwable {
}
}

@Override
public void afterAll(ExtensionContext context) throws Exception {
rootLogger.setHandlers(originalRootLoggerHandlers);
}

@Override
public void afterEach(ExtensionContext extensionContext) throws Exception {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,13 @@
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.jboss.logmanager.Logger;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.exporter.ExplodedExporter;
import org.jboss.shrinkwrap.api.exporter.ZipExporter;
Expand Down Expand Up @@ -72,10 +73,11 @@ public class QuarkusProdModeTest
private static final String QUARKUS_HTTP_PORT_PROPERTY = "quarkus.http.port";

private static final Logger rootLogger;
private Handler[] originalHandlers;

static {
System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
rootLogger = LogManager.getLogManager().getLogger("");
rootLogger = (Logger) LogManager.getLogManager().getLogger("");
}

private Path outputDir;
Expand Down Expand Up @@ -289,6 +291,7 @@ private JavaArchive getArchiveProducerOrDefault() {

@Override
public void beforeAll(ExtensionContext extensionContext) throws Exception {
originalHandlers = rootLogger.getHandlers();
rootLogger.addHandler(inMemoryLogHandler);

timeoutTask = new TimerTask() {
Expand Down Expand Up @@ -533,6 +536,8 @@ public void testFailed(ExtensionContext context, Throwable cause) {

@Override
public void afterAll(ExtensionContext extensionContext) throws Exception {
rootLogger.setHandlers(originalHandlers);

if (run) {
RestAssuredURLManager.clearURL();
}
Expand Down

0 comments on commit 235d0ec

Please sign in to comment.