diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e92c8b79..2335e4f51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3 +3,4 @@ - [feat: upgrade springdoc to 1.8.0.](https://github.com/Tencent/spring-cloud-tencent/pull/1737) - [refactor:optimize auto configuration.](https://github.com/Tencent/spring-cloud-tencent/pull/1740) +- [refactor:optimize config locate.](https://github.com/Tencent/spring-cloud-tencent/pull/1742) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java index 23d8ae67b..f4e31650c 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java @@ -17,20 +17,14 @@ package com.tencent.cloud.polaris.config.adapter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedList; import java.util.List; -import com.tencent.cloud.common.util.EnvironmentUtils; import com.tencent.cloud.polaris.config.config.ConfigFileGroup; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.api.utils.CollectionUtils; import com.tencent.polaris.api.utils.StringUtils; -import com.tencent.polaris.configuration.api.core.ConfigFileMetadata; import com.tencent.polaris.configuration.api.core.ConfigFileService; -import com.tencent.polaris.configuration.client.internal.DefaultConfigFileMetadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,9 +34,6 @@ import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.Environment; import org.springframework.core.env.PropertySource; -import static com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils.loadGroupPolarisPropertySource; -import static com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils.loadPolarisPropertySource; - /** * Spring cloud reserved core configuration loading SPI. *

@@ -60,6 +51,7 @@ public class PolarisConfigFileLocator implements PropertySourceLocator { private final PolarisConfigProperties polarisConfigProperties; private final PolarisContextProperties polarisContextProperties; private final ConfigFileService configFileService; + private final PolarisConfigFilePuller puller; private final Environment environment; // this class provides customized logic for some customers to configure special business group files private final PolarisConfigCustomExtensionLayer polarisConfigCustomExtensionLayer = PolarisServiceLoaderUtil.getPolarisConfigCustomExtensionLayer(); @@ -69,6 +61,7 @@ public class PolarisConfigFileLocator implements PropertySourceLocator { this.polarisConfigProperties = polarisConfigProperties; this.polarisContextProperties = polarisContextProperties; this.configFileService = configFileService; + this.puller = PolarisConfigFilePuller.get(polarisContextProperties, configFileService); this.environment = environment; } @@ -94,10 +87,7 @@ public class PolarisConfigFileLocator implements PropertySourceLocator { // load spring boot default config files initInternalConfigFiles(compositePropertySource); // load custom config files - List configFileGroups = polarisConfigProperties.getGroups(); - if (CollectionUtils.isNotEmpty(configFileGroups)) { - initCustomPolarisConfigFiles(compositePropertySource, configFileGroups); - } + initCustomPolarisConfigFiles(compositePropertySource); // load tsf default config group initTsfConfigGroups(compositePropertySource); return compositePropertySource; @@ -129,142 +119,24 @@ public class PolarisConfigFileLocator implements PropertySourceLocator { if (!polarisConfigProperties.isInternalEnabled()) { return; } - List internalConfigFiles = getInternalConfigFiles(); - - for (ConfigFileMetadata configFile : internalConfigFiles) { - if (StringUtils.isEmpty(configFile.getFileGroup())) { - continue; - } - PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(configFileService, configFile.getNamespace(), configFile.getFileGroup(), configFile.getFileName()); - - compositePropertySource.addPropertySource(polarisPropertySource); - - PolarisPropertySourceManager.addPropertySource(polarisPropertySource); - - LOGGER.info("[SCT Config] Load and inject polaris config file. file = {}", configFile); - } - } - - private List getInternalConfigFiles() { - String namespace = polarisContextProperties.getNamespace(); - String serviceName = polarisContextProperties.getService(); - if (StringUtils.isBlank(serviceName)) { - serviceName = environment.getProperty("spring.application.name"); - } - - List internalConfigFiles = new LinkedList<>(); - // priority: application-${profile} > application > boostrap-${profile} > boostrap String[] activeProfiles = environment.getActiveProfiles(); String[] defaultProfiles = environment.getDefaultProfiles(); - List profileList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(activeProfiles)) { - profileList.addAll(Arrays.asList(activeProfiles)); - } - else if (CollectionUtils.isNotEmpty(defaultProfiles)) { - profileList.addAll(Arrays.asList(defaultProfiles)); - } - // build application config files - buildInternalApplicationConfigFiles(internalConfigFiles, namespace, serviceName, profileList); - // build bootstrap config files - buildInternalBootstrapConfigFiles(internalConfigFiles, namespace, serviceName, profileList); - - return internalConfigFiles; - } - - private void buildInternalApplicationConfigFiles(List internalConfigFiles, String namespace, String serviceName, List profileList) { - for (String profile : profileList) { - if (StringUtils.isBlank(profile)) { - continue; - } - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".yml")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application-" + profile + ".yaml")); - } - // build default config properties files. - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.yml")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "application.yaml")); - } - - private void buildInternalBootstrapConfigFiles(List internalConfigFiles, String namespace, String serviceName, List profileList) { - for (String profile : profileList) { - if (StringUtils.isBlank(profile)) { - continue; - } - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".yml")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap-" + profile + ".yaml")); + String serviceName = polarisContextProperties.getService(); + if (StringUtils.isBlank(serviceName)) { + serviceName = environment.getProperty("spring.application.name"); } - // build default config properties files. - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.properties")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.yml")); - internalConfigFiles.add(new DefaultConfigFileMetadata(namespace, serviceName, "bootstrap.yaml")); + this.puller.initInternalConfigFiles(compositePropertySource, activeProfiles, defaultProfiles, serviceName); } - void initTsfConfigGroups(CompositePropertySource compositePropertySource) { - String tsfId = environment.getProperty("tsf_id"); - String tsfNamespaceName = environment.getProperty("tsf_namespace_name"); - String tsfGroupName = environment.getProperty("tsf_group_name"); - - if (StringUtils.isEmpty(tsfNamespaceName) || StringUtils.isEmpty(tsfGroupName)) { - return; - } - String namespace = polarisContextProperties.getNamespace(); - List tsfConfigGroups = new ArrayList<>(); - tsfConfigGroups.add((StringUtils.isNotBlank(tsfId) ? tsfId + "." : "") + tsfGroupName + ".application_config_group"); - tsfConfigGroups.add((StringUtils.isNotBlank(tsfId) ? tsfId + "." : "") + tsfNamespaceName + ".global_config_group"); - - if (EnvironmentUtils.isGateway()) { - tsfConfigGroups.add((StringUtils.isNotBlank(tsfId) ? tsfId + "." : "") + tsfGroupName + ".gateway_config_group"); - } - for (String tsfConfigGroup : tsfConfigGroups) { - PolarisPropertySource polarisPropertySource = loadGroupPolarisPropertySource(configFileService, namespace, tsfConfigGroup); - if (polarisPropertySource == null) { - // not register to polaris - continue; - } - compositePropertySource.addPropertySource(polarisPropertySource); - PolarisPropertySourceManager.addPropertySource(polarisPropertySource); + private void initCustomPolarisConfigFiles(CompositePropertySource compositePropertySource) { + List configFileGroups = polarisConfigProperties.getGroups(); + if (CollectionUtils.isNotEmpty(configFileGroups)) { + this.puller.initCustomPolarisConfigFiles(compositePropertySource, configFileGroups); } } - private void initCustomPolarisConfigFiles(CompositePropertySource compositePropertySource, List configFileGroups) { - String namespace = polarisContextProperties.getNamespace(); - - for (ConfigFileGroup configFileGroup : configFileGroups) { - String groupNamespace = configFileGroup.getNamespace(); - if (StringUtils.isBlank(groupNamespace)) { - groupNamespace = namespace; - } - - String group = configFileGroup.getName(); - if (StringUtils.isBlank(group)) { - continue; - } - - List files = configFileGroup.getFiles(); - - if (CollectionUtils.isEmpty(files)) { - PolarisPropertySource polarisPropertySource = loadGroupPolarisPropertySource(configFileService, namespace, group); - if (polarisPropertySource == null) { - continue; - } - compositePropertySource.addPropertySource(polarisPropertySource); - PolarisPropertySourceManager.addPropertySource(polarisPropertySource); - LOGGER.info("[SCT Config] Load and inject polaris config file success. namespace = {}, group = {}", namespace, group); - } - else { - for (String fileName : files) { - PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(configFileService, groupNamespace, group, fileName); - - compositePropertySource.addPropertySource(polarisPropertySource); - - PolarisPropertySourceManager.addPropertySource(polarisPropertySource); - - LOGGER.info("[SCT Config] Load and inject polaris config file success. namespace = {}, group = {}, fileName = {}", groupNamespace, group, fileName); - } - } - } + private void initTsfConfigGroups(CompositePropertySource compositePropertySource) { + this.puller.initTsfConfigGroups(compositePropertySource); } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePuller.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePuller.java index c116d0621..a11881820 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePuller.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePuller.java @@ -31,9 +31,11 @@ import com.tencent.polaris.api.utils.StringUtils; import com.tencent.polaris.configuration.api.core.ConfigFileMetadata; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.client.internal.DefaultConfigFileMetadata; +import org.apache.commons.logging.Log; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.boot.logging.DeferredLogFactory; import org.springframework.core.env.CompositePropertySource; import static com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils.loadGroupPolarisPropertySource; @@ -46,7 +48,9 @@ import static com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils. */ public final class PolarisConfigFilePuller { - private static final Logger LOGGER = LoggerFactory.getLogger(PolarisConfigFileLocator.class); + private static final Logger LOGGER = LoggerFactory.getLogger(PolarisConfigFilePuller.class); + + private static Log log; private PolarisContextProperties polarisContextProperties; @@ -55,6 +59,10 @@ public final class PolarisConfigFilePuller { private PolarisConfigFilePuller() { } + public static PolarisConfigFilePuller get(PolarisContextProperties polarisContextProperties, ConfigFileService configFileService) { + return get(polarisContextProperties, configFileService, null); + } + /** * Factory method to create PolarisConfigFilePuller for * {@link PolarisConfigDataLoader},{@link PolarisConfigFileLocator}. @@ -63,13 +71,26 @@ public final class PolarisConfigFilePuller { * @param configFileService configFileService * @return PolarisConfigFilePuller instance */ - public static PolarisConfigFilePuller get(PolarisContextProperties polarisContextProperties, ConfigFileService configFileService) { + public static PolarisConfigFilePuller get(PolarisContextProperties polarisContextProperties, + ConfigFileService configFileService, DeferredLogFactory logFactory) { PolarisConfigFilePuller puller = new PolarisConfigFilePuller(); puller.polarisContextProperties = polarisContextProperties; puller.configFileService = configFileService; + if (logFactory != null) { + log = logFactory.getLog(PolarisConfigFilePuller.class); + } return puller; } + private static void logInfo(String msg) { + if (log != null) { + log.info(msg); + } + else { + LOGGER.info(msg); + } + } + /** * InitInternalConfigFiles for {@link PolarisConfigDataLoader}. * @@ -80,13 +101,14 @@ public final class PolarisConfigFilePuller { */ public void initInternalConfigFiles(CompositePropertySource compositePropertySource, String[] activeProfiles, String[] defaultProfiles, String serviceName) { + logInfo("[SCT Config] Loading polaris internal config files"); List internalConfigFiles = getInternalConfigFiles(activeProfiles, defaultProfiles, serviceName); for (ConfigFileMetadata configFile : internalConfigFiles) { PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(configFileService, configFile.getNamespace(), configFile.getFileGroup(), configFile.getFileName()); compositePropertySource.addPropertySource(polarisPropertySource); PolarisPropertySourceManager.addPropertySource(polarisPropertySource); - LOGGER.info("[SCT Config] Load and inject polaris config file. file = {}", configFile); + logInfo(String.format("[SCT Config] Load and inject polaris internal config file success. file = %s", configFile)); } } @@ -98,6 +120,7 @@ public final class PolarisConfigFilePuller { */ public void initCustomPolarisConfigFiles(CompositePropertySource compositePropertySource, List configFileGroups) { + logInfo("[SCT Config] Loading polaris custom config files"); configFileGroups.forEach( configFileGroup -> initCustomPolarisConfigFile(compositePropertySource, configFileGroup) ); @@ -121,15 +144,21 @@ public final class PolarisConfigFilePuller { } List files = configFileGroup.getFiles(); if (CollectionUtils.isEmpty(files)) { - return; - } - for (String fileName : files) { - PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(configFileService, groupNamespace, group, fileName); + PolarisPropertySource polarisPropertySource = loadGroupPolarisPropertySource(configFileService, groupNamespace, group); + if (polarisPropertySource == null) { + return; + } compositePropertySource.addPropertySource(polarisPropertySource); PolarisPropertySourceManager.addPropertySource(polarisPropertySource); - LOGGER.info( - "[SCT Config] Load and inject polaris config file success. namespace = {}, group = {}, fileName = {}", - groupNamespace, group, fileName); + logInfo(String.format("[SCT Config] Load and inject polaris custom group config file success. namespace = %s, group = %s", groupNamespace, group)); + } + else { + for (String fileName : files) { + PolarisPropertySource polarisPropertySource = loadPolarisPropertySource(configFileService, groupNamespace, group, fileName); + compositePropertySource.addPropertySource(polarisPropertySource); + PolarisPropertySourceManager.addPropertySource(polarisPropertySource); + logInfo(String.format("[SCT Config] Load and inject polaris custom config file success. namespace = %s, group = %s, fileName = %s", groupNamespace, group, fileName)); + } } } @@ -145,6 +174,7 @@ public final class PolarisConfigFilePuller { if (StringUtils.isEmpty(tsfNamespaceName) || StringUtils.isEmpty(tsfGroupName)) { return; } + logInfo("[SCT Config] Loading tsf config files"); String namespace = polarisContextProperties.getNamespace(); List tsfConfigGroups = new ArrayList<>(); tsfConfigGroups.add((StringUtils.isNotBlank(tsfId) ? tsfId + "." : "") + tsfGroupName + ".application_config_group"); @@ -161,6 +191,7 @@ public final class PolarisConfigFilePuller { } compositePropertySource.addPropertySource(polarisPropertySource); PolarisPropertySourceManager.addPropertySource(polarisPropertySource); + logInfo(String.format("[SCT Config] Load and inject tsf config file success. namespace = %s, group = %s", namespace, tsfConfigGroup)); } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java index 5f2b2c3a4..c71d40931 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoader.java @@ -28,12 +28,13 @@ import com.tencent.cloud.polaris.config.adapter.PolarisConfigFilePuller; import com.tencent.cloud.polaris.config.adapter.PolarisServiceLoaderUtil; import com.tencent.cloud.polaris.config.config.ConfigFileGroup; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; +import com.tencent.polaris.api.utils.CollectionUtils; +import com.tencent.polaris.api.utils.StringUtils; import com.tencent.polaris.client.api.SDKContext; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.factory.ConfigFileServiceFactory; import org.apache.commons.logging.Log; -import org.springframework.boot.ConfigurableBootstrapContext; import org.springframework.boot.context.config.ConfigData; import org.springframework.boot.context.config.ConfigDataLoader; import org.springframework.boot.context.config.ConfigDataLoaderContext; @@ -42,8 +43,6 @@ import org.springframework.boot.context.config.Profiles; import org.springframework.boot.logging.DeferredLogFactory; import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.PropertySource; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import static org.springframework.boot.context.config.ConfigData.Option.IGNORE_IMPORTS; import static org.springframework.boot.context.config.ConfigData.Option.IGNORE_PROFILES; @@ -61,13 +60,16 @@ public class PolarisConfigDataLoader implements ConfigDataLoader> propertySourceList = new ArrayList<>(compositePropertySource.getPropertySources()); Collections.reverse(propertySourceList); return new ConfigData(propertySourceList, getOptions(resource)); } - private CompositePropertySource locate(ConfigurableBootstrapContext bootstrapContext, - PolarisConfigDataResource resource) { + private CompositePropertySource locate(PolarisConfigDataResource resource) { CompositePropertySource compositePropertySource = new CompositePropertySource( POLARIS_CONFIG_PROPERTY_SOURCE_NAME); SDKContext sdkContext = PolarisConfigSDKContextManager.innerGetConfigSDKContext(); @@ -102,41 +103,76 @@ public class PolarisConfigDataLoader implements ConfigDataLoader mockedStatic = mockStatic(PolarisPropertySourceUtils.class)) { - mockedStatic.when(() -> PolarisPropertySourceUtils.loadGroupPolarisPropertySource( - eq(configFileService), - eq(polarisNamespace), - any() - )).thenReturn(mockPropertySource); - - PolarisConfigFileLocator locator = new PolarisConfigFileLocator( - polarisConfigProperties, - polarisContextProperties, - configFileService, - environment - ); - // Act - locator.initTsfConfigGroups(compositePropertySource); - - // Verify - List polarisPropertySources = PolarisPropertySourceManager.getAllPropertySources(); - assertThat(polarisPropertySources.stream().map(PolarisPropertySource::getPropertySourceName). - filter(name -> name.equals(expectedAppConfigGroup)).count() == 1); - } - } - @Test void testPolarisConfigProperties() { PolarisConfigProperties testProperties = new PolarisConfigProperties(); diff --git a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePullerTest.java b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePullerTest.java index 1d3a1b782..3ee200ba6 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePullerTest.java +++ b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFilePullerTest.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import com.tencent.cloud.polaris.config.config.ConfigFileGroup; +import com.tencent.cloud.polaris.config.utils.PolarisPropertySourceUtils; import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.api.core.ConfigKVFile; @@ -30,11 +31,16 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.core.env.CompositePropertySource; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.when; /** @@ -175,4 +181,44 @@ public class PolarisConfigFilePullerTest { assertThat(compositePropertySource.getProperty("k2")).isEqualTo("v2"); assertThat(compositePropertySource.getProperty("k3")).isEqualTo("v3"); } + + @Test + void testInitTsfConfigGroupsSuccessfulLoad() { + PolarisConfigFilePuller puller = PolarisConfigFilePuller.get(polarisContextProperties, configFileService); + + // Arrange + String tsfId = "test-id"; + String tsfNamespace = "test-namespace"; + String tsfGroup = "test-group"; + String polarisNamespace = "polaris-namespace"; + + System.setProperty("tsf_id", tsfId); + System.setProperty("tsf_namespace_name", tsfNamespace); + System.setProperty("tsf_group_name", tsfGroup); + + when(polarisContextProperties.getNamespace()).thenReturn(polarisNamespace); + + String expectedAppConfigGroup = tsfId + "." + tsfGroup + ".application_config_group"; + + // mock polaris config properties + PolarisPropertySource mockPropertySource = mock(PolarisPropertySource.class); + when(mockPropertySource.getPropertySourceName()).thenReturn(expectedAppConfigGroup); + + CompositePropertySource compositePropertySource = mock(CompositePropertySource.class); + try (MockedStatic mockedStatic = mockStatic(PolarisPropertySourceUtils.class)) { + mockedStatic.when(() -> PolarisPropertySourceUtils.loadGroupPolarisPropertySource( + eq(configFileService), + eq(polarisNamespace), + any() + )).thenReturn(mockPropertySource); + + // Act + puller.initTsfConfigGroups(compositePropertySource); + + // Verify + List polarisPropertySources = PolarisPropertySourceManager.getAllPropertySources(); + assertThat(polarisPropertySources.stream().map(PolarisPropertySource::getPropertySourceName). + filter(name -> name.equals(expectedAppConfigGroup)).count() == 1); + } + } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java index f7fdb2adf..9bdec9385 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java +++ b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/configdata/PolarisConfigDataLoaderTest.java @@ -37,7 +37,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.MockedStatic; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.boot.ConfigurableBootstrapContext; import org.springframework.boot.context.config.ConfigData; import org.springframework.boot.context.config.ConfigDataLoaderContext; import org.springframework.boot.context.config.Profiles; @@ -82,7 +81,6 @@ public class PolarisConfigDataLoaderTest { try (MockedStatic mockedStatic = mockStatic(ConfigFileServiceFactory.class)) { ConfigDataLoaderContext context = mock(ConfigDataLoaderContext.class); PolarisConfigDataResource polarisConfigDataResource = mock(PolarisConfigDataResource.class); - ConfigurableBootstrapContext bootstrapContext = mock(ConfigurableBootstrapContext.class); PolarisConfigProperties polarisConfigProperties = mock(PolarisConfigProperties.class); PolarisContextProperties polarisContextProperties = mock(PolarisContextProperties.class); ConfigFileService configFileService = mock(ConfigFileService.class); @@ -101,7 +99,6 @@ public class PolarisConfigDataLoaderTest { ConfigKVFile propertiesFile = new MockedConfigKVFile(applicationProperties); when(configFileService.getConfigPropertiesFile(testNamespace, testServiceName, "application.properties")) .thenReturn(propertiesFile); - when(context.getBootstrapContext()).thenReturn(bootstrapContext); when(polarisContextProperties.getNamespace()).thenReturn(testNamespace); when(polarisContextProperties.getService()).thenReturn(testServiceName); @@ -141,7 +138,6 @@ public class PolarisConfigDataLoaderTest { try (MockedStatic mockedStatic = mockStatic(ConfigFileServiceFactory.class)) { ConfigDataLoaderContext context = mock(ConfigDataLoaderContext.class); PolarisConfigDataResource polarisConfigDataResource = mock(PolarisConfigDataResource.class); - ConfigurableBootstrapContext bootstrapContext = mock(ConfigurableBootstrapContext.class); PolarisConfigProperties polarisConfigProperties = mock(PolarisConfigProperties.class); PolarisContextProperties polarisContextProperties = mock(PolarisContextProperties.class); ConfigFileService configFileService = mock(ConfigFileService.class); @@ -180,8 +176,6 @@ public class PolarisConfigDataLoaderTest { active.add("dev"); when(profiles.getActive()).thenReturn(active); - when(context.getBootstrapContext()).thenReturn(bootstrapContext); - when(polarisContextProperties.getNamespace()).thenReturn(testNamespace); when(polarisContextProperties.getService()).thenReturn(testServiceName); @@ -221,7 +215,6 @@ public class PolarisConfigDataLoaderTest { try (MockedStatic mockedStatic = mockStatic(ConfigFileServiceFactory.class)) { ConfigDataLoaderContext context = mock(ConfigDataLoaderContext.class); PolarisConfigDataResource polarisConfigDataResource = mock(PolarisConfigDataResource.class); - ConfigurableBootstrapContext bootstrapContext = mock(ConfigurableBootstrapContext.class); PolarisConfigProperties polarisConfigProperties = mock(PolarisConfigProperties.class); PolarisContextProperties polarisContextProperties = mock(PolarisContextProperties.class); ConfigFileService configFileService = mock(ConfigFileService.class); @@ -253,8 +246,6 @@ public class PolarisConfigDataLoaderTest { ConfigKVFile file1 = new MockedConfigKVFile(file1Map); when(configFileService.getConfigPropertiesFile(testNamespace, customGroup, customFile1)).thenReturn(file1); - when(context.getBootstrapContext()).thenReturn(bootstrapContext); - when(polarisContextProperties.getNamespace()).thenReturn(testNamespace); when(polarisContextProperties.getService()).thenReturn(testServiceName);