Home / Class/ MqttCodecTest Class — netty Architecture

MqttCodecTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d["MqttCodecTest"]
  3faa4fa4_cb4a_efb1_5da0_851d6a62f392["MqttCodecTest.java"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|defined in| 3faa4fa4_cb4a_efb1_5da0_851d6a62f392
  bb43b4a2_1129_0c9f_c917_14a03c1f59a3["setup()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| bb43b4a2_1129_0c9f_c917_14a03c1f59a3
  3d3dd0bf_4aa7_cb28_160b_9af51d1bbb3e["after()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| 3d3dd0bf_4aa7_cb28_160b_9af51d1bbb3e
  0764af8f_a263_56a2_4ca3_a180a670062e["testConnectMessageForMqtt31()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| 0764af8f_a263_56a2_4ca3_a180a670062e
  ef6d558b_11d8_631d_d362_79c87c75fe91["testConnectMessageForMqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| ef6d558b_11d8_631d_d362_79c87c75fe91
  48895b86_20cf_43a8_d531_141aba09f5a7["testConnectMessageWithNonZeroReservedFlagForMqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| 48895b86_20cf_43a8_d531_141aba09f5a7
  5ec42da1_01ec_5212_5bbc_1e8a97a85ed9["testConnectMessageNonZeroReservedBit0Mqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| 5ec42da1_01ec_5212_5bbc_1e8a97a85ed9
  d87c524d_094f_0adf_a1e4_a4fe8f3b313d["testConnectMessageNonZeroReservedBit1Mqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| d87c524d_094f_0adf_a1e4_a4fe8f3b313d
  0f1f828d_dca6_f95b_2d04_43504c9a6619["testConnectMessageNonZeroReservedBit2Mqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| 0f1f828d_dca6_f95b_2d04_43504c9a6619
  6bdc0d39_92a6_8433_2f4a_8f71204baf46["testConnectMessageNonZeroReservedBit3Mqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| 6bdc0d39_92a6_8433_2f4a_8f71204baf46
  ec3c247d_4afa_5406_fd4d_5976ee7125e7["testConnectMessageForPassword311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| ec3c247d_4afa_5406_fd4d_5976ee7125e7
  b6bc9b48_5702_547c_942d_72ce74efdfd2["testConnectMessageForPassword5()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| b6bc9b48_5702_547c_942d_72ce74efdfd2
  f1625bf6_4645_1cba_fe37_dbe316ac137e["testSubscribeMessageNonZeroReservedBit0Mqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| f1625bf6_4645_1cba_fe37_dbe316ac137e
  bb96ee86_fc13_4a15_821b_81fbe0698aff["testSubscribeMessageZeroReservedBit1Mqtt311()"]
  f4aba1d9_6b30_ec96_9eaa_4c5557b5796d -->|method| bb96ee86_fc13_4a15_821b_81fbe0698aff

Relationship Graph

Source Code

codec-mqtt/src/test/java/io/netty/handler/codec/mqtt/MqttCodecTest.java lines 77–1134

public class MqttCodecTest {

    private static final String CLIENT_ID = "RANDOM_TEST_CLIENT";
    private static final String WILL_TOPIC = "/my_will";
    private static final String WILL_MESSAGE = "gone";
    private static final String USER_NAME = "happy_user";
    private static final String PASSWORD = "123_or_no_pwd";
    private static final byte[] PASSWORD_BYTES = PASSWORD.getBytes(CharsetUtil.UTF_8);

    private static final int KEEP_ALIVE_SECONDS = 600;

    private static final ByteBufAllocator ALLOCATOR = new UnpooledByteBufAllocator(false);

    @Mock
    private final ChannelHandlerContext ctx = mock(ChannelHandlerContext.class);

    @Mock
    private final Channel channel = mock(Channel.class);

    @Mock
    private final Attribute<MqttVersion> versionAttrMock = mock(Attribute.class);

    private final List<Object> out = new ArrayList<>();

    private final MqttDecoder mqttDecoder = new MqttDecoder();

    /**
     * MqttDecoder with an unrealistic max payload size of 1 byte.
     */
    private final MqttDecoder mqttDecoderLimitedMessageSize = new MqttDecoder(1);

    @BeforeEach
    public void setup() {
        MockitoAnnotations.initMocks(this);
        when(ctx.channel()).thenReturn(channel);
        when(ctx.alloc()).thenReturn(ALLOCATOR);
        when(ctx.fireChannelRead(any())).then((Answer<ChannelHandlerContext>) invocation -> {
            out.add(invocation.getArguments()[0]);
            return ctx;
        });
        when(channel.attr(MqttCodecUtil.MQTT_VERSION_KEY)).thenReturn(versionAttrMock);
    }

    @AfterEach
    public void after() {
        for (Object o : out) {
            ReferenceCountUtil.release(o);
        }
        out.clear();
    }

    @Test
    public void testConnectMessageForMqtt31() throws Exception {
        final MqttConnectMessage message = createConnectMessage(MqttVersion.MQTT_3_1);
        ByteBuf byteBuf = MqttEncoder.doEncode(ctx, message);

        mqttDecoder.channelRead(ctx, byteBuf);

        assertEquals(1, out.size());

        final MqttConnectMessage decodedMessage = (MqttConnectMessage) out.get(0);

        validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
        validateConnectVariableHeader(message.variableHeader(), decodedMessage.variableHeader());
        validateConnectPayload(message.payload(), decodedMessage.payload());
    }

    @Test
    public void testConnectMessageForMqtt311() throws Exception {
        final MqttConnectMessage message = createConnectMessage(MqttVersion.MQTT_3_1_1);
        ByteBuf byteBuf = MqttEncoder.doEncode(ctx, message);

        mqttDecoder.channelRead(ctx, byteBuf);

        assertEquals(1, out.size());

        final MqttConnectMessage decodedMessage = (MqttConnectMessage) out.get(0);

        validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
        validateConnectVariableHeader(message.variableHeader(), decodedMessage.variableHeader());
        validateConnectPayload(message.payload(), decodedMessage.payload());

Frequently Asked Questions

What is the MqttCodecTest class?
MqttCodecTest is a class in the netty codebase, defined in codec-mqtt/src/test/java/io/netty/handler/codec/mqtt/MqttCodecTest.java.
Where is MqttCodecTest defined?
MqttCodecTest is defined in codec-mqtt/src/test/java/io/netty/handler/codec/mqtt/MqttCodecTest.java at line 77.

Analyze Your Own Codebase

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

Try Supermodel Free