public static Properties createVcrProperties(String datacenter, String vcrClusterName, String zkConnectString,
      int clusterMapPort, int vcrSslPort, int vcrHttp2Port, Properties vcrSSLProps,
      String vcrHelixStateModelFactoryClass, boolean enableHttp2Replication) {
    // Start the VCR and CloudBackupManager
    Properties props = new Properties();
    props.setProperty(CloudConfig.CLOUD_IS_VCR, Boolean.TRUE.toString());
    props.setProperty("connectionpool.read.timeout.ms", "15000");
    props.setProperty("server.scheduler.num.of.threads", "1");
    props.setProperty("num.io.threads", "1");
    props.setProperty("clustermap.host.name", "localhost");
    props.setProperty("clustermap.resolve.hostnames", "false");
    props.setProperty("clustermap.cluster.name", "thisIsClusterName");
    props.setProperty("clustermap.datacenter.name", datacenter);
    props.setProperty("vcr.source.datacenters", datacenter);
    props.setProperty("clustermap.port", Integer.toString(clusterMapPort));
    props.setProperty("port", Integer.toString(clusterMapPort));
    props.setProperty("vcr.helix.state.model.factory.class", vcrHelixStateModelFactoryClass);
    props.setProperty("server.security.service.factory", "com.github.ambry.cloud.AmbryVcrSecurityServiceFactory");
    if (vcrSSLProps == null) {
      props.setProperty("clustermap.ssl.enabled.datacenters", "");
    } else {
      props.putAll(vcrSSLProps);
      props.setProperty("clustermap.ssl.enabled.datacenters", datacenter);
      props.setProperty(CloudConfig.VCR_SSL_PORT, Integer.toString(vcrSslPort));
      props.setProperty(CloudConfig.VCR_HTTP2_PORT, Integer.toString(vcrHttp2Port));
    }
    props.setProperty(CloudConfig.VCR_CLUSTER_NAME, vcrClusterName);
    props.setProperty(CloudConfig.VCR_CLUSTER_AGENTS_FACTORY_CLASS, HelixVcrClusterAgentsFactory.class.getName());
    props.setProperty(CloudConfig.VCR_CLUSTER_ZK_CONNECT_STRING, zkConnectString);
    props.setProperty(CloudConfig.KMS_SERVICE_KEY_CONTEXT, TestUtils.getRandomKey(32));
    props.setProperty("kms.default.container.key", TestUtils.getRandomKey(16));
    props.setProperty("replication.token.flush.delay.seconds", "100000");
    props.setProperty("replication.token.flush.interval.seconds", "500000");
    props.setProperty("clustermap.enable.http2.replication", Boolean.toString(enableHttp2Replication));
    return props;
  }
Create a {@link Properties} for VCR.
@param datacenter the datacenter to use.
@param vcrClusterName the vcrClusterName to use.
@param zkConnectString the zkConnectString to use.
@param clusterMapPort the clusterMapPort to use.
@param vcrSslPort the vcrSslPort to use.
@param vcrHttp2Port the vcrHttp2Port to use.
@param vcrSSLProps the SSL Properties to use if exist. Can be {@code null}.
@param vcrHelixStateModelFactoryClass the state model factory class.
@param enableHttp2Replication enable http2 replication or not.
@return the created VCR {@link Properties}.
ambry-vcr/src/test/java/com/github/ambry/vcr/VcrTestUtil.java