use of com.synopsys.integration.detect.workflow.event.EventSystem 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.workflow.event.EventSystem in project synopsys-detect by blackducksoftware.
the class DetectorToolTest method testFailWhenMisConfigured.
@Test
public void testFailWhenMisConfigured() throws DetectUserFriendlyException {
ExtractionEnvironmentProvider extractionEnvironmentProvider = Mockito.mock(ExtractionEnvironmentProvider.class);
DetectorFinder detectorFinder = Mockito.mock(DetectorFinder.class);
EventSystem eventSystem = Mockito.mock(EventSystem.class);
CodeLocationConverter codeLocationConverter = Mockito.mock(CodeLocationConverter.class);
DetectorIssuePublisher detectorIssuePublisher = Mockito.mock(DetectorIssuePublisher.class);
StatusEventPublisher statusEventPublisher = Mockito.mock(StatusEventPublisher.class);
ExitCodePublisher exitCodePublisher = Mockito.mock(ExitCodePublisher.class);
DetectorEventPublisher detectorEventPublisher = Mockito.mock(DetectorEventPublisher.class);
DetectorTool tool = new DetectorTool(detectorFinder, extractionEnvironmentProvider, eventSystem, codeLocationConverter, detectorIssuePublisher, statusEventPublisher, exitCodePublisher, detectorEventPublisher);
File directory = new File(".");
DetectorRuleSet detectorRuleSet = Mockito.mock(DetectorRuleSet.class);
DetectorFinderOptions detectorFinderOptions = Mockito.mock(DetectorFinderOptions.class);
DetectorEvaluationOptions evaluationOptions = Mockito.mock(DetectorEvaluationOptions.class);
String projectBomTool = "testBomTool";
tool.performDetectors(directory, detectorRuleSet, detectorFinderOptions, evaluationOptions, projectBomTool, new ArrayList<>(), new SimpleFileFinder());
Mockito.verify(exitCodePublisher).publishExitCode(Mockito.any(ExitCodeType.class), Mockito.anyString());
}
use of com.synopsys.integration.detect.workflow.event.EventSystem in project synopsys-detect by blackducksoftware.
the class ExitManagerTest method testNormalExit.
@Test
public void testNormalExit() {
long startTime = System.currentTimeMillis();
EventSystem eventSystem = new EventSystem();
DetectStatusManager statusManager = new DetectStatusManager(eventSystem);
ExceptionUtility exitCodeUtility = new ExceptionUtility();
ExitCodeManager exitCodeManager = new ExitCodeManager(eventSystem, exitCodeUtility);
ExitManager exitManager = new ExitManager(eventSystem, exitCodeManager, statusManager);
ExitOptions exitOptions = new ExitOptions(startTime, false, true);
ExitResult exitResult = exitManager.exit(exitOptions);
assertEquals(startTime, exitOptions.getStartTime());
assertFalse(exitResult.shouldForceSuccess());
assertTrue(exitResult.shouldPerformExit());
assertEquals(ExitCodeType.SUCCESS, exitResult.getExitCodeType());
}
use of com.synopsys.integration.detect.workflow.event.EventSystem in project synopsys-detect by blackducksoftware.
the class BdioCodeLocationCreatorTest method testCreateFromDetectCodeLocations.
// TODO: This test seems suspiciously long and like it might not be testing much. -jp
@Test
public void testCreateFromDetectCodeLocations() throws IOException, DetectUserFriendlyException {
File sourceDir = new File("src/test/resource");
CodeLocationNameManager codeLocationNameManager = Mockito.mock(CodeLocationNameManager.class);
DirectoryManager directoryManager = Mockito.mock(DirectoryManager.class);
Mockito.when(directoryManager.getSourceDirectory()).thenReturn(sourceDir);
EventSystem eventSystem = Mockito.mock(EventSystem.class);
CreateBdioCodeLocationsFromDetectCodeLocationsOperation creator = new CreateBdioCodeLocationsFromDetectCodeLocationsOperation(codeLocationNameManager, directoryManager);
NameVersion projectNameVersion = new NameVersion("testName", "testVersion");
DependencyGraph dependencyGraph = Mockito.mock(DependencyGraph.class);
Set<Dependency> dependencies = new HashSet<>();
Dependency dependency = Mockito.mock(Dependency.class);
dependencies.add(dependency);
Mockito.when(dependencyGraph.getRootDependencies()).thenReturn(dependencies);
ExternalId externalId = new ExternalId(Forge.MAVEN);
externalId.setName("testExternalIdName");
externalId.setVersion("testExternalIdVersion");
externalId.setArchitecture("testExternalIdArch");
DetectCodeLocation detectCodeLocation = DetectCodeLocation.forCreator(dependencyGraph, sourceDir, externalId, "testCreator");
List<DetectCodeLocation> detectCodeLocations = new ArrayList<>();
detectCodeLocations.add(detectCodeLocation);
Mockito.when(codeLocationNameManager.createCodeLocationName(detectCodeLocation, sourceDir, projectNameVersion.getName(), projectNameVersion.getVersion(), "", "")).thenReturn("testCodeLocationName");
BdioCodeLocationResult result = creator.transformDetectCodeLocations(detectCodeLocations, "", "", projectNameVersion);
assertEquals("testCodeLocationName", result.getBdioCodeLocations().get(0).getCodeLocationName());
File resultDir = result.getBdioCodeLocations().get(0).getDetectCodeLocation().getSourcePath();
assertTrue(resultDir.getCanonicalPath().contains("test"));
assertTrue(resultDir.getCanonicalPath().contains("resource"));
}
Aggregations