Skip to content

Commit

Permalink
Reduce logging in MongoDriver unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
prdoyle committed Jun 30, 2023
1 parent 1cd5897 commit 9fb8bbe
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.vena.bosk.drivers.mongo;

import ch.qos.logback.classic.Level;
import com.mongodb.MongoClientSettings;
import io.vena.bosk.Bosk;
import io.vena.bosk.Catalog;
Expand All @@ -19,6 +20,7 @@
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
Expand Down Expand Up @@ -83,6 +85,26 @@ void runTearDown(TestInfo testInfo) {
logTest("\\=== Done", testInfo);
}

// We'd like to use SLF4J's "Level" but that doesn't support OFF
protected void setLogging(Level level, Logger logger) {
ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger;
Level originalLevel = logbackLogger.getLevel();
if (originalLevel == null) {
tearDownActions.addFirst(()->logbackLogger.setLevel(originalLevel));
logbackLogger.setLevel(level);
} else if (!ALREADY_WARNED.getAndSet(true)){
LOGGER.warn("Logging level has been overridden by the user; ignoring the recommended setting from the testcase itself");
}
}

protected void setLogging(Level level, Class<?> logger) {
setLogging(level, LoggerFactory.getLogger(logger));
}

protected void setLogging(Level level, Package logger) {
setLogging(level, LoggerFactory.getLogger(logger.getName()));
}

private static void logTest(String verb, TestInfo testInfo) {
String method =
testInfo.getTestClass().map(Class::getSimpleName).orElse(null)
Expand Down Expand Up @@ -137,5 +159,6 @@ public interface Refs {
CatalogReference<TestEntity> childCatalog(Identifier child);
}

private static final AtomicBoolean ALREADY_WARNED = new AtomicBoolean(false);
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractMongoDriverTest.class);
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
import org.bson.BsonInt64;
import org.bson.BsonNull;
import org.bson.Document;
import org.junit.jupiter.api.BeforeEach;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static ch.qos.logback.classic.Level.ERROR;
import static io.vena.bosk.ListingEntry.LISTING_ENTRY;
import static io.vena.bosk.drivers.mongo.MongoDriverSettings.ImplementationKind.RESILIENT;
import static io.vena.bosk.drivers.mongo.v3.MainDriver.COLLECTION_NAME;
Expand All @@ -34,6 +36,12 @@
public class MongoDriverResiliencyTest extends AbstractMongoDriverTest {
FlushOrWait flushOrWait;

@BeforeEach
void setupLogging() {
// This test deliberately provokes a lot of warnings, so log errors only
setLogging(ERROR, MongoDriver.class.getPackage());
}

@ParametersByName
public MongoDriverResiliencyTest(MongoDriverSettings.MongoDriverSettingsBuilder driverSettings, FlushOrWait flushOrWait) {
super(driverSettings);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static ch.qos.logback.classic.Level.ERROR;
import static io.vena.bosk.ListingEntry.LISTING_ENTRY;
import static io.vena.bosk.drivers.mongo.Formatter.DocumentFields.path;
import static io.vena.bosk.drivers.mongo.Formatter.DocumentFields.revision;
Expand Down Expand Up @@ -173,6 +174,7 @@ void listing_stateMatches() throws InvalidTypeException, InterruptedException, I
@ParametersByName
@DisruptsMongoService
void networkOutage_boskRecovers() throws InvalidTypeException, InterruptedException, IOException {
setLogging(ERROR, MongoDriver.class.getPackage()); // We're expecting some warnings here
Bosk<TestEntity> bosk = new Bosk<TestEntity>("Main", TestEntity.class, this::initialRoot, driverFactory);
Refs refs = bosk.buildReferences(Refs.class);
BoskDriver<TestEntity> driver = bosk.driver();
Expand Down

0 comments on commit 9fb8bbe

Please sign in to comment.