Search in sources :

Example 11 with BytesWriter

use of test.r2.integ.helper.BytesWriter in project rest.li by linkedin.

the class TestStreamingTimeout method testStreamSuccessWithoutStreamingTimeout.

@Test
public void testStreamSuccessWithoutStreamingTimeout() throws Exception {
    final long totalBytes = TINY_BYTES_NUM;
    final EntityStream entityStream = EntityStreams.newEntityStream(new BytesWriter(totalBytes, BYTE));
    final StreamRequestBuilder builder = new StreamRequestBuilder(_clientProvider.createHttpURI(_port, NON_RATE_LIMITED_URI));
    final StreamRequest request = builder.setMethod("POST").build(entityStream);
    final AtomicInteger status = new AtomicInteger(-1);
    final CountDownLatch latch = new CountDownLatch(1);
    final Callback<StreamResponse> callback = expectSuccessCallback(latch, status);
    _client.streamRequest(request, callback);
    latch.await(HTTP_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);
    Assert.assertEquals(status.get(), RestStatus.OK);
    final BytesReader reader = _requestHandler.getReader();
    Assert.assertNotNull(reader);
    Assert.assertEquals(totalBytes, reader.getTotalBytes());
    Assert.assertTrue(reader.allBytesCorrect());
}
Also used : EntityStream(com.linkedin.r2.message.stream.entitystream.EntityStream) BytesWriter(test.r2.integ.helper.BytesWriter) BytesReader(test.r2.integ.helper.BytesReader) TimedBytesReader(test.r2.integ.helper.TimedBytesReader) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) StreamResponse(com.linkedin.r2.message.stream.StreamResponse) CountDownLatch(java.util.concurrent.CountDownLatch) StreamRequestBuilder(com.linkedin.r2.message.stream.StreamRequestBuilder) StreamRequest(com.linkedin.r2.message.stream.StreamRequest) Test(org.testng.annotations.Test) AbstractServiceTest(test.r2.integ.clientserver.providers.AbstractServiceTest)

Example 12 with BytesWriter

use of test.r2.integ.helper.BytesWriter in project rest.li by linkedin.

the class TestJetty404 method testJetty404.

// make sure jetty's default behavior will read all the request bytes in case of 404
// Known to be flaky in CI
@Test(retryAnalyzer = SingleRetry.class)
public void testJetty404() throws Exception {
    BytesWriter writer = new BytesWriter(200 * 1024, (byte) 100);
    final AtomicReference<Throwable> exRef = new AtomicReference<>();
    final CountDownLatch latch = new CountDownLatch(1);
    _client.streamRequest(new StreamRequestBuilder(Bootstrap.createHttpURI(PORT, URI.create("/wrong-path"))).build(EntityStreams.newEntityStream(writer)), new Callback<StreamResponse>() {

        @Override
        public void onError(Throwable e) {
            exRef.set(e);
            latch.countDown();
        }

        @Override
        public void onSuccess(StreamResponse result) {
            latch.countDown();
        }
    });
    latch.await(5000, TimeUnit.MILLISECONDS);
    Assert.assertTrue(writer.isDone());
    Throwable ex = exRef.get();
    Assert.assertTrue(ex instanceof StreamException, "Expected StreamException but found: " + ex);
    StreamResponse response = ((StreamException) ex).getResponse();
    Assert.assertEquals(response.getStatus(), RestStatus.NOT_FOUND);
    response.getEntityStream().setReader(new DrainReader());
}
Also used : BytesWriter(test.r2.integ.helper.BytesWriter) StreamResponse(com.linkedin.r2.message.stream.StreamResponse) AtomicReference(java.util.concurrent.atomic.AtomicReference) CountDownLatch(java.util.concurrent.CountDownLatch) StreamRequestBuilder(com.linkedin.r2.message.stream.StreamRequestBuilder) DrainReader(com.linkedin.r2.message.stream.entitystream.DrainReader) StreamException(com.linkedin.r2.message.stream.StreamException) Test(org.testng.annotations.Test)

Aggregations

StreamRequestBuilder (com.linkedin.r2.message.stream.StreamRequestBuilder)12 StreamResponse (com.linkedin.r2.message.stream.StreamResponse)12 BytesWriter (test.r2.integ.helper.BytesWriter)12 StreamRequest (com.linkedin.r2.message.stream.StreamRequest)11 Test (org.testng.annotations.Test)11 AbstractServiceTest (test.r2.integ.clientserver.providers.AbstractServiceTest)10 CountDownLatch (java.util.concurrent.CountDownLatch)9 EntityStream (com.linkedin.r2.message.stream.entitystream.EntityStream)7 AtomicReference (java.util.concurrent.atomic.AtomicReference)6 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)4 BytesReader (test.r2.integ.helper.BytesReader)4 TimedBytesWriter (test.r2.integ.helper.TimedBytesWriter)4 FutureCallback (com.linkedin.common.callback.FutureCallback)3 TimeoutException (java.util.concurrent.TimeoutException)3 TimedBytesReader (test.r2.integ.helper.TimedBytesReader)3 None (com.linkedin.common.util.None)2 Callback (com.linkedin.common.callback.Callback)1 RequestContext (com.linkedin.r2.message.RequestContext)1 RestException (com.linkedin.r2.message.rest.RestException)1 StreamException (com.linkedin.r2.message.stream.StreamException)1