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));
}
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());
}
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());
}
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());
}
}
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());
}
Aggregations