private void doTrackerUpdateTest(boolean succeedRequests) throws InterruptedException {
    long timeIncrement = 10;
    OperationTracker ot =
        getOperationTracker(createRouterConfig(true, REPLICA_COUNT, REPLICA_COUNT, 6, null, true), mockPartition);
    // 3-0-0-0; 3-0-0-0
    sendRequests(ot, REPLICA_COUNT);
    // 0-3-0-0; 0-3-0-0
    Double[] localColoExpectedAverages =
        {(double) timeIncrement, (double) timeIncrement + timeIncrement / 2, 2 * (double) timeIncrement};
    verifyHistogramRecording(ot, succeedRequests, timeIncrement, localColoExpectedAverages, localColoTracker);
    Double[] crossColoExpectedAverages =
        {4 * (double) timeIncrement, 4 * (double) timeIncrement + timeIncrement / 2, 5 * (double) timeIncrement};
    verifyHistogramRecording(ot, succeedRequests, timeIncrement, crossColoExpectedAverages, crossColoTracker);
    assertEquals("Operation success state is unexpected", succeedRequests, ot.hasSucceeded());
    assertTrue("Operation should be done", ot.isDone());
  }
Tests that the {@link Histogram} instances used by {@link AdaptiveOperationTracker} are updated correctly.
@param succeedRequests {@code true} if the requests should receive successful responses. {@code false} otherwise.
@throws InterruptedException
ambry-router/src/test/java/com/github/ambry/router/AdaptiveOperationTrackerTest.java