private void testDelayed(int blobSize, boolean sendZeroSizedBuffers) throws Exception {
    RequestAndResult requestAndResult = new RequestAndResult(blobSize);
    requestAndResultsList.add(requestAndResult);
    MockReadableStreamChannel putChannel = new MockReadableStreamChannel(blobSize, sendZeroSizedBuffers);
    CompletableFuture<String> future =
        router.putBlob(requestAndResult.putBlobProperties, requestAndResult.putUserMetadata, putChannel,
            requestAndResult.options);
    ByteBuffer src = ByteBuffer.wrap(requestAndResult.putContent);
    pushWithDelay(src, putChannel, blobSize, future);
    future.get(MAX_WAIT_MS, TimeUnit.MILLISECONDS);
    requestAndResult.result = future;
  }
Helper method to put a blob with a channel that does not have all the data at once.
@param blobSize the size of the blob to put.
@param sendZeroSizedBuffers whether this test should involve making the channel send zero-sized buffers between
                            sending data buffers.
ambry-router/src/test/java/com/github/ambry/router/PutManagerTest.java