use of com.synopsys.integration.bdio.graph.ProjectDependencyGraph in project blackduck-common by blackducksoftware.
the class IntelligentPersistenceRecipeTest method uploadBdio2.
@Test
void uploadBdio2() throws IOException, IntegrationException, InterruptedException {
Bdio2Factory bdio2Factory = new Bdio2Factory();
// create the bdio2 metadata
ZonedDateTime now = Instant.now().atZone(ZoneId.of("EST5EDT"));
ProjectInfo projectInfo = ProjectInfo.nameVersion(PROJECT);
BdioMetadata bdio2Metadata = bdio2Factory.createBdioMetadata(CODE_LOCATION_NAME, projectInfo, now);
// create the bdio2 project
Dependency projectDependency = Dependency.FACTORY.createMavenDependency("com.synopsys.integration", PROJECT.getName(), PROJECT.getVersion());
// create a graph of one dependency
Dependency dependency = Dependency.FACTORY.createMavenDependency("org.apache.commons", "commons-lang3", "3.11");
ProjectDependencyGraph dependencyGraph = new ProjectDependencyGraph(projectDependency);
dependencyGraph.addDirectDependency(dependency);
// now, with metadata, a project, and a graph, we can create a bdio2 document and write out the file
Bdio2Document bdio2Document = bdio2Factory.createBdio2Document(bdio2Metadata, dependencyGraph);
File bdio2File = File.createTempFile("test_bdio2", ".bdio");
bdio2File.createNewFile();
bdio2File.deleteOnExit();
Bdio2Writer bdio2Writer = new Bdio2Writer();
bdio2Writer.writeBdioDocument(new FileOutputStream(bdio2File), bdio2Document);
// using the file and the previously set values, we create the UploadBatch for uploading to Black Duck
UploadBatch uploadBatch = new UploadBatch();
uploadBatch.addUploadTarget(UploadTarget.createDefault(PROJECT, CODE_LOCATION_NAME, bdio2File));
// now all the setup is done, we can upload the bdio2 file
IntelligentPersistenceService intelligentPersistenceService = blackDuckServicesFactory.createIntelligentPersistenceService();
UploadBatchOutput uploadBatchOutput = intelligentPersistenceService.uploadBdioAndWait(uploadBatch, 120);
assertFalse(uploadBatchOutput.hasAnyFailures());
// verify that we now have a bom with 1 component
Optional<ProjectVersionWrapper> projectVersionWrapper = projectService.getProjectVersion(PROJECT);
assertTrue(projectVersionWrapper.isPresent());
List<ProjectVersionComponentVersionView> bomComponents = projectBomService.getComponentsForProjectVersion(projectVersionWrapper.get().getProjectVersionView());
assertEquals(1, bomComponents.size());
}
use of com.synopsys.integration.bdio.graph.ProjectDependencyGraph in project synopsys-detect by blackducksoftware.
the class UniversalStepRunner method generateBdio.
public BdioResult generateBdio(UniversalToolsResult universalToolsResult, NameVersion projectNameVersion) throws OperationException {
ProjectDependencyGraph aggregateDependencyGraph = operationFactory.aggregateSubProject(projectNameVersion, universalToolsResult.getDetectCodeLocations());
AggregateCodeLocation aggregateCodeLocation = operationFactory.createAggregateCodeLocation(aggregateDependencyGraph, projectNameVersion);
operationFactory.createAggregateBdio2File(aggregateCodeLocation);
List<UploadTarget> uploadTargets = new ArrayList<>();
Map<DetectCodeLocation, String> codeLocationNamesResult = new HashMap<>();
universalToolsResult.getDetectCodeLocations().forEach(cl -> codeLocationNamesResult.put(cl, aggregateCodeLocation.getCodeLocationName()));
// TODO: This doesn't seem right, it should just be the aggregate CL name right?
uploadTargets.add(UploadTarget.createDefault(projectNameVersion, aggregateCodeLocation.getCodeLocationName(), aggregateCodeLocation.getAggregateFile()));
return new BdioResult(uploadTargets, new DetectCodeLocationNamesResult(codeLocationNamesResult));
}
use of com.synopsys.integration.bdio.graph.ProjectDependencyGraph in project synopsys-detect by blackducksoftware.
the class FullAggregateGraphCreator method aggregateCodeLocations.
public ProjectDependencyGraph aggregateCodeLocations(File sourcePath, NameVersion projectNameVersion, List<DetectCodeLocation> codeLocations) {
ExternalId projectExternalId = ExternalId.FACTORY.createNameVersionExternalId(DETECT_FORGE, projectNameVersion.getName(), projectNameVersion.getVersion());
ProjectDependency projectDependency = new ProjectDependency(projectExternalId);
ProjectDependencyGraph aggregateDependencyGraph = new ProjectDependencyGraph(projectDependency);
for (DetectCodeLocation detectCodeLocation : codeLocations) {
Dependency codeLocationDependency = createAggregateNode(sourcePath, detectCodeLocation);
aggregateDependencyGraph.addDirectDependency(codeLocationDependency);
DependencyGraphUtil.copyDirectDependenciesToParent(aggregateDependencyGraph, codeLocationDependency, detectCodeLocation.getDependencyGraph());
}
return aggregateDependencyGraph;
}
use of com.synopsys.integration.bdio.graph.ProjectDependencyGraph in project blackduck-common by blackducksoftware.
the class Bdio2UploadRecipeTest method uploadBdio2.
@Test
void uploadBdio2() throws IOException, IntegrationException, InterruptedException {
Bdio2Factory bdio2Factory = new Bdio2Factory();
// create the bdio2 metadata
ZonedDateTime now = Instant.now().atZone(ZoneId.of("EST5EDT"));
ProjectInfo projectInfo = new ProjectInfo(PROJECT, GROUP_NAME, // TODO: What is this supposed to look like? Only used for chunking? JM-04/2022
null, new GitInfo(new URL("https://github.com/blackducksoftware/blackduck-common"), "4a1f431d7aa4ac15f755edd5de004f07d36ae89a", "master"));
BdioMetadata bdio2Metadata = bdio2Factory.createBdioMetadata(CODE_LOCATION_NAME, projectInfo, now);
// create a graph of one dependency
Dependency projectDependency = Dependency.FACTORY.createMavenDependency(GROUP_NAME, PROJECT.getName(), PROJECT.getVersion());
Dependency dependency = Dependency.FACTORY.createMavenDependency("org.apache.commons", "commons-lang3", "3.11");
ProjectDependencyGraph dependencyGraph = new ProjectDependencyGraph(projectDependency);
dependencyGraph.addDirectDependency(dependency);
// now, with metadata, a project, and a graph, we can create a bdio2 document and write out the file
Bdio2Document bdio2Document = bdio2Factory.createBdio2Document(bdio2Metadata, dependencyGraph);
File bdio2File = File.createTempFile("test_bdio2", ".bdio");
bdio2File.createNewFile();
bdio2File.deleteOnExit();
Bdio2Writer bdio2Writer = new Bdio2Writer();
bdio2Writer.writeBdioDocument(new FileOutputStream(bdio2File), bdio2Document);
// using the file and the previously set values, we create the UploadBatch for uploading to Black Duck
UploadBatch uploadBatch = new UploadBatch();
uploadBatch.addUploadTarget(UploadTarget.createDefault(PROJECT, CODE_LOCATION_NAME, bdio2File));
// now all the setup is done, we can upload the bdio2 file
UploadBatchOutput uploadBatchOutput = bdio2UploadService.uploadBdioAndWait(uploadBatch, 120);
assertFalse(uploadBatchOutput.hasAnyFailures());
Optional<ProjectVersionWrapper> projectVersionWrapper = projectService.getProjectVersion(PROJECT);
assertTrue(projectVersionWrapper.isPresent());
// Verify project headers are being set correctly
String projectName = projectVersionWrapper.get().getProjectView().getName();
String projectVersionName = projectVersionWrapper.get().getProjectVersionView().getVersionName();
assertEquals(PROJECT, new NameVersion(projectName, projectVersionName));
assertEquals(PROJECT.getName(), bdio2Document.getBdioMetadata().get(Bdio.DataProperty.project.toString()));
assertEquals(PROJECT.getVersion(), bdio2Document.getBdioMetadata().get(Bdio.DataProperty.projectVersion.toString()));
assertEquals(GROUP_NAME, bdio2Document.getBdioMetadata().get(Bdio.DataProperty.projectGroup.toString()));
// verify that we now have a bom with 1 component
List<ProjectVersionComponentVersionView> bomComponents = projectBomService.getComponentsForProjectVersion(projectVersionWrapper.get().getProjectVersionView());
assertEquals(1, bomComponents.size());
}
use of com.synopsys.integration.bdio.graph.ProjectDependencyGraph in project blackduck-common by blackducksoftware.
the class CodeLocationServiceTestIT method createAndUploadSimpleBdioObject.
private void createAndUploadSimpleBdioObject(List<String> codeLocationNames) throws IOException, IntegrationException {
UploadBatch uploadBatch = new UploadBatch();
for (String codeLocationName : codeLocationNames) {
File bdioFile = File.createTempFile("bdio", "jsonld");
bdioFile.deleteOnExit();
ProjectDependencyGraph dependencyGraph = new ProjectDependencyGraph(Dependency.FACTORY.createMavenDependency(GROUP, PROJECT_NAME, VERSION));
Dependency bdioTestDependency = Dependency.FACTORY.createMavenDependency(GROUP, COMPONENT_NAME, VERSION);
dependencyGraph.addChildrenToRoot(bdioTestDependency);
SimpleBdioDocument simpleBdioDocument = simpleBdioFactory.createPopulatedBdioDocument(codeLocationName, dependencyGraph);
simpleBdioFactory.writeSimpleBdioDocumentToFile(bdioFile, simpleBdioDocument);
uploadBatch.addUploadTarget(UploadTarget.createDefault(new NameVersion(PROJECT_NAME, VERSION), codeLocationName, bdioFile));
}
BdioUploadService bdioUploadService = blackDuckServices.blackDuckServicesFactory.createBdioUploadService();
BdioUploadCodeLocationCreationRequest uploadRequest = bdioUploadService.createUploadRequest(uploadBatch);
UploadBatchOutput uploadBatchOutput = bdioUploadService.uploadBdio(uploadRequest).getOutput();
for (UploadOutput uploadOutput : uploadBatchOutput) {
assertEquals(Result.SUCCESS, uploadOutput.getResult(), String.format("Upload result for %s was not successful", uploadOutput.getCodeLocationName()));
}
}
Aggregations