private void testGetOnServerNode(Map<BlobId, Integer> blobIdToSizeMap, DataNodeId node) throws IOException {
    ConnectedChannel channel =
        ServerTestUtil.getBlockingChannelBasedOnPortType(node.getPortToConnectTo(), node.getHostname(), null, null);
    channel.connect();

    AtomicInteger correlationIdGenerator = new AtomicInteger(0);
    List<BlobId> allBlobIds = Stream.concat(cloudBlobIds.stream(), serverBlobIds.stream()).collect(Collectors.toList());
    List<PartitionRequestInfo> partitionRequestInfoList =
        Collections.singletonList(new PartitionRequestInfo(partitionId, allBlobIds));
    GetRequest getRequest = new GetRequest(correlationIdGenerator.incrementAndGet(),
        GetRequest.Replication_Client_Id_Prefix + node.getHostname(), MessageFormatFlags.All, partitionRequestInfoList,
        new ReplicationConfig(new VerifiableProperties(recoveryProperties)).replicationIncludeAll
            ? GetOption.Include_All : GetOption.None);

    channel.send(getRequest);
    GetResponse getResponse =
        GetResponse.readFrom(channel.receive().getInputStream(), recoveryCluster.getClusterMap());

    for (PartitionResponseInfo partitionResponseInfo : getResponse.getPartitionResponseInfoList()) {
      Assert.assertEquals("Error in getting the recovered blobs", ServerErrorCode.NoError,
          partitionResponseInfo.getErrorCode());
      int cloudStoreSizeDifference;
      if (BlobPropertiesSerDe.CURRENT_VERSION <= BlobPropertiesSerDe.VERSION_4) {
        // old value is 272. Adding 9 Bytes due to the two fields added 4 + 4 Blob Property BYTE, +1 for compression.
        // the reason we have to add this, is because these fields are present in the storage logs, but not present in cloud metadata.
        cloudStoreSizeDifference = 9;
      } else {
        // old value is 272. Adding 13 Bytes due to the two fields added 4 + 4 Blob Property BYTE, 4 bytes for reserved metadata +1 for compression.
        // the reason we have to add this, is because these fields are present in the storage logs, but not present in cloud metadata.
        cloudStoreSizeDifference = 13;
      }
      for (MessageInfo messageInfo : partitionResponseInfo.getMessageInfoList()) {
        assertEquals(blobIdToSizeMap.get(messageInfo.getStoreKey()) + 272 + cloudStoreSizeDifference, messageInfo.getSize());
      }
    }
  }
Do a get on recovery server node to test that all the blobids that were uploaded to vcr node have been recovered on
recovery node.
@param blobIdToSizeMap {@link Map} of blobid to size uploaded to vcr node.
@param node recovery server node
@throws IOException on {@link IOException}
ambry-vcr/src/test/java/com/github/ambry/vcr/CloudAndStoreReplicationTest.java