use of org.apache.flink.shaded.netty4.io.netty.handler.codec.http.multipart.HttpPostRequestEncoder in project ambry by linkedin.
the class NettyMessageProcessorTest method createEncoder.
// multipartPostTest() helpers.
/**
* Creates a {@link HttpPostRequestEncoder} that encodes the given {@code request} and {@code blobContent}.
* @param request the {@link HttpRequest} containing headers and other metadata about the request.
* @param blobContent the {@link ByteBuffer} that represents the content of the blob.
* @return a {@link HttpPostRequestEncoder} that can encode the {@code request} and {@code blobContent}.
* @throws HttpPostRequestEncoder.ErrorDataEncoderException
* @throws IOException
*/
private HttpPostRequestEncoder createEncoder(HttpRequest request, ByteBuffer blobContent) throws HttpPostRequestEncoder.ErrorDataEncoderException, IOException {
HttpDataFactory httpDataFactory = new DefaultHttpDataFactory(false);
HttpPostRequestEncoder encoder = new HttpPostRequestEncoder(httpDataFactory, request, true);
FileUpload fileUpload = new MemoryFileUpload(RestUtils.MultipartPost.BLOB_PART, RestUtils.MultipartPost.BLOB_PART, "application/octet-stream", "", Charset.forName("UTF-8"), blobContent.remaining());
fileUpload.setContent(Unpooled.wrappedBuffer(blobContent));
encoder.addBodyHttpData(fileUpload);
return encoder;
}
use of org.apache.flink.shaded.netty4.io.netty.handler.codec.http.multipart.HttpPostRequestEncoder in project ambry by linkedin.
the class NettyMessageProcessorTest method multipartPostTest.
/**
* Tests the case where multipart upload is used.
* @throws Exception
*/
@Test
public void multipartPostTest() throws Exception {
Random random = new Random();
ByteBuffer content = ByteBuffer.wrap(TestUtils.getRandomBytes(random.nextInt(128) + 128));
HttpRequest httpRequest = RestTestUtils.createRequest(HttpMethod.POST, "/", null);
httpRequest.headers().set(RestUtils.Headers.SERVICE_ID, "rawBytesPostTest");
HttpPostRequestEncoder encoder = createEncoder(httpRequest, content);
HttpRequest postRequest = encoder.finalizeRequest();
List<ByteBuffer> contents = new ArrayList<ByteBuffer>();
while (!encoder.isEndOfInput()) {
// Sending null for ctx because the encoder is OK with that.
contents.add(encoder.readChunk(PooledByteBufAllocator.DEFAULT).content().nioBuffer());
}
ByteBuffer receivedContent = doPostTest(postRequest, contents);
compareContent(receivedContent, Collections.singletonList(content));
}
Aggregations