Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
package dev.galasa.framework.resource.management.internal;

import java.net.URL;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Expand Down Expand Up @@ -52,11 +52,14 @@ public ResourceMonitorBundleLoader(
}

public void loadMonitorBundles(IBundleManager bundleManager, String stream) throws FrameworkException {
List<Repository> obrsToSearch = null;
if (stream != null && !stream.isBlank()) {
loadRepositoriesFromStream(stream.trim(), streamsService);
obrsToSearch = loadRepositoriesFromStream(stream.trim(), streamsService);
} else {
obrsToSearch = Arrays.asList(repositoryAdmin.listRepositories());
}

Set<String> bundlesToLoad = getResourceMonitorBundles();
List<String> bundlesToLoad = getResourceMonitorBundles(obrsToSearch);

// Load the resulting bundles that have the IResourceManagementProvider service
for (String bundle : bundlesToLoad) {
Expand All @@ -70,23 +73,35 @@ public void loadMonitorBundles(IBundleManager bundleManager, String stream) thro
}
}

private void loadRepositoriesFromStream(String streamName, IStreamsService streamsService) throws FrameworkException {
private List<Repository> loadRepositoriesFromStream(String streamName, IStreamsService streamsService) throws FrameworkException {
List<Repository> streamObrs = new ArrayList<>();
IStream stream = streamsService.getStreamByName(streamName);
stream.validate();

// Add the stream's maven repo to the maven repositories
URL mavenRepo = stream.getMavenRepositoryUrl();
logger.info("Registering test stream Maven repository: " + mavenRepo.toString());

mavenRepository.addRemoteRepository(mavenRepo);

logger.info("Registered test stream Maven repository OK");

// Add the stream's OBR to the repository admin
List<IOBR> obrs = stream.getObrs();
for (IOBR obr : obrs) {
try {
repositoryAdmin.addRepository(obr.toString());
String obrAsString = obr.toString();
logger.info("Loading OBR " + obrAsString);

Repository addedObr = repositoryAdmin.addRepository(obrAsString);
streamObrs.add(addedObr);

logger.info("Loaded OBR " + obrAsString + " OK");
} catch (Exception e) {
throw new FrameworkException("Unable to load repository " + obr, e);
}
}
return streamObrs;
}

private boolean isResourceMonitorCapability(Capability capability) {
Expand All @@ -110,18 +125,18 @@ private boolean isResourceMonitorCapability(Capability capability) {
return isResourceMonitor;
}

private Set<String> getResourceMonitorBundles() {
Set<String> bundlesToLoad = new HashSet<>();
for (Repository repository : repositoryAdmin.listRepositories()) {
private List<String> getResourceMonitorBundles(List<Repository> obrsToSearch) {
List<String> bundlesToLoad = new ArrayList<>();
for (Repository repository : obrsToSearch) {
if (repository.getResources() != null) {
bundlesToLoad.addAll(getResourceMonitorsFromRepository(repository));
}
}
return bundlesToLoad;
}

private Set<String> getResourceMonitorsFromRepository(Repository repository) {
Set<String> resourceMonitorBundles = new HashSet<>();
private List<String> getResourceMonitorsFromRepository(Repository repository) {
List<String> resourceMonitorBundles = new ArrayList<>();
for (Resource resource : repository.getResources()) {
if (isResourceContainingAResourceMonitor(resource)) {
resourceMonitorBundles.add(resource.getSymbolicName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,12 @@ public void testLoadMonitorBundlesAddsRepositoryFromTestStream() throws Exceptio

MockResource mockResource1 = createMockBundleWithServiceCapability(BUNDLE_NAME_1);
MockResource mockResource2 = createMockBundleWithServiceCapability(BUNDLE_NAME_2);
mockRepo.addResource(mockResource1);
mockRepo.addResource(mockResource2);

boolean IS_RESOLVER_GOING_TO_RESOLVE_TEST_BUNDLE = true;
Resolver mockResolver = new MockResolver(IS_RESOLVER_GOING_TO_RESOLVE_TEST_BUNDLE);
MockRepositoryAdmin mockRepositoryAdmin = new MockRepositoryAdmin(mockRepositories, mockResolver);
mockRepositoryAdmin.setResourcesToAddToRepositories(List.of(mockResource1, mockResource2));

MockMavenRepository mockMavenRepository = new MockMavenRepository();

String stream = "myStream";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package dev.galasa.framework.mocks;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -24,6 +25,8 @@ public class MockRepositoryAdmin implements RepositoryAdmin {

private Map<String,Repository> repositoryURLMap = new HashMap<String,Repository>();

private List<MockResource> resourcesToAddToRepositories = new ArrayList<>();

public MockRepositoryAdmin(List<Repository> repositories, Resolver resolver) {
for( Repository repo : repositories) {
String key = repo.getURI().toString();
Expand All @@ -40,6 +43,11 @@ public Repository[] listRepositories() {
@Override
public Repository addRepository(String repository) throws Exception {
MockRepository mockRepository = new MockRepository(repository);

for (MockResource resourceToAdd : resourcesToAddToRepositories) {
mockRepository.addResource(resourceToAdd);
}

this.repositoryURLMap.put(repository, mockRepository);
return repositoryURLMap.get(repository);
}
Expand All @@ -57,6 +65,10 @@ public Resolver resolver() {
return resolver;
}

public void setResourcesToAddToRepositories(List<MockResource> resourcesToAddToRepositories) {
this.resourcesToAddToRepositories = resourcesToAddToRepositories;
}

// ----------------- un-implemented methdos follow --------------------

@Override
Expand Down
Loading