Home / Class/ DefaultHttpDataFactoryTest Class — netty Architecture

DefaultHttpDataFactoryTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856["DefaultHttpDataFactoryTest"]
  34f04fd0_8625_73d7_e149_787dd0b610ad["DefaultHttpDataFactoryTest.java"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|defined in| 34f04fd0_8625_73d7_e149_787dd0b610ad
  5b08d293_4b9d_ae46_9297_348b9c03f45c["assertReq1EqualsReq2()"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|method| 5b08d293_4b9d_ae46_9297_348b9c03f45c
  40f0c6be_11db_d8ed_2645_0e166ea8e41d["setupFactory()"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|method| 40f0c6be_11db_d8ed_2645_0e166ea8e41d
  0ed8f833_99c6_87dc_f2c9_e428a184e278["cleanupFactory()"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|method| 0ed8f833_99c6_87dc_f2c9_e428a184e278
  ce64649f_94df_a011_9a84_f88fa5db9504["customBaseDirAndDeleteOnExit()"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|method| ce64649f_94df_a011_9a84_f88fa5db9504
  243b0f70_4565_86e5_51cb_ed39ca113085["cleanRequestHttpDataShouldIdentifiesRequestsByTheirIdentities()"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|method| 243b0f70_4565_86e5_51cb_ed39ca113085
  73d199c8_2a99_aaa1_67ab_19580ad0cd07["removeHttpDataFromCleanShouldIdentifiesDataByTheirIdentities()"]
  1a20c5f5_1b82_e72a_f3bd_2eeffc52e856 -->|method| 73d199c8_2a99_aaa1_67ab_19580ad0cd07

Relationship Graph

Source Code

codec-http/src/test/java/io/netty/handler/codec/http/multipart/DefaultHttpDataFactoryTest.java lines 36–164

public class DefaultHttpDataFactoryTest {
    // req1 equals req2
    private static final HttpRequest req1 = new DefaultHttpRequest(HTTP_1_1, POST, "/form");
    private static final HttpRequest req2 = new DefaultHttpRequest(HTTP_1_1, POST, "/form");

    private DefaultHttpDataFactory factory;

    @BeforeAll
    public static void assertReq1EqualsReq2() {
        // Before doing anything, assert that the requests are equal
        assertEquals(req1.hashCode(), req2.hashCode());
        assertTrue(req1.equals(req2));
    }

    @BeforeEach
    public void setupFactory() {
        factory = new DefaultHttpDataFactory();
    }

    @AfterEach
    public void cleanupFactory() {
        factory.cleanAllHttpData();
    }

    @Test
    public void customBaseDirAndDeleteOnExit() {
        final DefaultHttpDataFactory defaultHttpDataFactory = new DefaultHttpDataFactory(true);
        final String dir = "target/DefaultHttpDataFactoryTest/customBaseDirAndDeleteOnExit";
        defaultHttpDataFactory.setBaseDir(dir);
        defaultHttpDataFactory.setDeleteOnExit(true);
        final Attribute attr = defaultHttpDataFactory.createAttribute(req1, "attribute1");
        final FileUpload fu = defaultHttpDataFactory.createFileUpload(
                req1, "attribute1", "f.txt", "text/plain", null, null, 0);
        assertEquals(dir, DiskAttribute.class.cast(attr).getBaseDirectory());
        assertEquals(dir, DiskFileUpload.class.cast(fu).getBaseDirectory());
        assertTrue(DiskAttribute.class.cast(attr).deleteOnExit());
        assertTrue(DiskFileUpload.class.cast(fu).deleteOnExit());
    }

    @Test
    public void cleanRequestHttpDataShouldIdentifiesRequestsByTheirIdentities() throws Exception {
        // Create some data belonging to req1 and req2
        Attribute attribute1 = factory.createAttribute(req1, "attribute1", "value1");
        Attribute attribute2 = factory.createAttribute(req2, "attribute2", "value2");
        FileUpload file1 = factory.createFileUpload(
                req1, "file1", "file1.txt",
                DEFAULT_TEXT_CONTENT_TYPE, IDENTITY.toString(), UTF_8, 123
        );
        FileUpload file2 = factory.createFileUpload(
                req2, "file2", "file2.txt",
                DEFAULT_TEXT_CONTENT_TYPE, IDENTITY.toString(), UTF_8, 123
        );
        file1.setContent(Unpooled.copiedBuffer("file1 content", UTF_8));
        file2.setContent(Unpooled.copiedBuffer("file2 content", UTF_8));

        // Assert that they are not deleted
        assertNotNull(attribute1.getByteBuf());
        assertNotNull(attribute2.getByteBuf());
        assertNotNull(file1.getByteBuf());
        assertNotNull(file2.getByteBuf());
        assertEquals(1, attribute1.refCnt());
        assertEquals(1, attribute2.refCnt());
        assertEquals(1, file1.refCnt());
        assertEquals(1, file2.refCnt());

        // Clean up by req1
        factory.cleanRequestHttpData(req1);

        // Assert that data belonging to req1 has been cleaned up
        assertNull(attribute1.getByteBuf());
        assertNull(file1.getByteBuf());
        assertEquals(0, attribute1.refCnt());
        assertEquals(0, file1.refCnt());

        // But not req2
        assertNotNull(attribute2.getByteBuf());
        assertNotNull(file2.getByteBuf());
        assertEquals(1, attribute2.refCnt());
        assertEquals(1, file2.refCnt());
    }

Frequently Asked Questions

What is the DefaultHttpDataFactoryTest class?
DefaultHttpDataFactoryTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/multipart/DefaultHttpDataFactoryTest.java.
Where is DefaultHttpDataFactoryTest defined?
DefaultHttpDataFactoryTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/multipart/DefaultHttpDataFactoryTest.java at line 36.

Analyze Your Own Codebase

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

Try Supermodel Free