Search in sources :

Example 11 with Buffer

use of io.servicetalk.buffer.api.Buffer in project servicetalk by apple.

the class VarIntLengthStreamingSerializerTest method decodeThrowsIfMoreThanMaxBytes.

@Test
void decodeThrowsIfMoreThanMaxBytes() {
    Buffer buffer = DEFAULT_ALLOCATOR.newBuffer(MAX_LENGTH_BYTES);
    byte nonFinalByte = (byte) 0x80;
    for (int i = 0; i <= MAX_LENGTH_BYTES; ++i) {
        buffer.writeByte(nonFinalByte);
    }
    assertThrows(SerializationException.class, () -> getVarInt(buffer));
}
Also used : Buffer(io.servicetalk.buffer.api.Buffer) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 12 with Buffer

use of io.servicetalk.buffer.api.Buffer in project servicetalk by apple.

the class HttpRequestEncoderTest method contentLengthNoTrailersHeaderWhiteSpaceEncodedWithValidationOff.

@Test
void contentLengthNoTrailersHeaderWhiteSpaceEncodedWithValidationOff() {
    EmbeddedChannel channel = newEmbeddedChannel();
    byte[] content = new byte[128];
    ThreadLocalRandom.current().nextBytes(content);
    Buffer buffer = allocator.wrap(content);
    HttpRequestMetaData request = newRequestMetaData(HTTP_1_1, GET, "/some/path?foo=bar&baz=yyy", new DefaultHttpHeadersFactory(false, false, false).newHeaders());
    request.headers().add(" " + CONNECTION + " ", " " + KEEP_ALIVE).add("  " + USER_AGENT + "   ", "    unit-test   ").add(CONTENT_LENGTH, valueOf(content.length));
    channel.writeOutbound(request);
    channel.writeOutbound(buffer.duplicate());
    ByteBuf byteBuf = channel.readOutbound();
    String actualMetaData = byteBuf.toString(US_ASCII);
    byteBuf.release();
    assertTrue(actualMetaData.contains("GET /some/path?foo=bar&baz=yyy HTTP/1.1" + "\r\n"), () -> "unexpected metadata: " + actualMetaData);
    assertTrue(actualMetaData.contains(" " + CONNECTION + " :  " + KEEP_ALIVE + "\r\n"), () -> "unexpected metadata: " + actualMetaData);
    assertTrue(actualMetaData.contains("  " + USER_AGENT + "   :     unit-test   " + "\r\n"), () -> "unexpected metadata: " + actualMetaData);
    assertTrue(actualMetaData.contains(CONTENT_LENGTH + ": " + buffer.readableBytes() + "\r\n"), () -> "unexpected metadata: " + actualMetaData);
    assertTrue(actualMetaData.endsWith("\r\n" + "\r\n"), () -> "unexpected metadata: " + actualMetaData);
    byteBuf = channel.readOutbound();
    assertEquals(buffer.toNioBuffer(), byteBuf.nioBuffer());
    byteBuf.release();
    assertFalse(channel.finishAndReleaseAll());
}
Also used : Buffer(io.servicetalk.buffer.api.Buffer) HttpRequestMetaData(io.servicetalk.http.api.HttpRequestMetaData) EmbeddedChannel(io.netty.channel.embedded.EmbeddedChannel) Integer.toHexString(java.lang.Integer.toHexString) ByteBuf(io.netty.buffer.ByteBuf) DefaultHttpHeadersFactory(io.servicetalk.http.api.DefaultHttpHeadersFactory) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 13 with Buffer

use of io.servicetalk.buffer.api.Buffer in project servicetalk by apple.

the class HttpRequestEncoderTest method chunkedNoTrailers.

@Test
void chunkedNoTrailers() {
    EmbeddedChannel channel = newEmbeddedChannel();
    byte[] content = new byte[128];
    ThreadLocalRandom.current().nextBytes(content);
    Buffer buffer = allocator.wrap(content);
    HttpRequestMetaData request = newRequestMetaData(HTTP_1_1, GET, "/some/path?foo=bar&baz=yyy", INSTANCE.newHeaders());
    request.headers().add(CONNECTION, KEEP_ALIVE).add(USER_AGENT, "unit-test").add(TRANSFER_ENCODING, CHUNKED);
    channel.writeOutbound(request);
    channel.writeOutbound(buffer.duplicate());
    channel.writeOutbound(EmptyHttpHeaders.INSTANCE);
    verifyHttpRequest(channel, buffer, TransferEncoding.Chunked, false);
    assertFalse(channel.finishAndReleaseAll());
}
Also used : Buffer(io.servicetalk.buffer.api.Buffer) HttpRequestMetaData(io.servicetalk.http.api.HttpRequestMetaData) EmbeddedChannel(io.netty.channel.embedded.EmbeddedChannel) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 14 with Buffer

