private RouterConfig createRouterConfig(boolean crossColoEnabled, int successTarget, int parallelism,
      int maxInflightNum, String customPercentiles, boolean excludeTimeout) {
    Properties props = new Properties();
    props.setProperty("router.hostname", "localhost");
    props.setProperty("router.datacenter.name", localDcName);
    props.setProperty("router.get.cross.dc.enabled", Boolean.toString(crossColoEnabled));
    props.setProperty("router.get.success.target", Integer.toString(successTarget));
    props.setProperty("router.get.request.parallelism", Integer.toString(parallelism));
    props.setProperty("router.get.include.non.originating.dc.replicas", "true");
    props.setProperty("router.get.replicas.required", Integer.toString(Integer.MAX_VALUE));
    props.setProperty("router.put.request.parallelism", Integer.toString(parallelism));
    props.setProperty("router.put.success.target", Integer.toString(successTarget));
    props.setProperty("router.latency.tolerance.quantile", Double.toString(QUANTILE));
    props.setProperty("router.operation.tracker.metric.scope", trackerScope.toString());
    props.setProperty("router.operation.tracker.max.inflight.requests", Integer.toString(maxInflightNum));
    props.setProperty("router.operation.tracker.exclude.timeout.enabled", Boolean.toString(excludeTimeout));
    props.setProperty(RouterConfig.ROUTER_ADAPTIVE_OPERATION_TRACKER_WAITING_FOR_RESPONSE, "true");
    if (customPercentiles != null) {
      props.setProperty("router.operation.tracker.custom.percentiles", customPercentiles);
    }
    return new RouterConfig(new VerifiableProperties(props));
  }
Generate an instance of {@link RouterConfig} based on input parameters.
@param crossColoEnabled {@code true} if cross colo needs to be enabled. {@code false} otherwise.
@param successTarget the number of successful responses required for the operation to succeed.
@param parallelism the number of parallel requests that can be in flight.
@param maxInflightNum the maximum number of inflight requests for adaptive tracker.
@param customPercentiles the custom percentiles to be reported. Percentiles are specified in a comma-separated
                         string, i.e "0.94,0.96,0.97".
@param excludeTimeout whether to exclude timed out requests in Histogram.
@return an instance of {@link RouterConfig}
ambry-router/src/test/java/com/github/ambry/router/AdaptiveOperationTrackerTest.java