mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
fix(nacos): Repair to create a large number of Nacos*Service problems
This commit is contained in:
commit
935f50f9ab
@ -127,3 +127,7 @@ spring-cloud-alibaba@googlegroups.com,欢迎通过此邮件列表讨论与 spr
|
||||

|
||||
|
||||
如图片有问题,访问 https://img.alicdn.com/tfs/TB1zrRie4v1gK0jSZFFXXb0sXXa-7862-3570.png
|
||||
|
||||
## 社区相关开源
|
||||
|
||||
**[Nepxion Discovery](https://github.com/Nepxion/Discovery)**:一款集成Spring Cloud Alibaba、Nacos、Sentinel等阿里巴巴中间件,实现网关和服务的灰度发布、路由、权重、限流、熔断、降级、隔离、监控、追踪等功能的微服务开源解决。使用指南 请参考 **[Nepxion Discovery Guide](https://github.com/Nepxion/DiscoveryGuide)**。
|
||||
|
8
eclipse/checkstyle-suppressions.xml
Normal file
8
eclipse/checkstyle-suppressions.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE suppressions PUBLIC
|
||||
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
|
||||
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
|
||||
<suppressions>
|
||||
<suppress files="[\\/]spring-cloud-alibaba-examples[\\/]" checks="HideUtilityClassConstructorCheck" />
|
||||
<suppress files=".*" checks="LineLength" />
|
||||
</suppressions>
|
18
pom.xml
18
pom.xml
@ -282,6 +282,24 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>checkstyle-validation</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<!-- Checkstyle rules inherited from spring-cloud-build -->
|
||||
<suppressionsLocation>eclipse/checkstyle-suppressions.xml</suppressionsLocation>
|
||||
<includeTestSourceDirectory>true</includeTestSourceDirectory>
|
||||
<consoleOutput>true</consoleOutput>
|
||||
<failsOnError>true</failsOnError>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
<violationSeverity>warning</violationSeverity>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<sentinel.version>1.6.3</sentinel.version>
|
||||
<oss.version>3.1.0</oss.version>
|
||||
<seata.version>0.9.0</seata.version>
|
||||
<nacos.client.version>1.1.1</nacos.client.version>
|
||||
<nacos.client.version>1.1.4</nacos.client.version>
|
||||
<nacos.config.version>0.8.0</nacos.config.version>
|
||||
<acm.version>1.0.9</acm.version>
|
||||
<ans.version>1.0.1</ans.version>
|
||||
@ -178,11 +178,6 @@
|
||||
<artifactId>sentinel-reactor-adapter</artifactId>
|
||||
<version>${sentinel.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>sentinel-dubbo-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.csp</groupId>
|
||||
<artifactId>sentinel-cluster-server-default</artifactId>
|
||||
@ -307,6 +302,11 @@
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>
|
||||
|
@ -505,6 +505,8 @@ public class DubboServiceDiscoveryAutoConfiguration {
|
||||
|
||||
private final NamingService namingService;
|
||||
|
||||
private final NacosDiscoveryProperties nacosDiscoveryProperties;
|
||||
|
||||
/**
|
||||
* the set of services is listening.
|
||||
*/
|
||||
@ -512,6 +514,7 @@ public class DubboServiceDiscoveryAutoConfiguration {
|
||||
|
||||
NacosConfiguration(NacosDiscoveryProperties nacosDiscoveryProperties) {
|
||||
this.namingService = nacosDiscoveryProperties.namingServiceInstance();
|
||||
this.nacosDiscoveryProperties = nacosDiscoveryProperties;
|
||||
this.listeningServices = new ConcurrentSkipListSet<>();
|
||||
}
|
||||
|
||||
@ -536,7 +539,8 @@ public class DubboServiceDiscoveryAutoConfiguration {
|
||||
private void subscribeEventListener(String serviceName) {
|
||||
if (listeningServices.add(serviceName)) {
|
||||
try {
|
||||
namingService.subscribe(serviceName, event -> {
|
||||
String group = nacosDiscoveryProperties.getGroup();
|
||||
namingService.subscribe(serviceName, group, event -> {
|
||||
if (event instanceof NamingEvent) {
|
||||
NamingEvent namingEvent = (NamingEvent) event;
|
||||
List<ServiceInstance> serviceInstances = hostToServiceInstanceList(
|
||||
|
@ -390,11 +390,9 @@ public class DubboServiceMetadataRepository
|
||||
return emptyList();
|
||||
}
|
||||
|
||||
return hasText(protocol)
|
||||
? urls.stream()
|
||||
.filter(url -> url.getProtocol().equalsIgnoreCase(protocol))
|
||||
.collect(Collectors.toList())
|
||||
: unmodifiableList(urls);
|
||||
return hasText(protocol) ? urls.stream()
|
||||
.filter(url -> url.getProtocol().equalsIgnoreCase(protocol))
|
||||
.collect(Collectors.toList()) : unmodifiableList(urls);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -19,7 +19,7 @@ package com.alibaba.cloud.dubbo.autoconfigure;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
/**
|
||||
* {@link DubboServiceRegistrationAutoConfiguration} Test
|
||||
* {@link DubboServiceRegistrationAutoConfiguration} Test.
|
||||
*
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
|
@ -26,7 +26,7 @@ import org.springframework.core.ResolvableType;
|
||||
import org.springframework.http.MediaType;
|
||||
|
||||
/**
|
||||
* {@link AbstractMediaTypeExpression} Test
|
||||
* {@link AbstractMediaTypeExpression} Test.
|
||||
*
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
|
@ -35,6 +35,9 @@ import org.springframework.context.annotation.Bean;
|
||||
@SpringBootApplication
|
||||
public class OssApplication {
|
||||
|
||||
/**
|
||||
* Bucket Name of OSS Example.
|
||||
*/
|
||||
public static final String BUCKET_NAME = "spring-cloud-alibaba-test";
|
||||
|
||||
public static void main(String[] args) throws URISyntaxException {
|
||||
|
@ -20,14 +20,29 @@ import java.io.Serializable;
|
||||
|
||||
public class Order implements Serializable {
|
||||
|
||||
/**
|
||||
* order id.
|
||||
*/
|
||||
public long id;
|
||||
|
||||
/**
|
||||
* user id.
|
||||
*/
|
||||
public String userId;
|
||||
|
||||
/**
|
||||
* commodity code.
|
||||
*/
|
||||
public String commodityCode;
|
||||
|
||||
/**
|
||||
* count.
|
||||
*/
|
||||
public int count;
|
||||
|
||||
/**
|
||||
* money.
|
||||
*/
|
||||
public int money;
|
||||
|
||||
@Override
|
||||
|
@ -20,14 +20,29 @@ import java.io.Serializable;
|
||||
|
||||
public class Order implements Serializable {
|
||||
|
||||
/**
|
||||
* id.
|
||||
*/
|
||||
public long id;
|
||||
|
||||
/**
|
||||
* user id.
|
||||
*/
|
||||
public String userId;
|
||||
|
||||
/**
|
||||
* commodity code.
|
||||
*/
|
||||
public String commodityCode;
|
||||
|
||||
/**
|
||||
* count.
|
||||
*/
|
||||
public int count;
|
||||
|
||||
/**
|
||||
* money.
|
||||
*/
|
||||
public int money;
|
||||
|
||||
@Override
|
||||
|
@ -25,7 +25,11 @@ import org.springframework.http.client.ClientHttpRequestExecution;
|
||||
/**
|
||||
* @author fangjian
|
||||
*/
|
||||
public class ExceptionUtil {
|
||||
public final class ExceptionUtil {
|
||||
|
||||
private ExceptionUtil() {
|
||||
|
||||
}
|
||||
|
||||
public static SentinelClientHttpResponse handleException(HttpRequest request,
|
||||
byte[] body, ClientHttpRequestExecution execution, BlockException ex) {
|
||||
|
@ -25,6 +25,7 @@
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>sentinel-dubbo-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -25,6 +25,7 @@
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>sentinel-dubbo-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -41,7 +42,6 @@
|
||||
<groupId>org.apache.dubbo</groupId>
|
||||
<artifactId>dubbo</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -33,7 +33,7 @@ public class EchoServiceFallback implements EchoService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用服务提供方的输出接口
|
||||
* 调用服务提供方的输出接口.
|
||||
* @param str 用户输入
|
||||
* @return
|
||||
*/
|
||||
|
@ -33,9 +33,9 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||
public interface EchoService {
|
||||
|
||||
/**
|
||||
* 调用服务提供方的输出接口
|
||||
* 调用服务提供方的输出接口.
|
||||
* @param str 用户输入
|
||||
* @return
|
||||
* @return echo result
|
||||
*/
|
||||
@GetMapping("/echo/{str}")
|
||||
String echo(@PathVariable("str") String str);
|
||||
|
@ -65,7 +65,7 @@ public class RocketMQBusApplication {
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
/**
|
||||
* Publish the {@link UserRemoteApplicationEvent}
|
||||
* Publish the {@link UserRemoteApplicationEvent}.
|
||||
* @param name the user name
|
||||
* @param destination the destination
|
||||
* @return If published
|
||||
@ -82,7 +82,7 @@ public class RocketMQBusApplication {
|
||||
}
|
||||
|
||||
/**
|
||||
* Listener on the {@link UserRemoteApplicationEvent}
|
||||
* Listener on the {@link UserRemoteApplicationEvent}.
|
||||
* @param event {@link UserRemoteApplicationEvent}
|
||||
*/
|
||||
@EventListener
|
||||
|
@ -23,7 +23,7 @@ import org.springframework.cloud.config.server.EnableConfigServer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
/**
|
||||
* Nacos Config Server Bootstrap
|
||||
* Nacos Config Server Bootstrap.
|
||||
*
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
* @since 0.2.0
|
||||
|
@ -37,7 +37,8 @@ public class NacosConfigBootstrapConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public NacosPropertySourceLocator nacosPropertySourceLocator(NacosConfigProperties nacosConfigProperties) {
|
||||
public NacosPropertySourceLocator nacosPropertySourceLocator(
|
||||
NacosConfigProperties nacosConfigProperties) {
|
||||
return new NacosPropertySourceLocator(nacosConfigProperties);
|
||||
}
|
||||
|
||||
|
@ -363,8 +363,10 @@ public class NacosConfigProperties {
|
||||
public ConfigService configServiceInstance() {
|
||||
if (null == configService) {
|
||||
try {
|
||||
configService = NacosFactory.createConfigService(getConfigServiceProperties());
|
||||
} catch (NacosException e) {
|
||||
configService = NacosFactory
|
||||
.createConfigService(getConfigServiceProperties());
|
||||
}
|
||||
catch (NacosException e) {
|
||||
log.error("create naming service error!properties={},e=,", this, e);
|
||||
return null;
|
||||
}
|
||||
|
@ -51,7 +51,8 @@ public class NacosConfigEndpointAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public NacosConfigHealthIndicator nacosConfigHealthIndicator() {
|
||||
return new NacosConfigHealthIndicator(nacosConfigProperties.configServiceInstance());
|
||||
return new NacosConfigHealthIndicator(
|
||||
nacosConfigProperties.configServiceInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -120,8 +120,8 @@ public class NacosServiceRegistry implements ServiceRegistry<Registration> {
|
||||
}
|
||||
|
||||
try {
|
||||
nacosDiscoveryProperties.namingMaintainServiceInstance().updateInstance(serviceId,
|
||||
instance);
|
||||
nacosDiscoveryProperties.namingMaintainServiceInstance()
|
||||
.updateInstance(serviceId, instance);
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new RuntimeException("update nacos instance status fail", e);
|
||||
|
@ -46,16 +46,17 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class NacosServiceRegistryAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public NacosServiceRegistry nacosServiceRegistry(NacosDiscoveryProperties nacosDiscoveryProperties) {
|
||||
public NacosServiceRegistry nacosServiceRegistry(
|
||||
NacosDiscoveryProperties nacosDiscoveryProperties) {
|
||||
return new NacosServiceRegistry(nacosDiscoveryProperties);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean(AutoServiceRegistrationProperties.class)
|
||||
public NacosRegistration nacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties,
|
||||
public NacosRegistration nacosRegistration(
|
||||
NacosDiscoveryProperties nacosDiscoveryProperties,
|
||||
ApplicationContext context) {
|
||||
return new NacosRegistration(nacosDiscoveryProperties,
|
||||
context);
|
||||
return new NacosRegistration(nacosDiscoveryProperties, context);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
@ -37,8 +37,7 @@ public class NacosRibbonClientConfiguration {
|
||||
@ConditionalOnMissingBean
|
||||
public ServerList<?> ribbonServerList(IClientConfig config,
|
||||
NacosDiscoveryProperties nacosDiscoveryProperties) {
|
||||
NacosServerList serverList = new NacosServerList(
|
||||
nacosDiscoveryProperties);
|
||||
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
|
||||
serverList.initWithNiwsConfig(config);
|
||||
return serverList;
|
||||
}
|
||||
|
@ -54,7 +54,8 @@ public class NacosRule extends AbstractLoadBalancerRule {
|
||||
DynamicServerListLoadBalancer loadBalancer = (DynamicServerListLoadBalancer) getLoadBalancer();
|
||||
String name = loadBalancer.getName();
|
||||
|
||||
NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
|
||||
NamingService namingService = nacosDiscoveryProperties
|
||||
.namingServiceInstance();
|
||||
List<Instance> instances = namingService.selectInstances(name, true);
|
||||
if (CollectionUtils.isEmpty(instances)) {
|
||||
LOGGER.warn("no instance in service {}", name);
|
||||
|
@ -68,7 +68,8 @@ public class NacosServiceDiscoveryTest {
|
||||
when(namingService.selectInstances(eq(serviceName), eq("DEFAULT"), eq(true)))
|
||||
.thenReturn(instances);
|
||||
|
||||
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(nacosDiscoveryProperties);
|
||||
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(
|
||||
nacosDiscoveryProperties);
|
||||
|
||||
List<ServiceInstance> serviceInstances = serviceDiscovery
|
||||
.getInstances(serviceName);
|
||||
@ -106,7 +107,8 @@ public class NacosServiceDiscoveryTest {
|
||||
when(namingService.getServicesOfServer(eq(1), eq(Integer.MAX_VALUE),
|
||||
eq("DEFAULT"))).thenReturn(nacosServices);
|
||||
|
||||
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(nacosDiscoveryProperties);
|
||||
NacosServiceDiscovery serviceDiscovery = new NacosServiceDiscovery(
|
||||
nacosDiscoveryProperties);
|
||||
|
||||
List<String> services = serviceDiscovery.getServices();
|
||||
|
||||
|
@ -176,13 +176,13 @@ public class NacosAutoServiceRegistrationTests {
|
||||
}
|
||||
|
||||
private void checkoutEndpoint() throws Exception {
|
||||
NacosDiscoveryEndpoint nacosDiscoveryEndpoint = new NacosDiscoveryEndpoint(properties);
|
||||
NacosDiscoveryEndpoint nacosDiscoveryEndpoint = new NacosDiscoveryEndpoint(
|
||||
properties);
|
||||
Map<String, Object> map = nacosDiscoveryEndpoint.nacosDiscovery();
|
||||
|
||||
assertThat(properties).isEqualTo(map.get("NacosDiscoveryProperties"));
|
||||
assertThat(
|
||||
properties.namingServiceInstance().getSubscribeServices().toString())
|
||||
.isEqualTo(map.get("subscribe").toString());
|
||||
assertThat(properties.namingServiceInstance().getSubscribeServices().toString())
|
||||
.isEqualTo(map.get("subscribe").toString());
|
||||
}
|
||||
|
||||
@Configuration
|
||||
|
@ -53,8 +53,7 @@ public class NacosServerListTests {
|
||||
when(namingService.selectInstances(anyString(), eq("DEFAULT"), eq(true)))
|
||||
.thenReturn(null);
|
||||
|
||||
NacosServerList serverList = new NacosServerList(
|
||||
nacosDiscoveryProperties);
|
||||
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
|
||||
List<NacosServer> servers = serverList.getInitialListOfServers();
|
||||
assertThat(servers).isEmpty();
|
||||
}
|
||||
@ -80,8 +79,7 @@ public class NacosServerListTests {
|
||||
|
||||
IClientConfig clientConfig = mock(IClientConfig.class);
|
||||
when(clientConfig.getClientName()).thenReturn("test-service");
|
||||
NacosServerList serverList = new NacosServerList(
|
||||
nacosDiscoveryProperties);
|
||||
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
|
||||
serverList.initWithNiwsConfig(clientConfig);
|
||||
List<NacosServer> servers = serverList.getInitialListOfServers();
|
||||
assertThat(servers).hasSize(1);
|
||||
@ -115,8 +113,7 @@ public class NacosServerListTests {
|
||||
|
||||
IClientConfig clientConfig = mock(IClientConfig.class);
|
||||
when(clientConfig.getClientName()).thenReturn("test-service");
|
||||
NacosServerList serverList = new NacosServerList(
|
||||
nacosDiscoveryProperties);
|
||||
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
|
||||
serverList.initWithNiwsConfig(clientConfig);
|
||||
List<NacosServer> servers = serverList.getInitialListOfServers();
|
||||
assertThat(servers).hasSize(1);
|
||||
@ -154,8 +151,7 @@ public class NacosServerListTests {
|
||||
|
||||
IClientConfig clientConfig = mock(IClientConfig.class);
|
||||
when(clientConfig.getClientName()).thenReturn("test-service");
|
||||
NacosServerList serverList = new NacosServerList(
|
||||
nacosDiscoveryProperties);
|
||||
NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties);
|
||||
serverList.initWithNiwsConfig(clientConfig);
|
||||
|
||||
List<NacosServer> servers = serverList.getUpdatedListOfServers();
|
||||
|
@ -24,7 +24,11 @@ import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||
/**
|
||||
* @author xiaojing
|
||||
*/
|
||||
public class NacosMockTest {
|
||||
public final class NacosMockTest {
|
||||
|
||||
private NacosMockTest() {
|
||||
|
||||
}
|
||||
|
||||
public static Instance serviceInstance(String serviceName, boolean isHealthy,
|
||||
Map<String, String> metadata) {
|
||||
|
@ -16,12 +16,14 @@
|
||||
|
||||
package com.alibaba.cloud.seata.web;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
*/
|
||||
@ConditionalOnWebApplication
|
||||
public class SeataHandlerInterceptorConfiguration implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
|
@ -30,6 +30,11 @@
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba.csp</groupId>
|
||||
<artifactId>sentinel-apache-dubbo-adapter</artifactId>
|
||||
|
@ -37,7 +37,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Add this unit test to verify https://github.com/alibaba/spring-cloud-alibaba/pull/838
|
||||
* Add this unit test to verify https://github.com/alibaba/spring-cloud-alibaba/pull/838.
|
||||
*
|
||||
* @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
|
||||
*/
|
||||
|
@ -23,7 +23,11 @@ import com.alibaba.ans.shaded.com.taobao.vipserver.client.core.Host;
|
||||
/**
|
||||
* @author xiaojing
|
||||
*/
|
||||
public class AnsMockTest {
|
||||
public final class AnsMockTest {
|
||||
|
||||
private AnsMockTest() {
|
||||
|
||||
}
|
||||
|
||||
public static Host hostInstance(String serviceName, boolean valid,
|
||||
Map<String, String> metadata) {
|
||||
|
@ -27,7 +27,7 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* {@link OSS} {@link OssProperties} Test
|
||||
* {@link OSS} {@link OssProperties} Test.
|
||||
*
|
||||
* @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user