Search in sources :

Example 1 with FlowControlled

use of io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled in project netty by netty.

the class DefaultHttp2ConnectionEncoderTest method dataFramesDontMergeWithHeaders.

@Test
public void dataFramesDontMergeWithHeaders() throws Exception {
    createStream(STREAM_ID, false);
    final ByteBuf data = dummyData().retain();
    encoder.writeData(ctx, STREAM_ID, data, 0, false, newPromise());
    when(remoteFlow.hasFlowControlled(any(Http2Stream.class))).thenReturn(true);
    encoder.writeHeaders(ctx, STREAM_ID, EmptyHttp2Headers.INSTANCE, 0, true, newPromise());
    List<FlowControlled> capturedWrites = payloadCaptor.getAllValues();
    assertFalse(capturedWrites.get(0).merge(ctx, capturedWrites.get(1)));
}
Also used : ByteBuf(io.netty.buffer.ByteBuf) FlowControlled(io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled) Test(org.junit.Test)

Example 2 with FlowControlled

use of io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled in project netty by netty.

the class DefaultHttp2ConnectionEncoderTest method dataFramesShouldMergeUseVoidPromise.

@Test
public void dataFramesShouldMergeUseVoidPromise() throws Exception {
    createStream(STREAM_ID, false);
    final ByteBuf data = dummyData().retain();
    ChannelPromise promise1 = newVoidPromise(channel);
    encoder.writeData(ctx, STREAM_ID, data, 0, true, promise1);
    ChannelPromise promise2 = newVoidPromise(channel);
    encoder.writeData(ctx, STREAM_ID, data, 0, true, promise2);
    // Now merge the two payloads.
    List<FlowControlled> capturedWrites = payloadCaptor.getAllValues();
    FlowControlled mergedPayload = capturedWrites.get(0);
    mergedPayload.merge(ctx, capturedWrites.get(1));
    assertEquals(16, mergedPayload.size());
    assertFalse(promise1.isSuccess());
    assertFalse(promise2.isSuccess());
    // Write the merged payloads and verify it was written correctly.
    mergedPayload.write(ctx, 16);
    assertEquals(0, mergedPayload.size());
    assertEquals("abcdefghabcdefgh", writtenData.get(0));
    assertEquals(0, data.refCnt());
    // The promises won't be set since there are no listeners.
    assertFalse(promise1.isSuccess());
    assertFalse(promise2.isSuccess());
}
Also used : ChannelPromise(io.netty.channel.ChannelPromise) DefaultChannelPromise(io.netty.channel.DefaultChannelPromise) ByteBuf(io.netty.buffer.ByteBuf) FlowControlled(io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled) Test(org.junit.Test)

Example 3 with FlowControlled

use of io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled in project netty by netty.

the class DefaultHttp2ConnectionEncoderTest method dataFramesShouldMerge.

@Test
public void dataFramesShouldMerge() throws Exception {
    createStream(STREAM_ID, false);
    final ByteBuf data = dummyData().retain();
    ChannelPromise promise1 = newPromise();
    encoder.writeData(ctx, STREAM_ID, data, 0, true, promise1);
    ChannelPromise promise2 = newPromise();
    encoder.writeData(ctx, STREAM_ID, data, 0, true, promise2);
    // Now merge the two payloads.
    List<FlowControlled> capturedWrites = payloadCaptor.getAllValues();
    FlowControlled mergedPayload = capturedWrites.get(0);
    mergedPayload.merge(ctx, capturedWrites.get(1));
    assertEquals(16, mergedPayload.size());
    assertFalse(promise1.isDone());
    assertFalse(promise2.isDone());
    // Write the merged payloads and verify it was written correctly.
    mergedPayload.write(ctx, 16);
    assertEquals(0, mergedPayload.size());
    assertEquals("abcdefghabcdefgh", writtenData.get(0));
    assertEquals(0, data.refCnt());
    assertTrue(promise1.isSuccess());
    assertTrue(promise2.isSuccess());
}
Also used : ChannelPromise(io.netty.channel.ChannelPromise) DefaultChannelPromise(io.netty.channel.DefaultChannelPromise) ByteBuf(io.netty.buffer.ByteBuf) FlowControlled(io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled) Test(org.junit.Test)

Aggregations

ByteBuf (io.netty.buffer.ByteBuf)3 FlowControlled (io.netty.handler.codec.http2.Http2RemoteFlowController.FlowControlled)3 Test (org.junit.Test)3 ChannelPromise (io.netty.channel.ChannelPromise)2 DefaultChannelPromise (io.netty.channel.DefaultChannelPromise)2