public static MockDataNodeId createDataNode(ArrayList<Port> ports, String datacenter, int numMountPointsPerNode)
      throws IOException {
    File f = null;
    int port = getPlainTextPort(ports);
    try {
      List<String> mountPaths = new ArrayList<>(numMountPointsPerNode);
      f = File.createTempFile("ambry", ".tmp");
      for (int i = 0; i < numMountPointsPerNode; i++) {
        File mountFile = new File(f.getParent(), "mountpathfile" + port + i);
        deleteFileOrDirectory(mountFile);
        mountFile.mkdir();
        mountPaths.add(mountFile.getAbsolutePath());
      }
      return new MockDataNodeId(ports, mountPaths, datacenter);
    } finally {
      if (f != null) {
        f.delete();
      }
    }
  }
Create a cluster map for recovery from the given {@code vcrNode} and {@code recoveryNode}.
The cluster is created such that {@code recoveryNode} has {@code vcrNode}'s replicas as peer replicas.
@param recoveryNode The data node.
@param vcrNode The vcr node.
@param dcName Name of the datacenter.
@return {@link MockClusterMap} object.
ambry-test-utils/src/main/java/com/github/ambry/clustermap/MockClusterMap.java