Spaces:
Build error
Build error
| package com.dalab.discovery.sd.config; | |
| import java.util.Collections; | |
| import java.util.List; | |
| import java.util.Map; | |
| import java.util.Optional; | |
| import java.util.UUID; | |
| import java.util.concurrent.CompletableFuture; | |
| import java.util.function.Supplier; | |
| import org.springframework.context.annotation.Bean; | |
| import org.springframework.context.annotation.Configuration; | |
| import org.springframework.context.annotation.Primary; | |
| import com.dalab.discovery.common.model.CloudResource; | |
| import com.dalab.discovery.common.model.DiscoveryJob; | |
| import com.dalab.discovery.common.model.ResourceType; | |
| import com.dalab.discovery.common.model.enums.CloudProvider; | |
| import com.dalab.discovery.common.service.CloudResourceDTO; | |
| import com.dalab.discovery.common.util.health.HealthStatus; | |
| import com.dalab.discovery.crawler.service.IDiscoveryService; | |
| import com.dalab.discovery.crawler.service.IResourceCrawler; | |
| import com.dalab.discovery.job.service.JobStatisticsDTO; | |
| /** | |
| * Mock configuration for discovery services in tests. | |
| * This resolves the dependency injection issue where multiple discovery service | |
| * beans are found (AWS, Azure, GCP) but DefaultDiscoveryCoordinatorServiceImpl | |
| * requires a single one. | |
| */ | |
| public class TestDiscoveryConfiguration { | |
| /** | |
| * Primary mock discovery service for tests. | |
| * This bean will be injected when a non-specific IDiscoveryService is | |
| * requested. | |
| */ | |
| public IDiscoveryService<CloudResource> primaryDiscoveryService() { | |
| return new MockDiscoveryService(); | |
| } | |
| /** | |
| * Mock implementation of IDiscoveryService for testing | |
| */ | |
| private static class MockDiscoveryService implements IDiscoveryService<CloudResource> { | |
| // Implement methods with stub implementations | |
| // We're just providing this to satisfy Spring's dependency injection | |
| public String getCloudProvider() { | |
| return "mock"; | |
| } | |
| public CloudProvider getProvider() { | |
| return CloudProvider.UNKNOWN; | |
| } | |
| // IHealthCheckService methods | |
| public boolean isServiceHealthy(String serviceName) { | |
| return true; | |
| } | |
| public HealthStatus checkServiceHealth(String serviceName) { | |
| return HealthStatus.up(serviceName); | |
| } | |
| public List<HealthStatus> getSystemStatus() { | |
| return Collections.singletonList(HealthStatus.up("mock-system")); | |
| } | |
| public void registerHealthCheck(String name, String displayName, Supplier<HealthStatus> checker) { | |
| // No-op for testing | |
| } | |
| // Other methods can return default/empty values | |
| // Just implement the minimum required for tests to run | |
| public List<ResourceType> getSupportedResourceTypes() { | |
| return Collections.emptyList(); | |
| } | |
| public boolean isResourceTypeSupported(ResourceType resourceType) { | |
| return false; | |
| } | |
| public DiscoveryJob createDiscoveryCrawlerJob(String accountId, | |
| List<String> resourceTypeIds, Map<String, String> parameters, String jobName) { | |
| return null; | |
| } | |
| // Keep this for backward compatibility | |
| public DiscoveryJob createDiscoveryJob(String accountId, | |
| List<String> resourceTypeIds, Map<String, String> parameters) { | |
| return createDiscoveryCrawlerJob(accountId, resourceTypeIds, parameters, "DefaultJob"); | |
| } | |
| public CompletableFuture<DiscoveryJob> startDiscoveryJobAsync(UUID jobId) { | |
| return CompletableFuture.completedFuture(null); | |
| } | |
| public DiscoveryJob startDiscoveryJob(UUID jobId, Map<String, String> parameters) { | |
| return null; | |
| } | |
| public Optional<DiscoveryJob> getDiscoveryJob(String jobId) { | |
| return Optional.empty(); | |
| } | |
| public List<DiscoveryJob> getAllDiscoveryJobs() { | |
| return Collections.emptyList(); | |
| } | |
| public List<DiscoveryJob> getDiscoveryJobsByAccount(String accountId) { | |
| return Collections.emptyList(); | |
| } | |
| public boolean cancelDiscoveryJob(UUID jobId) { | |
| return false; | |
| } | |
| public boolean pauseDiscoveryJob(UUID jobId) { | |
| return false; | |
| } | |
| public boolean resumeDiscoveryJob(UUID jobId) { | |
| return false; | |
| } | |
| // Keep these for backward compatibility | |
| public boolean cancelDiscoveryJob(String jobId) { | |
| try { | |
| return cancelDiscoveryJob(UUID.fromString(jobId)); | |
| } catch (IllegalArgumentException e) { | |
| return false; | |
| } | |
| } | |
| public boolean pauseDiscoveryJob(String jobId) { | |
| try { | |
| return pauseDiscoveryJob(UUID.fromString(jobId)); | |
| } catch (IllegalArgumentException e) { | |
| return false; | |
| } | |
| } | |
| public boolean resumeDiscoveryJob(String jobId) { | |
| try { | |
| return resumeDiscoveryJob(UUID.fromString(jobId)); | |
| } catch (IllegalArgumentException e) { | |
| return false; | |
| } | |
| } | |
| public List<IResourceCrawler<CloudResource>> getCrawlers() { | |
| return Collections.emptyList(); | |
| } | |
| public List<IResourceCrawler<CloudResource>> getCrawlersByProvider( | |
| String cloudProvider) { | |
| return Collections.emptyList(); | |
| } | |
| public void registerCrawler(IResourceCrawler<CloudResource> crawler) { | |
| // No-op | |
| } | |
| public boolean unregisterCrawler(String crawlerName) { | |
| return false; | |
| } | |
| public java.util.Optional<CloudResourceDTO> getResource( | |
| String resourceId) { | |
| return java.util.Optional.empty(); | |
| } | |
| public boolean deleteResource(String resourceId) { | |
| return false; | |
| } | |
| public java.util.List<CloudResourceDTO> discoverResources(String accountId, | |
| String resourceType) { | |
| return java.util.Collections.emptyList(); | |
| } | |
| public CloudResourceDTO updateResourceProperties(String resourceId, | |
| java.util.Map<String, Object> properties) { | |
| return null; | |
| } | |
| public java.util.List<CloudResourceDTO> getResourcesByRegion( | |
| String region) { | |
| return java.util.Collections.emptyList(); | |
| } | |
| public java.util.List<CloudResourceDTO> getResourcesByType( | |
| String resourceType) { | |
| return java.util.Collections.emptyList(); | |
| } | |
| public JobStatisticsDTO getJobStatistics() { | |
| return new JobStatisticsDTO.Builder() | |
| .resourcesDiscovered(0) | |
| .resourcesAdded(0) | |
| .resourcesSkipped(0) | |
| .resourcesUpdated(0) | |
| .resourcesFailed(0) | |
| .resources(java.util.Collections.emptyList()) | |
| .build(); | |
| } | |
| public java.util.List<CloudResourceDTO> getResourcesByTags( | |
| java.util.Map<String, String> tags) { | |
| return java.util.Collections.emptyList(); | |
| } | |
| public CloudResourceDTO updateResourceTags(String resourceId, | |
| java.util.Map<String, String> tags) { | |
| return null; | |
| } | |
| } | |
| } |