From 30e7ee30c8442cddce34a485d3a7e8cbf48012d1 Mon Sep 17 00:00:00 2001 From: Eamonn Mansour <47121388+eamansour@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:28:16 +0000 Subject: [PATCH] fix: Stop loading uber OBR bundles containing resource cleanup classes when a test stream is given Signed-off-by: Eamonn Mansour <47121388+eamansour@users.noreply.github.com> --- .../internal/ResourceMonitorBundleLoader.java | 37 +++++++++++++------ .../TestResourceMonitorBundleLoader.java | 4 +- .../framework/mocks/MockRepositoryAdmin.java | 12 ++++++ 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/main/java/dev/galasa/framework/resource/management/internal/ResourceMonitorBundleLoader.java b/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/main/java/dev/galasa/framework/resource/management/internal/ResourceMonitorBundleLoader.java index fb29b77405..8fc6ec5cc9 100644 --- a/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/main/java/dev/galasa/framework/resource/management/internal/ResourceMonitorBundleLoader.java +++ b/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/main/java/dev/galasa/framework/resource/management/internal/ResourceMonitorBundleLoader.java @@ -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; @@ -52,11 +52,14 @@ public ResourceMonitorBundleLoader( } public void loadMonitorBundles(IBundleManager bundleManager, String stream) throws FrameworkException { + List obrsToSearch = null; if (stream != null && !stream.isBlank()) { - loadRepositoriesFromStream(stream.trim(), streamsService); + obrsToSearch = loadRepositoriesFromStream(stream.trim(), streamsService); + } else { + obrsToSearch = Arrays.asList(repositoryAdmin.listRepositories()); } - Set bundlesToLoad = getResourceMonitorBundles(); + List bundlesToLoad = getResourceMonitorBundles(obrsToSearch); // Load the resulting bundles that have the IResourceManagementProvider service for (String bundle : bundlesToLoad) { @@ -70,23 +73,35 @@ public void loadMonitorBundles(IBundleManager bundleManager, String stream) thro } } - private void loadRepositoriesFromStream(String streamName, IStreamsService streamsService) throws FrameworkException { + private List loadRepositoriesFromStream(String streamName, IStreamsService streamsService) throws FrameworkException { + List 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 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) { @@ -110,9 +125,9 @@ private boolean isResourceMonitorCapability(Capability capability) { return isResourceMonitor; } - private Set getResourceMonitorBundles() { - Set bundlesToLoad = new HashSet<>(); - for (Repository repository : repositoryAdmin.listRepositories()) { + private List getResourceMonitorBundles(List obrsToSearch) { + List bundlesToLoad = new ArrayList<>(); + for (Repository repository : obrsToSearch) { if (repository.getResources() != null) { bundlesToLoad.addAll(getResourceMonitorsFromRepository(repository)); } @@ -120,8 +135,8 @@ private Set getResourceMonitorBundles() { return bundlesToLoad; } - private Set getResourceMonitorsFromRepository(Repository repository) { - Set resourceMonitorBundles = new HashSet<>(); + private List getResourceMonitorsFromRepository(Repository repository) { + List resourceMonitorBundles = new ArrayList<>(); for (Resource resource : repository.getResources()) { if (isResourceContainingAResourceMonitor(resource)) { resourceMonitorBundles.add(resource.getSymbolicName()); diff --git a/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/test/java/dev/galasa/framework/resource/management/internal/TestResourceMonitorBundleLoader.java b/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/test/java/dev/galasa/framework/resource/management/internal/TestResourceMonitorBundleLoader.java index e6de0feb51..abf7bae3c8 100644 --- a/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/test/java/dev/galasa/framework/resource/management/internal/TestResourceMonitorBundleLoader.java +++ b/modules/framework/galasa-parent/dev.galasa.framework.resource.management/src/test/java/dev/galasa/framework/resource/management/internal/TestResourceMonitorBundleLoader.java @@ -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"; diff --git a/modules/framework/galasa-parent/dev.galasa.framework/src/testFixtures/java/dev/galasa/framework/mocks/MockRepositoryAdmin.java b/modules/framework/galasa-parent/dev.galasa.framework/src/testFixtures/java/dev/galasa/framework/mocks/MockRepositoryAdmin.java index 3bb884ca46..39e53db9d3 100644 --- a/modules/framework/galasa-parent/dev.galasa.framework/src/testFixtures/java/dev/galasa/framework/mocks/MockRepositoryAdmin.java +++ b/modules/framework/galasa-parent/dev.galasa.framework/src/testFixtures/java/dev/galasa/framework/mocks/MockRepositoryAdmin.java @@ -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; @@ -24,6 +25,8 @@ public class MockRepositoryAdmin implements RepositoryAdmin { private Map repositoryURLMap = new HashMap(); + private List resourcesToAddToRepositories = new ArrayList<>(); + public MockRepositoryAdmin(List repositories, Resolver resolver) { for( Repository repo : repositories) { String key = repo.getURI().toString(); @@ -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); } @@ -57,6 +65,10 @@ public Resolver resolver() { return resolver; } + public void setResourcesToAddToRepositories(List resourcesToAddToRepositories) { + this.resourcesToAddToRepositories = resourcesToAddToRepositories; + } + // ----------------- un-implemented methdos follow -------------------- @Override