@Test
  public void testAuthorizationFailureOverrideAll() throws Exception {
    doPut();
    ServerErrorCode[] serverErrorCodes = new ServerErrorCode[9];
    serverErrorCodes[0] = ServerErrorCode.BlobNotFound;
    serverErrorCodes[1] = ServerErrorCode.DataCorrupt;
    serverErrorCodes[2] = ServerErrorCode.IOError;
    serverErrorCodes[3] = ServerErrorCode.PartitionUnknown;
    serverErrorCodes[4] = ServerErrorCode.DiskUnavailable;
    serverErrorCodes[5] = ServerErrorCode.BlobAuthorizationFailure;
    serverErrorCodes[6] = ServerErrorCode.UnknownError;
    serverErrorCodes[7] = ServerErrorCode.UnknownError;
    serverErrorCodes[8] = ServerErrorCode.BlobAuthorizationFailure;
    Map<ServerErrorCode, Integer> errorCounts = new HashMap<>();
    for (int i = 0; i < 9; i++) {
      if (!errorCounts.containsKey(serverErrorCodes[i])) {
        errorCounts.put(serverErrorCodes[i], 0);
      }
      errorCounts.put(serverErrorCodes[i], errorCounts.get(serverErrorCodes[i]) + 1);
    }
    testWithErrorCodes(errorCounts, mockServerLayout, RouterErrorCode.BlobAuthorizationFailure, getErrorCodeChecker);
  }
Test the case where servers return different {@link ServerErrorCode} or success, and the {@link GetBlobOperation}
is able to resolve and conclude the correct {@link RouterErrorCode}. The get operation should be able
to resolve the router error code as {@code Blob_Authorization_Failure}.
@throws Exception
ambry-router/src/test/java/com/github/ambry/router/GetBlobOperationTest.java