Home / Function/ testHighNumberChunks() — netty Function Reference

testHighNumberChunks() — netty Function Reference

Architecture documentation for the testHighNumberChunks() function in HttpPostMultipartRequestDecoderBenchmark.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  5057a2d2_70c4_3974_f0da_62ea3d22078b["testHighNumberChunks()"]
  7fc784ac_a898_377e_3ef7_6ba7dd38ad13["HttpPostMultipartRequestDecoderBenchmark"]
  5057a2d2_70c4_3974_f0da_62ea3d22078b -->|defined in| 7fc784ac_a898_377e_3ef7_6ba7dd38ad13
  a6b171c8_43ff_e9fc_f129_f7e27d8f85f7["multipartRequestDecoderHighDisabledLevel()"]
  a6b171c8_43ff_e9fc_f129_f7e27d8f85f7 -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  7065ecd6_baad_0444_a079_b5eb8febb505["multipartRequestDecoderBigDisabledLevel()"]
  7065ecd6_baad_0444_a079_b5eb8febb505 -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  c198523f_b092_cfa3_ee90_803ee354acba["multipartRequestDecoderHighSimpleLevel()"]
  c198523f_b092_cfa3_ee90_803ee354acba -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  b29452a4_17e6_27ff_43db_1a74c09f0728["multipartRequestDecoderBigSimpleLevel()"]
  b29452a4_17e6_27ff_43db_1a74c09f0728 -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  a7988f9b_fccc_9971_8086_9787ad6a3364["multipartRequestDecoderHighAdvancedLevel()"]
  a7988f9b_fccc_9971_8086_9787ad6a3364 -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  0f424d18_28b8_b720_7e84_cccc88e4fc75["multipartRequestDecoderBigAdvancedLevel()"]
  0f424d18_28b8_b720_7e84_cccc88e4fc75 -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  a6aee0ea_edab_4998_9005_a35754057e56["multipartRequestDecoderHighParanoidLevel()"]
  a6aee0ea_edab_4998_9005_a35754057e56 -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  4e7c0c51_39da_68dd_ea70_878549873e6e["multipartRequestDecoderBigParanoidLevel()"]
  4e7c0c51_39da_68dd_ea70_878549873e6e -->|calls| 5057a2d2_70c4_3974_f0da_62ea3d22078b
  style 5057a2d2_70c4_3974_f0da_62ea3d22078b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

microbench/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoderBenchmark.java lines 46–113

    public double testHighNumberChunks(boolean big, boolean noDisk) {
        String BOUNDARY = "01f136d9282f";
        int size = 8 * 1024;
        int chunkNumber = 64;
        StringBuilder stringBuilder = new StringBuilder(size);
        stringBuilder.setLength(size);
        String data = stringBuilder.toString();

        byte[] bodyStartBytes = ("--" + BOUNDARY + "\n" +
                                 "Content-Disposition: form-data; name=\"msg_id\"\n\n15200\n--" +
                                 BOUNDARY +
                                 "\nContent-Disposition: form-data; name=\"msg1\"; filename=\"file1.txt\"\n\n" +
                                 data).getBytes(CharsetUtil.UTF_8);
        byte[] bodyPartBigBytes = data.getBytes(CharsetUtil.UTF_8);
        byte[] intermediaryBytes = ("\n--" + BOUNDARY +
                                    "\nContent-Disposition: form-data; name=\"msg2\"; filename=\"file2.txt\"\n\n" +
                                    data).getBytes(CharsetUtil.UTF_8);
        byte[] finalBigBytes = ("\n" + "--" + BOUNDARY + "--\n").getBytes(CharsetUtil.UTF_8);
        ByteBuf firstBuf = Unpooled.wrappedBuffer(bodyStartBytes);
        ByteBuf finalBuf = Unpooled.wrappedBuffer(finalBigBytes);
        ByteBuf nextBuf;
        if (big) {
            nextBuf = Unpooled.wrappedBuffer(bodyPartBigBytes);
        } else {
            nextBuf = Unpooled.wrappedBuffer(intermediaryBytes);
        }
        DefaultHttpRequest req =
                new DefaultHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.POST, "/up");
        req.headers().add(HttpHeaderNames.CONTENT_TYPE,
                          "multipart/form-data; boundary=" + BOUNDARY);

        long start = System.nanoTime();

        DefaultHttpDataFactory defaultHttpDataFactory =
                new DefaultHttpDataFactory(noDisk? 1024 * 1024 : 16 * 1024);
        HttpPostRequestDecoder decoder =
                new HttpPostRequestDecoder(defaultHttpDataFactory, req);
        firstBuf.retain();
        decoder.offer(new DefaultHttpContent(firstBuf));
        firstBuf.release();
        for (int i = 1; i < chunkNumber; i++) {
            nextBuf.retain();
            decoder.offer(new DefaultHttpContent(nextBuf));
            nextBuf.release();
            nextBuf.readerIndex(0);
        }
        finalBuf.retain();
        decoder.offer(new DefaultLastHttpContent(finalBuf));
        finalBuf.release();
        while (decoder.hasNext()) {
            InterfaceHttpData httpData = decoder.next();
        }
        while (finalBuf.refCnt() > 0) {
            finalBuf.release();
        }
        while (nextBuf.refCnt() > 0) {
            nextBuf.release();
        }
        while (finalBuf.refCnt() > 0) {
            finalBuf.release();
        }
        long stop = System.nanoTime();
        double time = (stop - start) / 1000000.0;
        defaultHttpDataFactory.cleanAllHttpData();
        defaultHttpDataFactory.cleanRequestHttpData(req);
        decoder.destroy();
        return time;
    }

Domain

Subdomains

Frequently Asked Questions

What does testHighNumberChunks() do?
testHighNumberChunks() is a function in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoderBenchmark.java.
Where is testHighNumberChunks() defined?
testHighNumberChunks() is defined in microbench/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoderBenchmark.java at line 46.
What calls testHighNumberChunks()?
testHighNumberChunks() is called by 8 function(s): multipartRequestDecoderBigAdvancedLevel, multipartRequestDecoderBigDisabledLevel, multipartRequestDecoderBigParanoidLevel, multipartRequestDecoderBigSimpleLevel, multipartRequestDecoderHighAdvancedLevel, multipartRequestDecoderHighDisabledLevel, multipartRequestDecoderHighParanoidLevel, multipartRequestDecoderHighSimpleLevel.

Analyze Your Own Codebase

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

Try Supermodel Free