Home / Class/ PoolArenaTest Class — netty Architecture

PoolArenaTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb["PoolArenaTest"]
  4811e0d1_d4f3_128e_dd5f_e17069991d02["PoolArenaTest.java"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|defined in| 4811e0d1_d4f3_128e_dd5f_e17069991d02
  53535c7e_c54a_4978_dcf5_82cf40a59525["testNormalizeCapacity()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| 53535c7e_c54a_4978_dcf5_82cf40a59525
  6b688ebe_ae19_0d98_ef5f_190695bd7661["testNormalizeAlignedCapacity()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| 6b688ebe_ae19_0d98_ef5f_190695bd7661
  e9ac076c_11da_4510_0ee9_f135a6d7fac8["testSize2SizeIdx()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| e9ac076c_11da_4510_0ee9_f135a6d7fac8
  f992500a_9f1f_a3a3_8b3d_2cec6fe2cb18["testPages2PageIdx()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| f992500a_9f1f_a3a3_8b3d_2cec6fe2cb18
  02daa357_abb7_27ca_d223_faf6c65901a9["testSizeIdx2size()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| 02daa357_abb7_27ca_d223_faf6c65901a9
  34dea1e1_8f7b_a912_ff84_614c9e9a87af["testPageIdx2size()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| 34dea1e1_8f7b_a912_ff84_614c9e9a87af
  cb7e0c7a_35c8_94aa_5e90_29a3f2ac7c1f["testAllocationCounter()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| cb7e0c7a_35c8_94aa_5e90_29a3f2ac7c1f
  bcde9f30_8a41_83f5_9605_c2b8533fd9eb["testDirectArenaMemoryCopy()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| bcde9f30_8a41_83f5_9605_c2b8533fd9eb
  e2f1cf7b_9cd4_5cac_c4f4_d7df028b810f["unwrapIfNeeded()"]
  a309ea5f_39fd_34ca_b674_7a5f76e6b7eb -->|method| e2f1cf7b_9cd4_5cac_c4f4_d7df028b810f

Relationship Graph

Source Code

buffer/src/test/java/io/netty/buffer/PoolArenaTest.java lines 27–176

public class PoolArenaTest {

    private static final int PAGE_SIZE = 8192;
    private static final int PAGE_SHIFTS = 11;
    //chunkSize = pageSize * (2 ^ pageShifts)
    private static final int CHUNK_SIZE = 16777216;

    @Test
    public void testNormalizeCapacity() {
        SizeClasses sc = new SizeClasses(PAGE_SIZE, PAGE_SHIFTS, CHUNK_SIZE, 0);
        PoolArena<ByteBuffer> arena = new PoolArena.DirectArena(null, sc);
        int[] reqCapacities = {0, 15, 510, 1024, 1023, 1025};
        int[] expectedResult = {16, 16, 512, 1024, 1024, 1280};
        for (int i = 0; i < reqCapacities.length; i ++) {
            assertEquals(expectedResult[i],
                    arena.sizeClass.sizeIdx2size(arena.sizeClass.size2SizeIdx(reqCapacities[i])));
        }
    }

    @Test
    public void testNormalizeAlignedCapacity() {
        SizeClasses sc = new SizeClasses(PAGE_SIZE, PAGE_SHIFTS, CHUNK_SIZE, 64);
        PoolArena<ByteBuffer> arena = new PoolArena.DirectArena(null, sc);
        int[] reqCapacities = {0, 15, 510, 1024, 1023, 1025};
        int[] expectedResult = {64, 64, 512, 1024, 1024, 1280};
        for (int i = 0; i < reqCapacities.length; i ++) {
            assertEquals(expectedResult[i],
                    arena.sizeClass.sizeIdx2size(arena.sizeClass.size2SizeIdx(reqCapacities[i])));
        }
    }

    @Test
    public void testSize2SizeIdx() {
        SizeClasses sc = new SizeClasses(PAGE_SIZE, PAGE_SHIFTS, CHUNK_SIZE, 0);
        PoolArena<ByteBuffer> arena = new PoolArena.DirectArena(null, sc);

        for (int sz = 0; sz <= CHUNK_SIZE; sz++) {
            int sizeIdx = arena.sizeClass.size2SizeIdx(sz);
            assertTrue(sz <= arena.sizeClass.sizeIdx2size(sizeIdx));
            if (sizeIdx > 0) {
                assertTrue(sz > arena.sizeClass.sizeIdx2size(sizeIdx - 1));
            }
        }
    }

    @Test
    public void testPages2PageIdx() {
        int pageShifts = PAGE_SHIFTS;
        SizeClasses sc = new SizeClasses(PAGE_SIZE, PAGE_SHIFTS, CHUNK_SIZE, 0);
        PoolArena<ByteBuffer> arena = new PoolArena.DirectArena(null, sc);

        int maxPages = CHUNK_SIZE >> pageShifts;
        for (int pages = 1; pages <= maxPages; pages++) {
            int pageIdxFloor = arena.sizeClass.pages2pageIdxFloor(pages);
            assertTrue(pages << pageShifts >= arena.sizeClass.pageIdx2size(pageIdxFloor));
            if (pageIdxFloor > 0 && pages < maxPages) {
                assertTrue(pages << pageShifts < arena.sizeClass.pageIdx2size(pageIdxFloor + 1));
            }

            int pageIdxCeiling = arena.sizeClass.pages2pageIdx(pages);
            assertTrue(pages << pageShifts <= arena.sizeClass.pageIdx2size(pageIdxCeiling));
            if (pageIdxCeiling > 0) {
                assertTrue(pages << pageShifts > arena.sizeClass.pageIdx2size(pageIdxCeiling - 1));
            }
        }
    }

    @Test
    public void testSizeIdx2size() {
        SizeClasses sc = new SizeClasses(PAGE_SIZE, PAGE_SHIFTS, CHUNK_SIZE, 0);
        PoolArena<ByteBuffer> arena = new PoolArena.DirectArena(null, sc);
        for (int i = 0; i < arena.sizeClass.nSizes; i++) {
            assertEquals(arena.sizeClass.sizeIdx2sizeCompute(i), arena.sizeClass.sizeIdx2size(i));
        }
    }

    @Test
    public void testPageIdx2size() {
        SizeClasses sc = new SizeClasses(PAGE_SIZE, PAGE_SHIFTS, CHUNK_SIZE, 0);
        PoolArena<ByteBuffer> arena = new PoolArena.DirectArena(null, sc);
        for (int i = 0; i < arena.sizeClass.nPSizes; i++) {

Frequently Asked Questions

What is the PoolArenaTest class?
PoolArenaTest is a class in the netty codebase, defined in buffer/src/test/java/io/netty/buffer/PoolArenaTest.java.
Where is PoolArenaTest defined?
PoolArenaTest is defined in buffer/src/test/java/io/netty/buffer/PoolArenaTest.java at line 27.

Analyze Your Own Codebase

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

Try Supermodel Free