Home / Class/ LoggingHandlerTest Class — netty Architecture

LoggingHandlerTest Class — netty Architecture

Architecture documentation for the LoggingHandlerTest class in LoggingHandlerTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6["LoggingHandlerTest"]
  55992997_622b_e15a_b1c6_c22953788a4b["LoggingHandlerTest.java"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|defined in| 55992997_622b_e15a_b1c6_c22953788a4b
  d9b3129c_e879_f45e_6eab_c802a2841b89["beforeClass()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| d9b3129c_e879_f45e_6eab_c802a2841b89
  7235cf1c_0c23_dc9c_dd20_b29a22ce2aba["afterClass()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 7235cf1c_0c23_dc9c_dd20_b29a22ce2aba
  56216073_cd0c_8f78_a01a_4559f76583d2["setup()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 56216073_cd0c_8f78_a01a_4559f76583d2
  1d76895f_2e43_5da3_ccf3_ef3986373b23["teardown()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 1d76895f_2e43_5da3_ccf3_ef3986373b23
  9b175914_67e6_cbcc_9cc9_ac2895fb52c2["shouldNotAcceptNullLogLevel()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 9b175914_67e6_cbcc_9cc9_ac2895fb52c2
  a3cf2f2c_7bb3_5519_e6d3_e434b7a43773["shouldApplyCustomLogLevel()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| a3cf2f2c_7bb3_5519_e6d3_e434b7a43773
  9790395b_636e_ec35_1126_2a3497b81671["shouldLogChannelActive()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 9790395b_636e_ec35_1126_2a3497b81671
  46e7bfb6_2d4b_82cc_a3d0_fa67819a9159["shouldLogChannelWritabilityChanged()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 46e7bfb6_2d4b_82cc_a3d0_fa67819a9159
  c59a52eb_e630_f274_37c3_af69fd3c9c83["shouldLogChannelRegistered()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| c59a52eb_e630_f274_37c3_af69fd3c9c83
  3d96c6e9_b671_dd61_9691_750def065739["shouldLogChannelClose()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 3d96c6e9_b671_dd61_9691_750def065739
  18310a5f_40c3_fca7_f31c_939fe8310d83["shouldLogChannelConnect()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 18310a5f_40c3_fca7_f31c_939fe8310d83
  5b57418b_f4df_c6f7_400b_7b2c10227a7d["shouldLogChannelConnectWithLocalAddress()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 5b57418b_f4df_c6f7_400b_7b2c10227a7d
  5b18651b_dba6_a295_cefe_e75e08cdffee["shouldLogChannelDisconnect()"]
  12b00413_e6e3_10b5_14c7_7f5ebb4a81a6 -->|method| 5b18651b_dba6_a295_cefe_e75e08cdffee

Relationship Graph

Source Code

handler/src/test/java/io/netty/handler/logging/LoggingHandlerTest.java lines 57–331

public class LoggingHandlerTest {

    private static final String LOGGER_NAME = LoggingHandler.class.getName();

    private static final Logger rootLogger = (Logger) LoggerFactory.getLogger(ROOT_LOGGER_NAME);
    private static final Logger logger = (Logger) LoggerFactory.getLogger(LOGGER_NAME);

    private static final List<Appender<ILoggingEvent>> oldAppenders = new ArrayList<Appender<ILoggingEvent>>();
    /**
     * Custom logback appender which gets used to match on log messages.
     */
    private Appender<ILoggingEvent> appender;

    @BeforeAll
    public static void beforeClass() {
        for (Iterator<Appender<ILoggingEvent>> i = rootLogger.iteratorForAppenders(); i.hasNext();) {
            Appender<ILoggingEvent> a = i.next();
            oldAppenders.add(a);
            rootLogger.detachAppender(a);
        }

        Unpooled.buffer();
    }

    @AfterAll
    public static void afterClass() {
        for (Appender<ILoggingEvent> a: oldAppenders) {
            rootLogger.addAppender(a);
        }
    }

    @BeforeEach
    @SuppressWarnings("unchecked")
    public void setup() {
        appender = mock(Appender.class);
        logger.addAppender(appender);
    }

    @AfterEach
    public void teardown() {
        logger.detachAppender(appender);
    }

    @Test
    public void shouldNotAcceptNullLogLevel() {
        assertThrows(NullPointerException.class, new Executable() {
            @Override
            public void execute() throws Throwable {
                LogLevel level = null;
                new LoggingHandler(level);
            }
        });
    }

    @Test
    public void shouldApplyCustomLogLevel() {
        LoggingHandler handler = new LoggingHandler(LogLevel.INFO);
        assertEquals(LogLevel.INFO, handler.level());
    }

    @Test
    public void shouldLogChannelActive() {
        new EmbeddedChannel(new LoggingHandler(LogLevel.WARN));
        verify(appender).doAppend(argThat(new RegexLogMatcher(".+ACTIVE$")));
    }

    @Test
    public void shouldLogChannelWritabilityChanged() throws Exception {
        EmbeddedChannel channel = new EmbeddedChannel(new LoggingHandler(LogLevel.WARN));
        // this is used to switch the channel to become unwritable
        channel.config().setWriteBufferLowWaterMark(5);
        channel.config().setWriteBufferHighWaterMark(10);
        channel.write("hello", channel.newPromise());

        verify(appender).doAppend(argThat(new RegexLogMatcher(".+WRITABILITY CHANGED$")));
    }

    @Test
    public void shouldLogChannelRegistered() {
        new EmbeddedChannel(new LoggingHandler(LogLevel.WARN));
        verify(appender).doAppend(argThat(new RegexLogMatcher(".+REGISTERED$")));

Frequently Asked Questions

What is the LoggingHandlerTest class?
LoggingHandlerTest is a class in the netty codebase, defined in handler/src/test/java/io/netty/handler/logging/LoggingHandlerTest.java.
Where is LoggingHandlerTest defined?
LoggingHandlerTest is defined in handler/src/test/java/io/netty/handler/logging/LoggingHandlerTest.java at line 57.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free