private void testPutRequest(MockClusterMap clusterMap, int correlationId, String clientId, BlobId blobId,
      BlobProperties blobProperties, byte[] userMetadata, BlobType blobType, byte[] blob, int blobSize, byte[] blobKey)
      throws IOException {
    doPutRequestTest((short) -1, clusterMap, correlationId, clientId, blobId, blobProperties,
        userMetadata, blobType, blob, blobSize, null, null);
    doPutRequestTest((short) -1, clusterMap, correlationId, clientId, blobId, blobProperties,
        userMetadata, blobType, blob, blobSize, new byte[0], null);
    doPutRequestTest((short) -1, clusterMap, correlationId, clientId, blobId, blobProperties,
        userMetadata, blobType, blob, blobSize, blobKey, blobKey);
  }
Tests serialization and deserialization of Put requests in different versions.
@param clusterMap the cluster map to use.
@param correlationId the correlation id associated with the request.
@param clientId the client id associated with the request.
@param blobId the blob id in the request.
@param blobProperties the {@link BlobProperties} associated with the request.
@param userMetadata the user metadata associated with the request.
@param blobType the {@link BlobType} associated with the request.
@param blob the blob content.
@param blobSize the size of the blob.
@param blobKey the encryption key of the blob.
ambry-protocol/src/test/java/com/github/ambry/protocol/RequestResponseTest.java