use of com.synopsys.integration.detect.lifecycle.run.data.ProductRunData in project synopsys-detect by blackducksoftware.
the class Application method runApplication.
private void runApplication(EventSystem eventSystem, ExitCodeManager exitCodeManager, DetectBootResult detectBootResult, ExceptionUtility exceptionUtility) {
Optional<BootSingletons> optionalRunContext = detectBootResult.getBootSingletons();
Optional<ProductRunData> optionalProductRunData = detectBootResult.getProductRunData();
if (detectBootResult.getBootType() == DetectBootResult.BootType.RUN && optionalProductRunData.isPresent() && optionalRunContext.isPresent()) {
logger.debug("Detect will attempt to run.");
DetectRun detectRun = new DetectRun(exitCodeManager, exceptionUtility);
detectRun.run(optionalRunContext.get());
} else {
logger.debug("Detect will NOT attempt to run.");
detectBootResult.getException().ifPresent(exitCodeManager::requestExitCode);
detectBootResult.getException().ifPresent(e -> DetectIssue.publish(eventSystem, DetectIssueType.EXCEPTION, "Detect Boot Error", e.getMessage()));
}
}
use of com.synopsys.integration.detect.lifecycle.run.data.ProductRunData in project synopsys-detect by blackducksoftware.
the class ProductBootTest method blackDuckConnectionSuccessWithTestReturnsNull.
@Test
public void blackDuckConnectionSuccessWithTestReturnsNull() throws DetectUserFriendlyException, IOException, IntegrationException {
BlackDuckConnectivityResult connectivityResult = BlackDuckConnectivityResult.success(Mockito.mock(BlackDuckServicesFactory.class), Mockito.mock(BlackDuckServerConfig.class));
ProductRunData productRunData = testBoot(BlackDuckDecision.runOnline(BlackduckScanMode.INTELLIGENT), new ProductBootOptions(false, true), connectivityResult);
Assertions.assertNull(productRunData);
}
use of com.synopsys.integration.detect.lifecycle.run.data.ProductRunData in project synopsys-detect by blackducksoftware.
the class Application method run.
@Override
public void run(ApplicationArguments applicationArguments) {
long startTime = System.currentTimeMillis();
// Events, Status and Exit Codes are required even if boot fails.
EventSystem eventSystem = new EventSystem();
DetectStatusManager statusManager = new DetectStatusManager(eventSystem);
ExceptionUtility exceptionUtility = new ExceptionUtility();
ExitCodeManager exitCodeManager = new ExitCodeManager(eventSystem, exceptionUtility);
ExitManager exitManager = new ExitManager(eventSystem, exitCodeManager, statusManager);
ReportListener.createDefault(eventSystem);
FormattedOutputManager formattedOutputManager = new FormattedOutputManager(eventSystem);
InstalledToolManager installedToolManager = new InstalledToolManager();
// Before boot even begins, we create a new Spring context for Detect to work within.
logger.debug("Initializing detect.");
DetectRunId detectRunId = DetectRunId.createDefault();
Gson gson = BlackDuckServicesFactory.createDefaultGsonBuilder().setPrettyPrinting().create();
DetectInfo detectInfo = DetectInfoUtility.createDefaultDetectInfo();
FileFinder fileFinder = new SimpleFileFinder();
boolean shouldForceSuccess = false;
Optional<DetectBootResult> detectBootResultOptional = bootApplication(detectRunId, applicationArguments.getSourceArgs(), eventSystem, exitCodeManager, gson, detectInfo, fileFinder, installedToolManager, exceptionUtility);
if (detectBootResultOptional.isPresent()) {
DetectBootResult detectBootResult = detectBootResultOptional.get();
shouldForceSuccess = detectBootResult.shouldForceSuccess();
runApplication(eventSystem, exitCodeManager, detectBootResult, exceptionUtility);
detectBootResult.getProductRunData().filter(ProductRunData::shouldUseBlackDuckProduct).map(ProductRunData::getBlackDuckRunData).flatMap(BlackDuckRunData::getPhoneHomeManager).ifPresent(PhoneHomeManager::phoneHomeOperations);
// Create status output file.
logger.info("");
detectBootResult.getDirectoryManager().ifPresent(directoryManager -> createStatusOutputFile(formattedOutputManager, detectInfo, directoryManager));
// Create installed tool data file.
detectBootResult.getDirectoryManager().ifPresent(directoryManager -> createOrUpdateInstalledToolsFile(installedToolManager, directoryManager.getPermanentDirectory()));
shutdownApplication(detectBootResult, exitCodeManager);
} else {
logger.info("Will not create status file, detect did not boot.");
}
logger.debug("All Detect actions completed.");
exitApplication(exitManager, startTime, shouldForceSuccess);
}
use of com.synopsys.integration.detect.lifecycle.run.data.ProductRunData in project synopsys-detect by blackducksoftware.
the class ProductBootTest method blackDuckFailureWithIgnoreReturnsFalse.
@Test
public void blackDuckFailureWithIgnoreReturnsFalse() throws DetectUserFriendlyException, IOException, IntegrationException {
BlackDuckConnectivityResult connectivityResult = BlackDuckConnectivityResult.failure("Failed to connect");
ProductRunData productRunData = testBoot(BlackDuckDecision.runOnline(BlackduckScanMode.INTELLIGENT), new ProductBootOptions(true, false), connectivityResult);
Assertions.assertFalse(productRunData.shouldUseBlackDuckProduct());
}
use of com.synopsys.integration.detect.lifecycle.run.data.ProductRunData in project synopsys-detect by blackducksoftware.
the class ProductBootTest method blackDuckOnlyWorks.
@Test
public void blackDuckOnlyWorks() throws DetectUserFriendlyException, IOException, IntegrationException {
BlackDuckConnectivityResult connectivityResult = BlackDuckConnectivityResult.success(Mockito.mock(BlackDuckServicesFactory.class), Mockito.mock(BlackDuckServerConfig.class));
ProductRunData productRunData = testBoot(BlackDuckDecision.runOnline(BlackduckScanMode.INTELLIGENT), new ProductBootOptions(false, false), connectivityResult);
Assertions.assertTrue(productRunData.shouldUseBlackDuckProduct());
}
Aggregations