1717package org .terracotta .utilities .test .net ;
1818
1919import ch .qos .logback .classic .Level ;
20- import ch .qos .logback .classic .LoggerContext ;
21- import ch .qos .logback .classic .filter .ThresholdFilter ;
22- import ch .qos .logback .classic .spi .ILoggingEvent ;
2320
2421import org .junit .Ignore ;
2522import org .junit .Test ;
26- import org .slf4j .Logger ;
2723import org .slf4j .LoggerFactory ;
24+ import org .terracotta .utilities .test .logging .ConnectedListAppender ;
2825
2926import java .io .IOException ;
3027import java .lang .ref .WeakReference ;
4037import java .util .concurrent .TimeUnit ;
4138import java .util .concurrent .atomic .AtomicReference ;
4239
43- import static java .util .Objects .requireNonNull ;
4440import static org .hamcrest .Matchers .allOf ;
4541import static org .hamcrest .Matchers .equalTo ;
4642import static org .hamcrest .Matchers .hasItem ;
@@ -323,7 +319,7 @@ public void testReleaseCheckEnabled() throws IOException {
323319 assertFalse (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE + " environment variable must be false or not specified" ,
324320 Boolean .parseBoolean (System .getenv (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE )));
325321
326- try (ListAppender appender = new ListAppender (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
322+ try (ConnectedListAppender appender = ConnectedListAppender . newInstance (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
327323 PortManager .PortRef portRef = portManager .reservePort ();
328324 int port = portRef .port ();
329325 try (ServerSocket ignored = new ServerSocket (port )) {
@@ -351,7 +347,7 @@ public void testReleaseCheckDisabled() throws IOException {
351347 assertFalse (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE + " environment variable must be false or not specified" ,
352348 Boolean .parseBoolean (System .getenv (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE )));
353349
354- try (ListAppender appender = new ListAppender (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
350+ try (ConnectedListAppender appender = ConnectedListAppender . newInstance (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
355351 PortManager .PortRef portRef = portManager .reservePort ();
356352 int port = portRef .port ();
357353 try (ServerSocket ignored = new ServerSocket (port )) {
@@ -380,7 +376,7 @@ public void testReleaseCheckDisabledEnvironment() throws IOException {
380376 assumeTrue ("Skipped unless " + PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE + " environment variable is true" ,
381377 Boolean .parseBoolean (System .getenv (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE )));
382378
383- try (ListAppender appender = new ListAppender (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
379+ try (ConnectedListAppender appender = ConnectedListAppender . newInstance (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
384380 PortManager .PortRef portRef = portManager .reservePort ();
385381 int port = portRef .port ();
386382 try (ServerSocket ignored = new ServerSocket (port )) {
@@ -439,50 +435,4 @@ public void testSequentialAllocation() {
439435 ports .clear ();
440436 }
441437 }
442-
443- /**
444- * A {@link ch.qos.logback.core.read.ListAppender} implementation that auto-connects
445- * itself to a designated {@link Logger}. The {@link #close()} or {@link #stop()} method
446- * should be called after use of the appender is completed to have the appender removed
447- * from the designated {@code Logger}.
448- */
449- private static class ListAppender extends ch .qos .logback .core .read .ListAppender <ILoggingEvent >
450- implements AutoCloseable {
451- private final ch .qos .logback .classic .Logger logbackLogger ;
452-
453- public ListAppender (Logger logger , String minimumLevel ) {
454- super ();
455- requireNonNull (logger , "logger" );
456- Level minLevel = Level .toLevel (requireNonNull (minimumLevel , "minimumLevel" ), Level .DEBUG );
457-
458- this .setContext ((LoggerContext )LoggerFactory .getILoggerFactory ());
459- ThresholdFilter filter = new ThresholdFilter ();
460- filter .setLevel (minLevel .levelStr );
461- this .addFilter (filter );
462- this .start ();
463-
464- this .logbackLogger = (ch .qos .logback .classic .Logger )logger ;
465- logbackLogger .addAppender (this );
466- }
467-
468- @ Override
469- public void stop () {
470- logbackLogger .detachAppender (this );
471- super .stop ();
472- }
473-
474- @ Override
475- public void close () {
476- this .stop ();
477- }
478-
479- /**
480- * Gets a reference to the {@code List} holding the recorded {@link ILoggingEvent} instances.
481- * This list may be altered, for example, cleared.
482- * @return the mutable list of recorded {@code ILoggingEvent} instances
483- */
484- public List <ILoggingEvent > events () {
485- return this .list ;
486- }
487- }
488438}
0 commit comments