Search in sources :

Example 1 with ReadableByteChannelMock

use of org.apache.hc.core5.http.ReadableByteChannelMock in project httpcomponents-core by apache.

the class TestFrameInOutBuffers method testReadFrameConnectionClosed.

@Test
public void testReadFrameConnectionClosed() throws Exception {
    final FrameInputBuffer inBuffer = new FrameInputBuffer(16 * 1024);
    final ReadableByteChannelMock readableChannel = new ReadableByteChannelMock(new byte[] {});
    Assertions.assertNull(inBuffer.read(readableChannel));
    Assertions.assertThrows(ConnectionClosedException.class, () -> inBuffer.read(readableChannel));
}
Also used : ReadableByteChannelMock(org.apache.hc.core5.http2.ReadableByteChannelMock) Test(org.junit.jupiter.api.Test)

Example 2 with ReadableByteChannelMock

use of org.apache.hc.core5.http.ReadableByteChannelMock in project httpcomponents-core by apache.

the class TestFrameInOutBuffers method testReadFrameMultiple.

@Test
public void testReadFrameMultiple() throws Exception {
    final FrameInputBuffer inBuffer = new FrameInputBuffer(16 * 1024);
    final ReadableByteChannelMock readableChannel = new ReadableByteChannelMock(new byte[] { 0, 0, 10, 0, 8, 0, 0, 0, 8, 4, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 8, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0 });
    final RawFrame frame1 = inBuffer.read(readableChannel);
    Assertions.assertEquals(FrameType.DATA, FrameType.valueOf(frame1.getType()));
    Assertions.assertEquals(8, frame1.getFlags());
    Assertions.assertEquals(8, frame1.getStreamId());
    final ByteBuffer payload1 = frame1.getPayloadContent();
    Assertions.assertNotNull(payload1);
    Assertions.assertEquals(5, payload1.remaining());
    Assertions.assertEquals(0, payload1.get());
    Assertions.assertEquals(1, payload1.get());
    Assertions.assertEquals(2, payload1.get());
    Assertions.assertEquals(3, payload1.get());
    Assertions.assertEquals(4, payload1.get());
    final RawFrame frame2 = inBuffer.read(readableChannel);
    Assertions.assertEquals(FrameType.DATA, FrameType.valueOf(frame2.getType()));
    Assertions.assertEquals(FrameFlag.of(FrameFlag.END_STREAM, FrameFlag.PADDED), frame2.getFlags());
    Assertions.assertEquals(8, frame2.getStreamId());
    final ByteBuffer payload2 = frame2.getPayloadContent();
    Assertions.assertNotNull(payload2);
    Assertions.assertEquals(5, payload2.remaining());
    Assertions.assertEquals(5, payload2.get());
    Assertions.assertEquals(6, payload2.get());
    Assertions.assertEquals(7, payload2.get());
    Assertions.assertEquals(8, payload2.get());
    Assertions.assertEquals(9, payload2.get());
    Assertions.assertEquals(-1, readableChannel.read(ByteBuffer.allocate(1024)));
}
Also used : RawFrame(org.apache.hc.core5.http2.frame.RawFrame) ReadableByteChannelMock(org.apache.hc.core5.http2.ReadableByteChannelMock) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.jupiter.api.Test)

Example 3 with ReadableByteChannelMock

use of org.apache.hc.core5.http.ReadableByteChannelMock in project httpcomponents-core by apache.

the class TestFrameInOutBuffers method testReadFrameMultipleSmallBuffer.

