Home / Class/ LeakPresenceDetectorTest Class — netty Architecture

LeakPresenceDetectorTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  f88b124f_7485_efe9_077b_0111197ae030["LeakPresenceDetectorTest"]
  5de89b08_3710_3173_95d5_1406fc2abe4d["LeakPresenceDetectorTest.java"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|defined in| 5de89b08_3710_3173_95d5_1406fc2abe4d
  c1e07c1d_d027_accb_fbdb_9e446d07149e["setUp()"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|method| c1e07c1d_d027_accb_fbdb_9e446d07149e
  34400e11_0b4b_f4d8_c90e_c616ddd3729f["tearDown()"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|method| 34400e11_0b4b_f4d8_c90e_c616ddd3729f
  7ad3bd1b_978e_4c3e_5b30_c5109395e997["factories()"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|method| 7ad3bd1b_978e_4c3e_5b30_c5109395e997
  77edef6e_f3ad_8ec1_3fa9_fa1092e9f2a8["noExceptionInNormalOperation()"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|method| 77edef6e_f3ad_8ec1_3fa9_fa1092e9f2a8
  1f8d1453_32b3_b3e6_3a0b_b500e0813fa3["exceptionOnUnclosed()"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|method| 1f8d1453_32b3_b3e6_3a0b_b500e0813fa3
  6eadd23c_b100_35e9_99fa_cbf925395b74["noExceptionInStaticInitializerGlobal()"]
  f88b124f_7485_efe9_077b_0111197ae030 -->|method| 6eadd23c_b100_35e9_99fa_cbf925395b74

Relationship Graph

Source Code

common/src/test/java/io/netty/util/LeakPresenceDetectorTest.java lines 33–109

class LeakPresenceDetectorTest {
    private ResourceLeakDetectorFactory oldFactory;

    private void setUp(Function<Class<?>, LeakPresenceDetector<?>> factory) {
        oldFactory = ResourceLeakDetectorFactory.instance();
        ResourceLeakDetectorFactory.setResourceLeakDetectorFactory(new ResourceLeakDetectorFactory() {
            @SuppressWarnings("unchecked")
            @Override
            public <T> ResourceLeakDetector<T> newResourceLeakDetector(
                    Class<T> resource, int samplingInterval, long maxActive) {
                return (ResourceLeakDetector<T>) factory.apply(resource);
            }
        });
    }

    @AfterEach
    public void tearDown() {
        ResourceLeakDetectorFactory.setResourceLeakDetectorFactory(oldFactory);
    }

    static List<Function<Class<?>, LeakPresenceDetector<?>>> factories() {
        return Collections.singletonList(LeakPresenceDetector::new);
    }

    @ParameterizedTest
    @MethodSource("factories")
    public void noExceptionInNormalOperation(Function<Class<?>, LeakPresenceDetector<?>> factory) {
        setUp(factory);

        Resource resource = new Resource();
        resource.close();
        resource.close();

        LeakPresenceDetector.check();
    }

    @SuppressWarnings("resource")
    @ParameterizedTest
    @MethodSource("factories")
    public void exceptionOnUnclosed(Function<Class<?>, LeakPresenceDetector<?>> factory) {
        setUp(factory);

        new Resource();

        assertThrows(IllegalStateException.class, LeakPresenceDetector::check);
    }

    @Test
    public void noExceptionInStaticInitializerGlobal() {
        setUp(LeakPresenceDetector::new);

        ResourceInStaticVariable1.init();

        LeakPresenceDetector.check();
    }

    private static class Resource implements Closeable {
        private final ResourceLeakTracker<Resource> leak;

        Resource() {
            leak = ResourceLeakDetectorFactory.instance().newResourceLeakDetector(Resource.class).track(this);
        }

        @Override
        public void close() {
            leak.close(this);
        }
    }

    @SuppressWarnings("unused")
    private static class ResourceInStaticVariable1 {
        private static final Resource RESOURCE = LeakPresenceDetector.staticInitializer(Resource::new);

        static void init() {
        }
    }
}

Frequently Asked Questions

What is the LeakPresenceDetectorTest class?
LeakPresenceDetectorTest is a class in the netty codebase, defined in common/src/test/java/io/netty/util/LeakPresenceDetectorTest.java.
Where is LeakPresenceDetectorTest defined?
LeakPresenceDetectorTest is defined in common/src/test/java/io/netty/util/LeakPresenceDetectorTest.java at line 33.

Analyze Your Own Codebase

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

Try Supermodel Free