private void testRangeRequest(ByteRange range, boolean resolveRangeOnEmptyBlob, boolean rangeSatisfiable)
      throws Exception {
    doPut();
    options = new GetBlobOptionsInternal(new GetBlobOptionsBuilder().operationType(GetBlobOptions.OperationType.All)
        .range(range)
        .resolveRangeOnEmptyBlob(resolveRangeOnEmptyBlob)
        .build(), false, routerMetrics.ageAtGet);
    getErrorCodeChecker.testAndAssert(rangeSatisfiable ? null : RouterErrorCode.RangeNotSatisfiable);
  }
Send a range request and test that it either completes successfully or fails with a
{@link RouterErrorCode#RangeNotSatisfiable} error.
@param range The {@link ByteRange} to set in {@link GetBlobOptions}.
@param resolveRangeOnEmptyBlob the value of {@link GetBlobOptions#resolveRangeOnEmptyBlob()} to set.
@param rangeSatisfiable {@code true} if the range request should succeed.
@throws Exception
ambry-router/src/test/java/com/github/ambry/router/GetBlobOperationTest.java