public ScanResults run(ScanTarget scanTarget) throws ExecutionException, InterruptedException {
    return runAsync(scanTarget).get();
  }
@Test
  public void run_whenPortScannerFailed_returnsFailedScanResult()
      throws ExecutionException, InterruptedException {
    Injector injector =
        Guice.createInjector(
            new FakeUtcClockModule(),
            new FakePluginExecutionModule(),
            new FailedPortScannerBootstrapModule(),
            new FakeServiceFingerprinterBootstrapModule(),
            new FakeVulnDetectorBootstrapModule());
    scanningWorkflow = injector.getInstance(DefaultScanningWorkflow.class);

    ScanResults scanResults = scanningWorkflow.run(buildScanTarget());

    assertThat(scanResults.getScanStatus()).isEqualTo(ScanStatus.FAILED);
    assertThat(scanResults.getStatusMessage())
        .contains("Plugin execution error on '/fake/PORT_SCAN/FailedPortScanner/v0.1'");
    assertThat(scanResults.getScanFindingsList()).isEmpty();
  }