@Test
  public void testBlobNotFoundReturnedWhenAllReplicasReturnNotFound() throws Exception {
    int serverCount = serverLayout.getMockServers().size();
    List<ServerErrorCode> serverErrorCodes = Collections.nCopies(serverCount, ServerErrorCode.BlobNotFound);
    setServerErrorCodes(serverErrorCodes, serverLayout);
    RouterErrorCode expectedErrorCode = RouterErrorCode.BlobDoesNotExist;
    FutureResult<Void> future = new FutureResult<>();
    TestCallback<Void> callback = new TestCallback<>();
    deleteManager.submitDeleteBlobOperation(blobIdString, localDc, future, callback, quotaChargeCallback);

    router.incrementOperationsCount(1);
    sendRequestsGetResponses(future, deleteManager);
    assertFailureAndCheckErrorCode(future, expectedErrorCode);
    assertEquals("There should be an Blob Not Found error", routerMetrics.blobDoesNotExistErrorCount.getCount(), 1);
  }
Test the case when the blob cannot be found in store servers, though the last response is {@code IO_Error}.
The delete operation is expected to return {@link RouterErrorCode#BlobDoesNotExist}, since the delete operation will be completed
before the last response according to its {@link OperationTracker}. The order of received responses is the
same as defined in {@code serverErrorCodes}.
ambry-router/src/test/java/com/github/ambry/router/DeleteManagerTest.java