Home / Class/ HaProxyMessageEncoderTest Class — netty Architecture

HaProxyMessageEncoderTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  4545ac9d_2f62_4ac7_c80f_5975d8175456["HaProxyMessageEncoderTest"]
  dae55d16_8185_8f55_227e_85fb8d3d81c0["HaProxyMessageEncoderTest.java"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|defined in| dae55d16_8185_8f55_227e_85fb8d3d81c0
  a3e4db28_ab9b_f212_c8f5_0e72cea7508e["testIPV4EncodeProxyV1()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| a3e4db28_ab9b_f212_c8f5_0e72cea7508e
  13bc4305_c4d7_2243_f49e_7ca6ff1a7ff0["testIPV6EncodeProxyV1()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 13bc4305_c4d7_2243_f49e_7ca6ff1a7ff0
  40ef78a4_8b40_35ed_98ca_e66f35f264ee["testIPv4EncodeProxyV2()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 40ef78a4_8b40_35ed_98ca_e66f35f264ee
  9e250540_5a69_8689_2859_e76cdc085f89["testIPv6EncodeProxyV2()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 9e250540_5a69_8689_2859_e76cdc085f89
  41c4d3cb_79a0_34c3_0619_12844744d663["testUnixEncodeProxyV2()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 41c4d3cb_79a0_34c3_0619_12844744d663
  09712c06_4bf8_0520_4bbd_891fba66c7c4["testTLVEncodeProxy()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 09712c06_4bf8_0520_4bbd_891fba66c7c4
  d088e373_9657_80e7_340b_9eab3347e15a["testSslTLVEncodeProxy()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| d088e373_9657_80e7_340b_9eab3347e15a
  ed29d1ab_c11b_57b9_021c_7333f4f6f145["testEncodeLocalProxyV2()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| ed29d1ab_c11b_57b9_021c_7333f4f6f145
  3389089c_7f2c_ea58_0a35_dcbda02e248f["testInvalidIpV4Address()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 3389089c_7f2c_ea58_0a35_dcbda02e248f
  db4686db_bb40_4d5c_1cc7_3a68ace86c73["testInvalidIpV6Address()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| db4686db_bb40_4d5c_1cc7_3a68ace86c73
  bebacdc6_0f53_7b99_feed_2f0639a4d731["testInvalidUnixAddress()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| bebacdc6_0f53_7b99_feed_2f0639a4d731
  d2ace9a9_a175_2788_4c29_e5c9da2ceb97["testNullUnixAddress()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| d2ace9a9_a175_2788_4c29_e5c9da2ceb97
  27ee0d7c_c098_fe80_dfba_a5f29eb2f3c1["testLongUnixAddress()"]
  4545ac9d_2f62_4ac7_c80f_5975d8175456 -->|method| 27ee0d7c_c098_fe80_dfba_a5f29eb2f3c1

Relationship Graph

Source Code

codec-haproxy/src/test/java/io/netty/handler/codec/haproxy/HaProxyMessageEncoderTest.java lines 41–439

public class HaProxyMessageEncoderTest {

    private static final int V2_HEADER_BYTES_LENGTH = 16;
    private static final int IPv4_ADDRESS_BYTES_LENGTH = 12;
    private static final int IPv6_ADDRESS_BYTES_LENGTH = 36;

    @Test
    public void testIPV4EncodeProxyV1() {
        EmbeddedChannel ch = new EmbeddedChannel(INSTANCE);

        HAProxyMessage message = new HAProxyMessage(
                HAProxyProtocolVersion.V1, HAProxyCommand.PROXY, HAProxyProxiedProtocol.TCP4,
                "192.168.0.1", "192.168.0.11", 56324, 443);
        assertTrue(ch.writeOutbound(message));

        ByteBuf byteBuf = ch.readOutbound();

        assertEquals("PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n",
                     byteBuf.toString(CharsetUtil.US_ASCII));

        byteBuf.release();
        assertFalse(ch.finish());
    }

    @Test
    public void testIPV6EncodeProxyV1() {
        EmbeddedChannel ch = new EmbeddedChannel(INSTANCE);

        HAProxyMessage message = new HAProxyMessage(
                HAProxyProtocolVersion.V1, HAProxyCommand.PROXY, HAProxyProxiedProtocol.TCP6,
                "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "1050:0:0:0:5:600:300c:326b", 56324, 443);
        assertTrue(ch.writeOutbound(message));

        ByteBuf byteBuf = ch.readOutbound();

        assertEquals("PROXY TCP6 2001:0db8:85a3:0000:0000:8a2e:0370:7334 1050:0:0:0:5:600:300c:326b 56324 443\r\n",
                     byteBuf.toString(CharsetUtil.US_ASCII));

        byteBuf.release();
        assertFalse(ch.finish());
    }

    @Test
    public void testIPv4EncodeProxyV2() {
        EmbeddedChannel ch = new EmbeddedChannel(INSTANCE);

        HAProxyMessage message = new HAProxyMessage(
                HAProxyProtocolVersion.V2, HAProxyCommand.PROXY, HAProxyProxiedProtocol.TCP4,
                "192.168.0.1", "192.168.0.11", 56324, 443);
        assertTrue(ch.writeOutbound(message));

        ByteBuf byteBuf = ch.readOutbound();

        // header
        byte[] headerBytes = ByteBufUtil.getBytes(byteBuf, 0, 12);
        assertArrayEquals(BINARY_PREFIX, headerBytes);

        // command
        byte commandByte = byteBuf.getByte(12);
        assertEquals(0x02, (commandByte & 0xf0) >> 4);
        assertEquals(0x01, commandByte & 0x0f);

        // transport protocol, address family
        byte transportByte = byteBuf.getByte(13);
        assertEquals(0x01, (transportByte & 0xf0) >> 4);
        assertEquals(0x01, transportByte & 0x0f);

        // source address length
        int sourceAddrLength = byteBuf.getUnsignedShort(14);
        assertEquals(12, sourceAddrLength);

        // source address
        byte[] sourceAddr = ByteBufUtil.getBytes(byteBuf, 16, 4);
        assertArrayEquals(new byte[] { (byte) 0xc0, (byte) 0xa8, 0x00, 0x01 }, sourceAddr);

        // destination address
        byte[] destAddr = ByteBufUtil.getBytes(byteBuf, 20, 4);
        assertArrayEquals(new byte[] { (byte) 0xc0, (byte) 0xa8, 0x00, 0x0b }, destAddr);

        // source port
        int sourcePort = byteBuf.getUnsignedShort(24);

Frequently Asked Questions

What is the HaProxyMessageEncoderTest class?
HaProxyMessageEncoderTest is a class in the netty codebase, defined in codec-haproxy/src/test/java/io/netty/handler/codec/haproxy/HaProxyMessageEncoderTest.java.
Where is HaProxyMessageEncoderTest defined?
HaProxyMessageEncoderTest is defined in codec-haproxy/src/test/java/io/netty/handler/codec/haproxy/HaProxyMessageEncoderTest.java at line 41.

Analyze Your Own Codebase

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

Try Supermodel Free