private RestRequest createRestRequestForPutOperation()
      throws JSONException, UnsupportedEncodingException, URISyntaxException {
    String uri = S3_PREFIX + SLASH + accountName + SLASH + containerName + SLASH + blobName;
    JSONObject request = new JSONObject();
    request.put(MockRestRequest.REST_METHOD_KEY, RestMethod.POST.name());
    request.put(MockRestRequest.URI_KEY, uri);
    return new MockRestRequest(request, null);
  }
Test the S3 Multipart upload
1. Part Upload: Test the PutBlob with skipCompositeChunk option. We don't generate composite chunk for it.
Instead, we return PutBlobMetaInfo which includes the data chunk list.
No matter if router enables "reserved metadata chunk" feature, S3 part upload doesn't reserve metadata chunk.
2. Stitch Blob: It's called in completeMultipartUpload. It stitches all data chunks.
@throws Exception
ambry-router/src/test/java/com/github/ambry/router/S3NonBlockingRouterTest.java