diff --git a/fleetd/src/test/java/dev/ltms/fleet/FleetdLeadMailboxSelectionTest.java b/fleetd/src/test/java/dev/ltms/fleet/FleetdLeadMailboxSelectionTest.java index f681bfa..e4bfa2c 100644 --- a/fleetd/src/test/java/dev/ltms/fleet/FleetdLeadMailboxSelectionTest.java +++ b/fleetd/src/test/java/dev/ltms/fleet/FleetdLeadMailboxSelectionTest.java @@ -1,15 +1,12 @@ package dev.ltms.fleet; import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.read.ListAppender; import dev.ltms.fleet.config.FleetConfig; import dev.ltms.fleet.msg.LeadMailbox; +import dev.ltms.fleet.testing.CapturedLog; import org.junit.jupiter.api.Test; -import org.slf4j.LoggerFactory; -import java.util.List; import java.util.Map; import static org.junit.jupiter.api.Assertions.*; @@ -52,29 +49,22 @@ class FleetdLeadMailboxSelectionTest { } } - private static ListAppender captureFleetdLogs() { - Logger logger = (Logger) LoggerFactory.getLogger(Fleetd.class); - ListAppender appender = new ListAppender<>(); - appender.start(); - logger.addAppender(appender); - return appender; - } - - private static String joined(ListAppender appender, Level level) { - return appender.list.stream().filter(e -> e.getLevel() == level) + private static String joined(CapturedLog captured, Level level) { + return captured.events().stream().filter(e -> e.getLevel() == level) .map(ILoggingEvent::getFormattedMessage).reduce("", (a, b) -> a + "\n" + b); } @Test void noCoordinatorBlockLeavesTheFeatureOffSilently() { - var appender = captureFleetdLogs(); - var opener = new RecordingOpener(); + try (var captured = CapturedLog.of(Fleetd.class)) { + var opener = new RecordingOpener(); - assertNull(Fleetd.openLeadMailbox(null, Map.of(), opener)); + assertNull(Fleetd.openLeadMailbox(null, Map.of(), opener)); - assertNull(opener.offeredUri, "nothing configured means nothing is opened"); - assertEquals("", joined(appender, Level.WARN), - "an opt-in feature nobody asked for must not warn on every boot"); + assertNull(opener.offeredUri, "nothing configured means nothing is opened"); + assertEquals("", joined(captured, Level.WARN), + "an opt-in feature nobody asked for must not warn on every boot"); + } } @Test @@ -114,31 +104,33 @@ class FleetdLeadMailboxSelectionTest { @Test void warnsAndStaysOffWhenSelfIdIsMissing() { - var appender = captureFleetdLogs(); - var opener = new RecordingOpener(); - var coordinator = new FleetConfig.Coordinator(RESOLVED_URI, null, null, null, null); + try (var captured = CapturedLog.of(Fleetd.class)) { + var opener = new RecordingOpener(); + var coordinator = new FleetConfig.Coordinator(RESOLVED_URI, null, null, null, null); - assertNull(Fleetd.openLeadMailbox(coordinator, Map.of(), opener)); + assertNull(Fleetd.openLeadMailbox(coordinator, Map.of(), opener)); - assertNull(opener.offeredUri, "a mailbox with no owning coord-id has no queue to declare"); - String warns = joined(appender, Level.WARN); - assertTrue(warns.contains("coordinator.selfId"), () -> "say which key is missing: " + warns); - assertFalse(warns.contains(SECRET), () -> "the URI's password must never be logged: " + warns); + assertNull(opener.offeredUri, "a mailbox with no owning coord-id has no queue to declare"); + String warns = joined(captured, Level.WARN); + assertTrue(warns.contains("coordinator.selfId"), () -> "say which key is missing: " + warns); + assertFalse(warns.contains(SECRET), () -> "the URI's password must never be logged: " + warns); + } } @Test void warnsAndStaysOffWhenTheBrokerIsUnreachableAtBoot() { - var appender = captureFleetdLogs(); - var opener = new RecordingOpener(); - opener.unreachable = true; - var coordinator = new FleetConfig.Coordinator(RESOLVED_URI, null, "mac-opus", null, null); + try (var captured = CapturedLog.of(Fleetd.class)) { + var opener = new RecordingOpener(); + opener.unreachable = true; + var coordinator = new FleetConfig.Coordinator(RESOLVED_URI, null, "mac-opus", null, null); - assertNull(Fleetd.openLeadMailbox(coordinator, Map.of(), opener), - "a down coordination broker turns the feature off; it must never take the daemon down"); + assertNull(Fleetd.openLeadMailbox(coordinator, Map.of(), opener), + "a down coordination broker turns the feature off; it must never take the daemon down"); - String warns = joined(appender, Level.WARN); - assertTrue(warns.contains("coord.example"), () -> "name the host that failed: " + warns); - assertFalse(warns.contains(SECRET), () -> "with credentials stripped: " + warns); - assertTrue(warns.contains("Connection refused"), () -> "and the real reason: " + warns); + String warns = joined(captured, Level.WARN); + assertTrue(warns.contains("coord.example"), () -> "name the host that failed: " + warns); + assertFalse(warns.contains(SECRET), () -> "with credentials stripped: " + warns); + assertTrue(warns.contains("Connection refused"), () -> "and the real reason: " + warns); + } } }