### Question:
DeleteRequestProcessor extends ListenableFutureRpcProcessor<DeleteRangeRequest, DeleteRangeResponse, RespT> { public static <T> DeleteRequestProcessor<T> of( DeleteRangeRequest request, Function<DeleteRangeResponse, T> responseFunc, StorageContainerChannel channel, ScheduledExecutorService executor, Policy backoffPolicy) { return new DeleteRequestProcessor<>(request, responseFunc, channel, executor, backoffPolicy); } private  DeleteRequestProcessor(DeleteRangeRequest request,
                                   Function<DeleteRangeResponse, RespT> respFunc,
                                   StorageContainerChannel channel,
                                   ScheduledExecutorService executor,
                                   Policy backoffPolicy); static DeleteRequestProcessor<T> of(
        DeleteRangeRequest request,
        Function<DeleteRangeResponse, T> responseFunc,
        StorageContainerChannel channel,
        ScheduledExecutorService executor,
        Policy backoffPolicy);  }### Answer:
@Test public void testProcess() throws Exception { @Cleanup("shutdown") ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); StorageContainerChannel scChannel = mock(StorageContainerChannel.class); CompletableFuture<StorageServerChannel> serverChannelFuture = FutureUtils.createFuture(); when(scChannel.getStorageContainerChannelFuture()).thenReturn(serverChannelFuture); DeleteRangeResponse response = newSuccessResponse(); AtomicReference<Object> receivedRequest = new AtomicReference<>(null); TableServiceImplBase tableService = new TableServiceImplBase() { @Override public void delete(DeleteRangeRequest request, StreamObserver<DeleteRangeResponse> responseObserver) { receivedRequest.set(request); complete(responseObserver); } private void complete(StreamObserver<DeleteRangeResponse> responseStreamObserver) { responseStreamObserver.onNext(response); responseStreamObserver.onCompleted(); } }; serviceRegistry.addService(tableService.bindService()); StorageServerChannel ssChannel = new StorageServerChannel( InProcessChannelBuilder.forName(serverName).directExecutor().build(), Optional.empty()); serverChannelFuture.complete(ssChannel); DeleteRangeRequest request = newRequest(); DeleteRequestProcessor<String> processor = DeleteRequestProcessor.of( request, resp -> "test", scChannel, scheduler, ClientConstants.DEFAULT_INFINIT_BACKOFF_POLICY); assertEquals("test", FutureUtils.result(processor.process())); assertSame(request, receivedRequest.get()); }