use of io.servicetalk.buffer.api.Buffer in project servicetalk by apple.

the class HttpRequestEncoderTest method variableNoTrailers.

@ParameterizedTest
@ValueSource(booleans = { true, false })
void variableNoTrailers(boolean get) {
    EmbeddedChannel channel = newEmbeddedChannel();
    byte[] content = new byte[128];
    ThreadLocalRandom.current().nextBytes(content);
    Buffer buffer = allocator.wrap(content);
    HttpRequestMetaData request = newRequestMetaData(HTTP_1_1, get ? GET : POST, "/some/path?foo=bar&baz=yyy", INSTANCE.newHeaders());
    request.headers().add(CONNECTION, KEEP_ALIVE).add(USER_AGENT, "unit-test");
    channel.writeOutbound(request);
    if (get) {
        assertThrows(IOException.class, () -> channel.writeOutbound(buffer.duplicate()));
        assertTrue(channel.finishAndReleaseAll());
    } else {
        channel.writeOutbound(buffer.duplicate());
        channel.writeOutbound(EmptyHttpHeaders.INSTANCE);
        verifyHttpRequest(channel, buffer, TransferEncoding.Variable, false, POST);
        assertFalse(channel.finishAndReleaseAll());
    }
}
Also used : Buffer(io.servicetalk.buffer.api.Buffer) HttpRequestMetaData(io.servicetalk.http.api.HttpRequestMetaData) EmbeddedChannel(io.netty.channel.embedded.EmbeddedChannel) ValueSource(org.junit.jupiter.params.provider.ValueSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 15 with Buffer

use of io.servicetalk.buffer.api.Buffer in project servicetalk by apple.

the class HttpRequestEncoderTest method contentLengthNoTrailers.

@Test
void contentLengthNoTrailers() {
    EmbeddedChannel channel = newEmbeddedChannel();
    byte[] content = new byte[128];
    ThreadLocalRandom.current().nextBytes(content);
    Buffer buffer = allocator.wrap(content);
    HttpRequestMetaData request = newRequestMetaData(HTTP_1_1, GET, "/some/path?foo=bar&baz=yyy", INSTANCE.newHeaders());
    request.headers().add(CONNECTION, KEEP_ALIVE).add(USER_AGENT, "unit-test").add(CONTENT_LENGTH, valueOf(content.length));
    channel.writeOutbound(request);
    channel.writeOutbound(buffer.duplicate());
    channel.writeOutbound(EmptyHttpHeaders.INSTANCE);
    verifyHttpRequest(channel, buffer, TransferEncoding.ContentLength, false);
    consumeEmptyBufferFromTrailers(channel);
    assertFalse(channel.finishAndReleaseAll());
}
Also used : Buffer(io.servicetalk.buffer.api.Buffer) HttpRequestMetaData(io.servicetalk.http.api.HttpRequestMetaData) EmbeddedChannel(io.netty.channel.embedded.EmbeddedChannel) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

Buffer (io.servicetalk.buffer.api.Buffer)246 Test (org.junit.jupiter.api.Test)121 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)83 MethodSource (org.junit.jupiter.params.provider.MethodSource)56 StreamingHttpResponse (io.servicetalk.http.api.StreamingHttpResponse)39 StreamingHttpRequest (io.servicetalk.http.api.StreamingHttpRequest)30 StreamingHttpClient (io.servicetalk.http.api.StreamingHttpClient)29 HttpHeaders (io.servicetalk.http.api.HttpHeaders)26 Nullable (javax.annotation.Nullable)24 EmbeddedChannel (io.netty.channel.embedded.EmbeddedChannel)23 List (java.util.List)23 Publisher (io.servicetalk.concurrent.api.Publisher)22 CountDownLatch (java.util.concurrent.CountDownLatch)21 AtomicReference (java.util.concurrent.atomic.AtomicReference)20 Single (io.servicetalk.concurrent.api.Single)19 CompositeBuffer (io.servicetalk.buffer.api.CompositeBuffer)18 InputStream (java.io.InputStream)18 ArrayList (java.util.ArrayList)18 BufferAllocator (io.servicetalk.buffer.api.BufferAllocator)16 MatcherAssert.assertThat (org.hamcrest.MatcherAssert.assertThat)16