17
17
package org .terracotta .utilities .test .net ;
18
18
19
19
import 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 ;
23
20
24
21
import org .junit .Ignore ;
25
22
import org .junit .Test ;
26
- import org .slf4j .Logger ;
27
23
import org .slf4j .LoggerFactory ;
24
+ import org .terracotta .utilities .test .logging .ConnectedListAppender ;
28
25
29
26
import java .io .IOException ;
30
27
import java .lang .ref .WeakReference ;
40
37
import java .util .concurrent .TimeUnit ;
41
38
import java .util .concurrent .atomic .AtomicReference ;
42
39
43
- import static java .util .Objects .requireNonNull ;
44
40
import static org .hamcrest .Matchers .allOf ;
45
41
import static org .hamcrest .Matchers .equalTo ;
46
42
import static org .hamcrest .Matchers .hasItem ;
@@ -323,7 +319,7 @@ public void testReleaseCheckEnabled() throws IOException {
323
319
assertFalse (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE + " environment variable must be false or not specified" ,
324
320
Boolean .parseBoolean (System .getenv (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE )));
325
321
326
- try (ListAppender appender = new ListAppender (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
322
+ try (ConnectedListAppender appender = ConnectedListAppender . newInstance (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
327
323
PortManager .PortRef portRef = portManager .reservePort ();
328
324
int port = portRef .port ();
329
325
try (ServerSocket ignored = new ServerSocket (port )) {
@@ -351,7 +347,7 @@ public void testReleaseCheckDisabled() throws IOException {
351
347
assertFalse (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE + " environment variable must be false or not specified" ,
352
348
Boolean .parseBoolean (System .getenv (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE )));
353
349
354
- try (ListAppender appender = new ListAppender (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
350
+ try (ConnectedListAppender appender = ConnectedListAppender . newInstance (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
355
351
PortManager .PortRef portRef = portManager .reservePort ();
356
352
int port = portRef .port ();
357
353
try (ServerSocket ignored = new ServerSocket (port )) {
@@ -380,7 +376,7 @@ public void testReleaseCheckDisabledEnvironment() throws IOException {
380
376
assumeTrue ("Skipped unless " + PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE + " environment variable is true" ,
381
377
Boolean .parseBoolean (System .getenv (PortManager .DISABLE_PORT_RELEASE_CHECK_ENV_VARIABLE )));
382
378
383
- try (ListAppender appender = new ListAppender (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
379
+ try (ConnectedListAppender appender = ConnectedListAppender . newInstance (LoggerFactory .getLogger (PortManager .class ), "WARN" )) {
384
380
PortManager .PortRef portRef = portManager .reservePort ();
385
381
int port = portRef .port ();
386
382
try (ServerSocket ignored = new ServerSocket (port )) {
@@ -439,50 +435,4 @@ public void testSequentialAllocation() {
439
435
ports .clear ();
440
436
}
441
437
}
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
- }
488
438
}
0 commit comments