@Test
public void testReadFrameMultipleSmallBuffer() throws Exception {
    final FrameInputBuffer inBuffer = new FrameInputBuffer(new BasicH2TransportMetrics(), 20, 10);
    final ReadableByteChannelMock readableChannel = new ReadableByteChannelMock(new byte[] { 0, 0, 10, 0, 8, 0, 0, 0, 8, 4, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 8, 2, 2, 2, 2, 2, 0, 0, 10, 0, 9, 0, 0, 0, 8, 4, 3, 3, 3, 3, 3, 0, 0, 0, 0 });
    final RawFrame frame1 = inBuffer.read(readableChannel);
    Assertions.assertEquals(FrameType.DATA, FrameType.valueOf(frame1.getType()));
    Assertions.assertEquals(8, frame1.getFlags());
    Assertions.assertEquals(8, frame1.getStreamId());
    final ByteBuffer payload1 = frame1.getPayloadContent();
    Assertions.assertNotNull(payload1);
    Assertions.assertEquals(5, payload1.remaining());
    Assertions.assertEquals(1, payload1.get());
    Assertions.assertEquals(1, payload1.get());
    Assertions.assertEquals(1, payload1.get());
    Assertions.assertEquals(1, payload1.get());
    Assertions.assertEquals(1, payload1.get());
    final RawFrame frame2 = inBuffer.read(readableChannel);
    Assertions.assertEquals(FrameType.DATA, FrameType.valueOf(frame2.getType()));
    Assertions.assertEquals(0, frame2.getFlags());
    Assertions.assertEquals(8, frame2.getStreamId());
    final ByteBuffer payload2 = frame2.getPayloadContent();
    Assertions.assertNotNull(payload2);
    Assertions.assertEquals(5, payload2.remaining());
    Assertions.assertEquals(2, payload2.get());
    Assertions.assertEquals(2, payload2.get());
    Assertions.assertEquals(2, payload2.get());
    Assertions.assertEquals(2, payload2.get());
    Assertions.assertEquals(2, payload2.get());
    final RawFrame frame3 = inBuffer.read(readableChannel);
    Assertions.assertEquals(FrameType.DATA, FrameType.valueOf(frame3.getType()));
    Assertions.assertEquals(FrameFlag.of(FrameFlag.END_STREAM, FrameFlag.PADDED), frame3.getFlags());
    Assertions.assertEquals(8, frame3.getStreamId());
    final ByteBuffer payload3 = frame3.getPayloadContent();
    Assertions.assertNotNull(payload3);
    Assertions.assertEquals(5, payload3.remaining());
    Assertions.assertEquals(3, payload3.get());
    Assertions.assertEquals(3, payload3.get());
    Assertions.assertEquals(3, payload3.get());
    Assertions.assertEquals(3, payload3.get());
    Assertions.assertEquals(3, payload3.get());
    Assertions.assertEquals(-1, readableChannel.read(ByteBuffer.allocate(1024)));
}
Also used : BasicH2TransportMetrics(org.apache.hc.core5.http2.impl.BasicH2TransportMetrics) RawFrame(org.apache.hc.core5.http2.frame.RawFrame) ReadableByteChannelMock(org.apache.hc.core5.http2.ReadableByteChannelMock) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.jupiter.api.Test)

Example 4 with ReadableByteChannelMock

use of org.apache.hc.core5.http.ReadableByteChannelMock in project httpcomponents-core by apache.

the class TestFrameInOutBuffers method testReadFrameCorruptFrame.

@Test
public void testReadFrameCorruptFrame() throws Exception {
    final FrameInputBuffer inBuffer = new FrameInputBuffer(16 * 1024);
    final ReadableByteChannelMock readableChannel = new ReadableByteChannelMock(new byte[] { 0, 0 });
    Assertions.assertThrows(H2CorruptFrameException.class, () -> inBuffer.read(readableChannel));
}
Also used : ReadableByteChannelMock(org.apache.hc.core5.http2.ReadableByteChannelMock) Test(org.junit.jupiter.api.Test)

Example 5 with ReadableByteChannelMock

use of org.apache.hc.core5.http.ReadableByteChannelMock in project httpcomponents-core by apache.

the class TestFrameInOutBuffers method testReadEmptyFrame.

@Test
public void testReadEmptyFrame() throws Exception {
    final FrameInputBuffer inBuffer = new FrameInputBuffer(16 * 1024);
    final ReadableByteChannelMock readableChannel = new ReadableByteChannelMock(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 });
    final RawFrame frame = inBuffer.read(readableChannel);
    Assertions.assertEquals(FrameType.DATA, FrameType.valueOf(frame.getType()));
    Assertions.assertEquals(0, frame.getFlags());
    Assertions.assertEquals(0, frame.getStreamId());
    final ByteBuffer payload = frame.getPayloadContent();
    Assertions.assertNull(payload);
}
Also used : RawFrame(org.apache.hc.core5.http2.frame.RawFrame) ReadableByteChannelMock(org.apache.hc.core5.http2.ReadableByteChannelMock) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.jupiter.api.Test)

Aggregations

Test (org.junit.jupiter.api.Test)54 ReadableByteChannel (java.nio.channels.ReadableByteChannel)46 ReadableByteChannelMock (org.apache.hc.core5.http.ReadableByteChannelMock)46 SessionInputBuffer (org.apache.hc.core5.http.nio.SessionInputBuffer)46 BasicHttpTransportMetrics (org.apache.hc.core5.http.impl.BasicHttpTransportMetrics)44 ByteBuffer (java.nio.ByteBuffer)33 RandomAccessFile (java.io.RandomAccessFile)12 FileChannel (java.nio.channels.FileChannel)12 ReadableByteChannelMock (org.apache.hc.core5.http2.ReadableByteChannelMock)8 RawFrame (org.apache.hc.core5.http2.frame.RawFrame)5 Http1Config (org.apache.hc.core5.http.config.Http1Config)2 MalformedChunkCodingException (org.apache.hc.core5.http.MalformedChunkCodingException)1 WritableByteChannelMock (org.apache.hc.core5.http2.WritableByteChannelMock)1 BasicH2TransportMetrics (org.apache.hc.core5.http2.impl.BasicH2TransportMetrics)1