public ListenableFuture<RunResponse> runWithDeadline(RunRequest request, Deadline deadline) {
    return pluginService.withDeadline(deadline).run(request);
  }
@Test
  public void run_singlePluginValidRequest_returnSingleDetectionReport() throws Exception {
    RunRequest runRequest = createSinglePluginRunRequest();
    PluginServiceImplBase runImpl =
        new PluginServiceImplBase() {
          @Override
          public void run(RunRequest request, StreamObserver<RunResponse> responseObserver) {
            DetectionReportList reportList =
                DetectionReportList.newBuilder()
                    .addDetectionReports(
                        DetectionReport.newBuilder()
                            .setTargetInfo(request.getTarget())
                            .setNetworkService(request.getPlugins(0).getServices(0)))
                    .build();
            responseObserver.onNext(RunResponse.newBuilder().setReports(reportList).build());
            responseObserver.onCompleted();
          }
        };
    serviceRegistry.addService(runImpl);

    ListenableFuture<RunResponse> run = pluginService.runWithDeadline(runRequest, DEADLINE_DEFAULT);
    RunResponse runResponse = run.get();

    assertThat(run.isDone()).isTrue();
    assertRunResponseContainsAllRunRequestParameters(runResponse, runRequest);
  }