Home / Class/ RecyclerTest Class — netty Architecture

RecyclerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  46ac14b1_2382_5afa_98f3_803182070b38["RecyclerTest"]
  e26a8224_f28b_3712_a787_658e2baa158b["RecyclerTest.java"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|defined in| e26a8224_f28b_3712_a787_658e2baa158b
  ebe18506_2430_b99d_d9f5_58c149e22f3f["ownerTypeAndUnguarded()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| ebe18506_2430_b99d_d9f5_58c149e22f3f
  9f5e7837_25d6_af3e_9a24_23db631915cd["notNoneOwnerAndUnguarded()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 9f5e7837_25d6_af3e_9a24_23db631915cd
  87dca999_f804_a974_e326_fd8f527f1246["newRecycler()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 87dca999_f804_a974_e326_fd8f527f1246
  1c2c7a05_5ecb_99ce_ba33_27c123c22ebe["Thread()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 1c2c7a05_5ecb_99ce_ba33_27c123c22ebe
  7e725c35_0fe0_4456_3792_5bd564cc5c6c["testThreadCanBeCollectedEvenIfHandledObjectIsReferenced()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 7e725c35_0fe0_4456_3792_5bd564cc5c6c
  0cbd6e51_d6f1_ca47_98c3_5056deb2c541["verySmallRecycer()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 0cbd6e51_d6f1_ca47_98c3_5056deb2c541
  1ad6ca0d_23ae_2354_dd38_0f17e894c21c["testMultipleRecycle()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 1ad6ca0d_23ae_2354_dd38_0f17e894c21c
  0f15da7a_0cc5_d986_0be6_419438d2b63c["testUnguardedMultipleRecycle()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 0f15da7a_0cc5_d986_0be6_419438d2b63c
  70ad432e_c700_e50e_aafa_660bf5f58122["testMultipleRecycleAtDifferentThread()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 70ad432e_c700_e50e_aafa_660bf5f58122
  d5663849_f9de_1a49_00a8_bc360fe5bd24["testMultipleRecycleAtDifferentThreadRacing()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| d5663849_f9de_1a49_00a8_bc360fe5bd24
  4c48b5d2_b8b5_b740_21d9_b4564924f5a5["testMultipleRecycleRacing()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 4c48b5d2_b8b5_b740_21d9_b4564924f5a5
  22b5838f_ef41_7f0e_e808_78969bb0f5f2["testRecycle()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 22b5838f_ef41_7f0e_e808_78969bb0f5f2
  2e4cb8b6_fbe8_043b_a4d2_d8f7f4a943b5["testRecycleDisable()"]
  46ac14b1_2382_5afa_98f3_803182070b38 -->|method| 2e4cb8b6_fbe8_043b_a4d2_d8f7f4a943b5

Relationship Graph

Source Code

common/src/test/java/io/netty/util/RecyclerTest.java lines 50–615

public class RecyclerTest {

    public enum OwnerType {
        NONE,
        PINNED,
        FAST_THREAD_LOCAL,
    }

    public static Stream<Arguments> ownerTypeAndUnguarded() {
        return Arrays.stream(OwnerType.values())
                     .flatMap(owner -> Stream.of(true, false)
                                             .map(unguarded -> Arguments.of(owner, unguarded)));
    }

    public static Stream<Arguments> notNoneOwnerAndUnguarded() {
        return ownerTypeAndUnguarded().filter(args -> args.get()[0] != OwnerType.NONE);
    }

    protected static Recycler<HandledObject> newRecycler(OwnerType ownerType, boolean unguarded,
                                                         int maxCapacityPerThread) {
        return newRecycler(ownerType, unguarded, maxCapacityPerThread, null);
    }

    protected static Recycler<HandledObject> newRecycler(OwnerType ownerType, boolean unguarded,
                                                         int maxCapacityPerThread,
                                                         Consumer<HandledObject> onNewObject) {
        switch (ownerType) {
        case NONE:
            return new Recycler<HandledObject>(maxCapacityPerThread, unguarded) {
                @Override
                protected HandledObject newObject(Handle<HandledObject> handle) {
                    HandledObject newObj = new HandledObject(handle);
                    if (onNewObject != null) {
                        onNewObject.accept(newObj);
                    }
                    return newObj;
                }
            };
        case PINNED:
            return new Recycler<HandledObject>(maxCapacityPerThread >> 1, maxCapacityPerThread, Thread.currentThread(),
                                               unguarded) {
                @Override
                protected HandledObject newObject(
                        Recycler.Handle<HandledObject> handle) {
                    HandledObject newObj = new HandledObject(handle);
                    if (onNewObject != null) {
                        onNewObject.accept(newObj);
                    }
                    return newObj;
                }
            };
        case FAST_THREAD_LOCAL:
            return new Recycler<HandledObject>(maxCapacityPerThread >> 1, maxCapacityPerThread, unguarded) {
                @Override
                protected HandledObject newObject(Handle<HandledObject> handle) {
                    HandledObject newObj = new HandledObject(handle);
                    if (onNewObject != null) {
                        onNewObject.accept(newObj);
                    }
                    return newObj;
                }
            };
        default:
            throw new Error();
        }
    }

    protected static Recycler<HandledObject> newRecycler(boolean unguarded, int maxCapacityPerThread) {
        return new Recycler<HandledObject>(maxCapacityPerThread >> 1, maxCapacityPerThread, unguarded) {
            @Override
            protected HandledObject newObject(
                    Recycler.Handle<HandledObject> handle) {
                return new HandledObject(handle);
            }
        };
    }

    protected static Recycler<HandledObject> newRecycler(int maxCapacityPerThread) {
        return newRecycler(OwnerType.FAST_THREAD_LOCAL, false, maxCapacityPerThread, 8, maxCapacityPerThread >> 1);
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free