use of org.jboss.pnc.spi.repositorymanager.model.RepositorySession in project pnc by project-ncl.
the class BuildGroupSetBrewPullActiveMetadataTest method verifyBrewPullActiveMetadataSetProperly.
private void verifyBrewPullActiveMetadataSetProperly(boolean brewPullActive, String buildId) throws RepositoryManagerException, org.commonjava.indy.client.core.IndyClientException {
// create a dummy composed (chained) build execution and a repo session based on it
BuildExecution execution = new TestBuildExecution(buildId);
Indy indy = driver.getIndy(accessToken);
RepositorySession repositoryConfiguration = driver.createBuildRepository(execution, accessToken, accessToken, RepositoryType.MAVEN, Collections.emptyMap(), brewPullActive);
String repoId = repositoryConfiguration.getBuildRepositoryId();
Group buildGroup = indy.stores().load(new StoreKey(MAVEN_PKG_KEY, StoreType.group, repoId), Group.class);
Map<String, String> metadata = buildGroup.getMetadata();
assertThat(metadata).containsEntry(AbstractRepositoryManagerDriverTest.BREW_PULL_ACTIVE_METADATA_KEY, Boolean.toString(brewPullActive));
}
use of org.jboss.pnc.spi.repositorymanager.model.RepositorySession in project pnc by project-ncl.
the class ExcludeInternalRepoByNameTest method extractBuildArtifacts_ContainsTwoDownloads.
@Test
public void extractBuildArtifacts_ContainsTwoDownloads() throws Exception {
// create a remote repo pointing at our server fixture's 'repo/test' directory.
indy.stores().create(new RemoteRepository(MAVEN_PKG_KEY, INTERNAL, server.formatUrl(INTERNAL)), "Creating internal test remote repo", RemoteRepository.class);
indy.stores().create(new RemoteRepository(MAVEN_PKG_KEY, EXTERNAL, server.formatUrl(EXTERNAL)), "Creating external test remote repo", RemoteRepository.class);
Group publicGroup = indy.stores().load(new StoreKey(MAVEN_PKG_KEY, StoreType.group, PUBLIC_GROUP_ID), Group.class);
if (publicGroup == null) {
publicGroup = new Group(MAVEN_PKG_KEY, PUBLIC_GROUP_ID, new StoreKey(MAVEN_PKG_KEY, StoreType.remote, INTERNAL), new StoreKey(MAVEN_PKG_KEY, StoreType.remote, EXTERNAL));
indy.stores().create(publicGroup, "creating public group", Group.class);
} else {
publicGroup.setConstituents(Arrays.asList(new StoreKey(MAVEN_PKG_KEY, StoreType.remote, INTERNAL), new StoreKey(MAVEN_PKG_KEY, StoreType.remote, EXTERNAL)));
indy.stores().update(publicGroup, "adding test remotes to public group");
}
String internalPath = "org/foo/internal/1.0/internal-1.0.pom";
String externalPath = "org/foo/external/1.1/external-1.1.pom";
String content = "This is a test " + System.currentTimeMillis();
// setup the expectation that the remote repo pointing at this server will request this file...and define its
// content.
server.expect(server.formatUrl(INTERNAL, internalPath), 200, content);
server.expect(server.formatUrl(EXTERNAL, externalPath), 200, content);
// create a dummy non-chained build execution and repo session based on it
BuildExecution execution = new TestBuildExecution();
RepositorySession rc = driver.createBuildRepository(execution, accessToken, accessToken, RepositoryType.MAVEN, Collections.emptyMap(), false);
assertThat(rc, notNullValue());
String baseUrl = rc.getConnectionInfo().getDependencyUrl();
// download the two files via the repo session's dependency URL, which will proxy the test http server
// using the expectations above
assertThat(download(UrlUtils.buildUrl(baseUrl, internalPath)), equalTo(content));
assertThat(download(UrlUtils.buildUrl(baseUrl, externalPath)), equalTo(content));
// extract the build artifacts, which should contain the two imported deps.
// This will also trigger promoting imported artifacts into the shared-imports hosted repo
RepositoryManagerResult repositoryManagerResult = rc.extractBuildArtifacts(true);
List<Artifact> deps = repositoryManagerResult.getDependencies();
System.out.println(deps);
assertThat(deps, notNullValue());
assertThat(deps.size(), equalTo(2));
Indy indy = driver.getIndy(accessToken);
StoreKey sharedImportsKey = new StoreKey(MAVEN_PKG_KEY, StoreType.hosted, SHARED_IMPORTS_ID);
// check that the imports from external locations are available from shared-imports
InputStream stream = indy.content().get(sharedImportsKey, externalPath);
String downloaded = IOUtils.toString(stream, (String) null);
assertThat(downloaded, equalTo(content));
stream.close();
// check that the imports from internal/trusted locations are NOT available from shared-imports
stream = indy.content().get(sharedImportsKey, internalPath);
assertThat(stream, nullValue());
}
use of org.jboss.pnc.spi.repositorymanager.model.RepositorySession in project pnc by project-ncl.
the class ExtraDependencyRepositoriesTest method shouldAddExtraRepositoryToBuildGroup.
@Test
public void shouldAddExtraRepositoryToBuildGroup() throws RepositoryManagerException, IndyClientException {
final String REPO_NAME = "i-test-com";
Map<String, String> genericParams = createGenericParamsMap("http://test.com/maven/");
BuildExecution execution = new TestBuildExecution();
RepositorySession repositorySession = driver.createBuildRepository(execution, accessToken, accessToken, RepositoryType.MAVEN, genericParams, false);
assertNotNull(repositorySession);
StoreKey buildGroupKey = new StoreKey(MavenPackageTypeDescriptor.MAVEN_PKG_KEY, StoreType.group, repositorySession.getBuildRepositoryId());
Group buildGroup = indy.stores().load(buildGroupKey, Group.class);
long hits = buildGroup.getConstituents().stream().filter((key) -> REPO_NAME.equals(key.getName())).count();
assertEquals(1, hits);
}
use of org.jboss.pnc.spi.repositorymanager.model.RepositorySession in project pnc by project-ncl.
the class IndyPromotionValidationTest method testIndyPromotionValidation.
@Test
public /**
* Test whose purpose is to provide a means for more or less easy debugging of indy validation errors. For it to
* work it needs a standalone Indy server, with a rule-set definition such as this: { "storeKeyPattern":
* "group:builds-untested", "ruleNames": [ "no-snapshots.groovy", "parsable-pom.groovy" ], "validationParameters":
* {} } Provide the base URL to this Indy server as a System parameter such as e.g.
* -DbaseUrl="http://127.0.0.1:8090"
*/
void testIndyPromotionValidation() {
String baseUrl = System.getProperty("baseUrl");
if (StringUtils.isBlank(baseUrl)) {
fail("No base URL has been specified");
}
RepositoryManager driver = null;
try {
driver = new RepositoryManagerDriver(new TestConfiguration(baseUrl), new BuildRecordRepositoryMock());
RepositorySession repositorySession = driver.createBuildRepository(new TestBuildExecution("test"), null, null, RepositoryType.MAVEN, Collections.emptyMap(), false);
CloseableHttpClient client = HttpClientBuilder.create().build();
String deployUrl = repositorySession.getConnectionInfo().getDeployUrl();
// Deploy several 'wrong' artifacts to get a composed error message back
String pathPom1 = "org/foo/invalid/1/invalid-1.pom";
String snapshotPom = "<?xml version=\"1.0\"?>\n<project><modelVersion>4.0.0</modelVersion><groupId>org.foo</groupId>" + "<artifactId>invalid</artifactId><version>1</version><dependencies>" + "<dependency><groupId>org.bar</groupId><artifactId>dep</artifactId>" + "<version>1.0-SNAPSHOT</version></dependency></dependencies></project>";
String url = UrlUtils.buildUrl(deployUrl, pathPom1);
put(client, url, snapshotPom);
String pathPom2 = "org/foo/invalid2/1/invalid2-1.pom";
String snapshotPom2 = "<?xml version=\"1.0\"?>\n<project><modelVersion>4.0.0</modelVersion><groupId>org.foo</groupId>" + "<artifactId>invalid2</artifactId><version>1</version><dependencies>" + "<dependency><groupId>org.bar</groupId><artifactId>dep</artifactId>" + "<version>1.0-SNAPSHOT</version></dependency></dependencies></project>";
url = UrlUtils.buildUrl(deployUrl, pathPom2);
put(client, url, snapshotPom2);
String pathPom3 = "org/foo/nonparseable/1/nonparseable.pom";
String nonparseablePom = "<?xml version=\"1.0\"?>\n<project><modelVersion>4.0.0</modelVersion><groupId>org.foo</groupId>" + "<artifactId>nonparseable</artifactId><version>1</version><dependencies>" + "<dependency><groupId>org.bar</groupId><artifactId>dep</artifactId>" + "<version>1.0</version></dependency></dependencies></project>";
url = UrlUtils.buildUrl(deployUrl, pathPom3);
put(client, url, nonparseablePom);
RepositoryManagerResult repositoryManagerResult = repositorySession.extractBuildArtifacts(true);
// Just a dummy check, the point is really to be able to debug this
assertSame(CompletionStatus.FAILED, repositoryManagerResult.getCompletionStatus());
} catch (Exception e) {
e.printStackTrace();
}
}
use of org.jboss.pnc.spi.repositorymanager.model.RepositorySession in project pnc by project-ncl.
the class UploadOneManagedSvcThenDownloadAndVerifyArtifactHasBuildCategoryTest method extractBuildArtifacts_ContainsTwoUploads.
@Test
public void extractBuildArtifacts_ContainsTwoUploads() throws Exception {
// create a dummy non-chained build execution and repo session based on it
BuildExecution execution = new TestBuildExecution();
Map<String, String> genericParams = new HashMap<>(1);
genericParams.put(BuildConfigurationParameterKeys.BUILD_CATEGORY.name(), BuildCategory.SERVICE.name());
RepositorySession rc = driver.createBuildRepository(execution, accessToken, accessToken, RepositoryType.MAVEN, genericParams, false);
assertThat(rc, notNullValue());
String baseUrl = rc.getConnectionInfo().getDeployUrl();
String path = "org/commonjava/indy/indy-core/0.17.0/indy-core-0.17.0.pom";
String content = "This is a test";
CloseableHttpClient client = HttpClientBuilder.create().build();
// upload a couple files related to a single GAV using the repo session deployment url
// this simulates a build deploying one jar and its associated POM
final String url = UrlUtils.buildUrl(baseUrl, path);
assertThat("Failed to upload: " + url, ArtifactUploadUtils.put(client, url, content), equalTo(true));
// download the two files via the repo session's dependency URL, which will proxy the test http server
// using the expectations above
assertThat(download(UrlUtils.buildUrl(baseUrl, path)), equalTo(content));
ProjectVersionRef pvr = new SimpleProjectVersionRef("org.commonjava.indy", "indy-core", "0.17.0");
String artifactRef = new SimpleArtifactRef(pvr, "pom", null).toString();
// extract the "builtArtifacts" artifacts we uploaded above.
RepositoryManagerResult repositoryManagerResult = rc.extractBuildArtifacts(true);
// check that both files are present in extracted result
List<Artifact> builtArtifacts = repositoryManagerResult.getBuiltArtifacts();
log.info("Built artifacts: " + builtArtifacts.toString());
assertThat(builtArtifacts, notNullValue());
assertThat(builtArtifacts.size(), equalTo(1));
Artifact builtArtifact = builtArtifacts.get(0);
assertThat(builtArtifact + " doesn't match pom ref: " + artifactRef, builtArtifact.getIdentifier(), equalTo(artifactRef));
assertThat(builtArtifact + " doesn't have correct build category: " + BuildCategory.SERVICE, builtArtifact.getBuildCategory(), equalTo(BuildCategory.SERVICE));
client.close();
}
Aggregations