private void doTestDelete(boolean sync, boolean error) throws Exception {
TableWriteFunction<String, String> writeFn = mock(TableWriteFunction.class);
RemoteTable<String, String> table = getTable("testDelete-" + sync + error,
mock(TableReadFunction.class), writeFn, false);
CompletableFuture<Void> future;
if (error) {
future = new CompletableFuture();
future.completeExceptionally(new RuntimeException("Test exception"));
} else {
future = CompletableFuture.completedFuture(null);
}
doReturn(future).when(writeFn).deleteAsync(any());
ArgumentCaptor<String> argCaptor = ArgumentCaptor.forClass(String.class);
if (sync) {
table.delete("foo");
} else {
table.deleteAsync("foo").get();
}
verify(writeFn, times(1)).deleteAsync(argCaptor.capture());
Assert.assertEquals("foo", argCaptor.getValue());
verify(table.writeRateLimiter, times(1)).throttle(anyString());
}