You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ya...@apache.org on 2020/03/09 16:14:51 UTC
[servicecomb-java-chassis] 02/19: [SCB-1691] Decouple the
ServiceRegistry and other modules
This is an automated email from the ASF dual-hosted git repository.
yaohaishi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit d6cbf86cc4d3b9d854456a393fd3c2965e43eb17
Author: yhs0092 <yh...@163.com>
AuthorDate: Wed Feb 5 15:23:57 2020 +0800
[SCB-1691] Decouple the ServiceRegistry and other modules
- DiscoveryTree get InstanceCacheManager from RegistryUtils directly
- SwaggerLoader don't rely on ServiceRegistry directly
- AppManager does not refer to ServiceRegistry directly
- ServiceRegistry does not hold AppManager
- ServiceRegistry does not hold InstanceCacheManager
- ServiceRegistryFactory doesn't hold the instance of ServiceRegistry
- SCBEngine doesn't hold ServiceRegistry instance directly
---
.../org/apache/servicecomb/core/SCBEngine.java | 22 +++++-------
.../consumer/MicroserviceReferenceConfig.java | 2 +-
.../handler/impl/TestSimpleLoadBalanceHandler.java | 5 +--
.../servicecomb/demo/edge/consumer/Consumer.java | 2 +-
.../jaxrs/client/MultiErrorCodeServiceClient.java | 2 +-
.../loadbalance/TestLoadBalanceHandler2.java | 21 +++++++----
.../loadbalance/TestLoadbalanceHandler.java | 3 +-
.../java/org/apache/servicecomb/it/ITUtils.java | 4 +--
.../servicecomb/it/deploy/MicroserviceDeploy.java | 2 +-
.../it/extend/engine/GateRestTemplate.java | 2 +-
.../it/extend/engine/ITSCBAsyncRestTemplate.java | 4 +--
.../it/extend/engine/ITSCBRestTemplate.java | 2 +-
.../servicecomb/it/edge/PreLoadBootListener.java | 2 +-
.../async/CseAsyncClientHttpRequestTest.java | 7 +++-
.../servicecomb/serviceregistry/RegistryUtils.java | 33 ++++++++++++++---
.../serviceregistry/ServiceRegistry.java | 20 +++++------
.../serviceregistry/consumer/AppManager.java | 14 ++------
.../consumer/MicroserviceVersion.java | 6 ++--
.../consumer/MicroserviceVersions.java | 5 +--
.../consumer/StaticMicroserviceVersions.java | 5 +--
.../diagnosis/instance/InstanceCacheCheckTask.java | 3 +-
.../serviceregistry/discovery/DiscoveryTree.java | 1 -
.../registry/AbstractServiceRegistry.java | 42 +++++-----------------
.../registry/RemoteServiceRegistry.java | 3 +-
.../registry/ServiceRegistryFactory.java | 20 -----------
.../serviceregistry/swagger/SwaggerLoader.java | 17 ++++-----
.../serviceregistry/MockMicroserviceVersions.java | 9 ++---
.../servicecomb/serviceregistry/TestConsumers.java | 4 +--
.../servicecomb/serviceregistry/TestRegistry.java | 1 -
.../serviceregistry/TestRegistryBase.java | 14 ++++----
.../instance/TestInstanceCacheChecker.java | 18 ++++++----
.../discovery/TestDiscoveryTree.java | 17 +++------
.../registry/TestServiceRegistryFactory.java | 8 ++---
.../serviceregistry/swagger/TestSwaggerLoader.java | 35 +++++++++---------
34 files changed, 166 insertions(+), 189 deletions(-)
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index 915610b..e704efe 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -103,8 +103,6 @@ public class SCBEngine {
private volatile SCBStatus status = SCBStatus.DOWN;
- private ServiceRegistry serviceRegistry;
-
private EventBus eventBus;
private ExecutorManager executorManager = new ExecutorManager();
@@ -123,8 +121,7 @@ public class SCBEngine {
private Thread shutdownHook;
protected SCBEngine() {
- serviceRegistry = RegistryUtils.getServiceRegistry();
- eventBus = serviceRegistry.getEventBus();
+ eventBus = EventManager.getEventBus();
// see SCB-1266, fix Log4j2 leak marker problem
LogMarkerLeakFixUtils.fix();
@@ -142,7 +139,7 @@ public class SCBEngine {
}
public String getAppId() {
- return serviceRegistry.getAppId();
+ return RegistryUtils.getAppId();
}
public void setStatus(SCBStatus status) {
@@ -165,11 +162,11 @@ public class SCBEngine {
}
public ServiceRegistry getServiceRegistry() {
- return serviceRegistry;
+ return RegistryUtils.getServiceRegistry();
}
public SwaggerLoader getSwaggerLoader() {
- return serviceRegistry.getSwaggerLoader();
+ return RegistryUtils.getSwaggerLoader();
}
public ConsumerHandlerManager getConsumerHandlerManager() {
@@ -324,13 +321,12 @@ public class SCBEngine {
LOGGER.info(serviceInfo.toString());
}
-
private void doRun() throws Exception {
status = SCBStatus.STARTING;
bootListeners.sort(Comparator.comparingInt(BootListener::getOrder));
- AbstractEndpointsCache.init(serviceRegistry.getInstanceCacheManager(), transportManager);
+ AbstractEndpointsCache.init(RegistryUtils.getInstanceCacheManager(), transportManager);
triggerEvent(EventType.BEFORE_HANDLER);
HandlerConfigUtils.init(consumerHandlerManager, producerHandlerManager);
@@ -354,14 +350,14 @@ public class SCBEngine {
triggerAfterRegistryEvent();
- serviceRegistry.run();
+ RegistryUtils.run();
shutdownHook = new Thread(this::destroyForShutdownHook);
Runtime.getRuntime().addShutdownHook(shutdownHook);
}
private void createProducerMicroserviceMeta() {
- String microserviceName = serviceRegistry.getMicroservice().getServiceName();
+ String microserviceName = RegistryUtils.getMicroservice().getServiceName();
List<Handler> consumerHandlerChain = consumerHandlerManager.getOrCreate(microserviceName);
List<Handler> producerHandlerChain = producerHandlerManager.getOrCreate(microserviceName);
@@ -399,7 +395,7 @@ public class SCBEngine {
//Step 3: Unregister microservice instance from Service Center and close vertx
// Forbidden other consumers find me
- serviceRegistry.destroy();
+ RegistryUtils.destroy();
VertxUtils.blockCloseVertxByName("registry");
serviceRegistryListener.destroy();
@@ -464,7 +460,7 @@ public class SCBEngine {
* @return
*/
public MicroserviceReferenceConfig createMicroserviceReferenceConfig(String microserviceName, String versionRule) {
- MicroserviceVersions microserviceVersions = serviceRegistry.getAppManager()
+ MicroserviceVersions microserviceVersions = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersions(parseAppId(microserviceName), microserviceName);
ConsumerMicroserviceVersionsMeta microserviceVersionsMeta = CoreMetaUtils
.getMicroserviceVersionsMeta(microserviceVersions);
diff --git a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/MicroserviceReferenceConfig.java b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/MicroserviceReferenceConfig.java
index d6f5740..feaf882 100644
--- a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/MicroserviceReferenceConfig.java
+++ b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/MicroserviceReferenceConfig.java
@@ -100,7 +100,7 @@ public class MicroserviceReferenceConfig {
}
private void mark3rdPartyService(OperationMeta operationMeta, ReferenceConfig referenceConfig) {
- final MicroserviceVersions microserviceVersions = RegistryUtils.getServiceRegistry().getAppManager()
+ final MicroserviceVersions microserviceVersions = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersions(
operationMeta.getMicroserviceMeta().getAppId(),
operationMeta.getMicroserviceName());
diff --git a/core/src/test/java/org/apache/servicecomb/core/handler/impl/TestSimpleLoadBalanceHandler.java b/core/src/test/java/org/apache/servicecomb/core/handler/impl/TestSimpleLoadBalanceHandler.java
index fc4545a..3f6c708 100644
--- a/core/src/test/java/org/apache/servicecomb/core/handler/impl/TestSimpleLoadBalanceHandler.java
+++ b/core/src/test/java/org/apache/servicecomb/core/handler/impl/TestSimpleLoadBalanceHandler.java
@@ -27,6 +27,7 @@ import org.apache.servicecomb.core.Transport;
import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
import org.apache.servicecomb.foundation.common.cache.VersionedCache;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.discovery.DiscoveryFilter;
import org.apache.servicecomb.swagger.invocation.AsyncResponse;
@@ -67,9 +68,9 @@ public class TestSimpleLoadBalanceHandler {
}
};
- new Expectations(scbEngine.getServiceRegistry().getInstanceCacheManager()) {
+ new Expectations(RegistryUtils.getInstanceCacheManager()) {
{
- scbEngine.getServiceRegistry().getInstanceCacheManager()
+ RegistryUtils.getInstanceCacheManager()
.getOrCreateVersionedCache(anyString, anyString, anyString);
result = instanceVersionedCache;
}
diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
index 7117f07..7d5d567 100644
--- a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
+++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
@@ -264,7 +264,7 @@ public class Consumer {
private URIEndpointObject prepareEdge(String prefix) {
Microservice microservice = RegistryUtils.getMicroservice();
- MicroserviceInstance microserviceInstance = (MicroserviceInstance) RegistryUtils.getServiceRegistry()
+ MicroserviceInstance microserviceInstance = (MicroserviceInstance) RegistryUtils
.getAppManager()
.getOrCreateMicroserviceVersionRule(microservice.getAppId(), "edge", DefinitionConst.VERSION_RULE_ALL)
.getVersionedCache()
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
index a58cbc5..3a7ec70 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
@@ -78,7 +78,7 @@ public class MultiErrorCodeServiceClient implements CategorizedTestCase {
private static void prepareServerDirectURL() {
Microservice microservice = RegistryUtils.getMicroservice();
- MicroserviceInstance microserviceInstance = (MicroserviceInstance) RegistryUtils.getServiceRegistry()
+ MicroserviceInstance microserviceInstance = (MicroserviceInstance) RegistryUtils
.getAppManager()
.getOrCreateMicroserviceVersionRule(microservice.getAppId(), "jaxrs", DefinitionConst.VERSION_RULE_ALL)
.getVersionedCache()
diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java
index e340577..2edc5bd 100644
--- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java
+++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceHandler2.java
@@ -172,7 +172,7 @@ public class TestLoadBalanceHandler2 {
RegistryUtils.setServiceRegistry(serviceRegistry);
when(serviceRegistry.getMicroserviceInstance()).thenReturn(myself);
- when(serviceRegistry.getInstanceCacheManager()).thenReturn(instanceCacheManager);
+ mockUpInstanceCacheManager(instanceCacheManager);
when(instanceCacheManager.getOrCreateVersionedCache("testApp", "testMicroserviceName", "0.0.0+"))
.thenReturn(parent);
when(transportManager.findTransport("rest")).thenReturn(transport);
@@ -299,7 +299,7 @@ public class TestLoadBalanceHandler2 {
RegistryUtils.setServiceRegistry(serviceRegistry);
when(serviceRegistry.getMicroserviceInstance()).thenReturn(myself);
- when(serviceRegistry.getInstanceCacheManager()).thenReturn(instanceCacheManager);
+ mockUpInstanceCacheManager(instanceCacheManager);
when(instanceCacheManager.getOrCreateVersionedCache("testApp", "testMicroserviceName", "0.0.0+"))
.thenReturn(parent);
when(transportManager.findTransport("rest")).thenReturn(transport);
@@ -410,7 +410,7 @@ public class TestLoadBalanceHandler2 {
RegistryUtils.setServiceRegistry(serviceRegistry);
when(serviceRegistry.getMicroserviceInstance()).thenReturn(myself);
- when(serviceRegistry.getInstanceCacheManager()).thenReturn(instanceCacheManager);
+ mockUpInstanceCacheManager(instanceCacheManager);
when(instanceCacheManager.getOrCreateVersionedCache("testApp", "testMicroserviceName", "0.0.0+"))
.thenReturn(parent);
when(transportManager.findTransport("rest")).thenReturn(transport);
@@ -537,7 +537,7 @@ public class TestLoadBalanceHandler2 {
RegistryUtils.setServiceRegistry(serviceRegistry);
when(serviceRegistry.getMicroserviceInstance()).thenReturn(myself);
- when(serviceRegistry.getInstanceCacheManager()).thenReturn(instanceCacheManager);
+ mockUpInstanceCacheManager(instanceCacheManager);
when(instanceCacheManager.getOrCreateVersionedCache("testApp", "testMicroserviceName", "0.0.0+"))
.thenReturn(parent);
when(transportManager.findTransport("rest")).thenReturn(transport);
@@ -681,7 +681,7 @@ public class TestLoadBalanceHandler2 {
RegistryUtils.setServiceRegistry(serviceRegistry);
when(serviceRegistry.getMicroserviceInstance()).thenReturn(myself);
- when(serviceRegistry.getInstanceCacheManager()).thenReturn(instanceCacheManager);
+ mockUpInstanceCacheManager(instanceCacheManager);
when(instanceCacheManager.getOrCreateVersionedCache("testApp", "testMicroserviceName", "0.0.0+"))
.thenReturn(parent);
when(transportManager.findTransport("rest")).thenReturn(transport);
@@ -800,7 +800,7 @@ public class TestLoadBalanceHandler2 {
RegistryUtils.setServiceRegistry(serviceRegistry);
when(serviceRegistry.getMicroserviceInstance()).thenReturn(myself);
- when(serviceRegistry.getInstanceCacheManager()).thenReturn(instanceCacheManager);
+ mockUpInstanceCacheManager(instanceCacheManager);
when(instanceCacheManager.getOrCreateVersionedCache("testApp", "testMicroserviceName", "0.0.0+"))
.thenReturn(parent);
when(transportManager.findTransport("rest")).thenReturn(transport);
@@ -983,4 +983,13 @@ public class TestLoadBalanceHandler2 {
private void mockDelayMillis(long delay) {
mockTimeMillis.value += delay;
}
+
+ private void mockUpInstanceCacheManager(InstanceCacheManager instanceCacheManager) {
+ new MockUp<RegistryUtils>() {
+ @Mock
+ InstanceCacheManager getInstanceCacheManager() {
+ return instanceCacheManager;
+ }
+ };
+ }
}
diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
index 6f3282e..94f484d 100644
--- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
+++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
@@ -35,6 +35,7 @@ import org.apache.servicecomb.core.transport.TransportManager;
import org.apache.servicecomb.foundation.common.Holder;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.ServiceRegistry;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.cache.CacheEndpoint;
@@ -99,7 +100,7 @@ public class TestLoadbalanceHandler {
public static void classSetup() {
scbEngine = new SCBBootstrap().useLocalRegistry().createSCBEngineForTest().run();
serviceRegistry = scbEngine.getServiceRegistry();
- instanceCacheManager = serviceRegistry.getInstanceCacheManager();
+ instanceCacheManager = RegistryUtils.getInstanceCacheManager();
transportManager = scbEngine.getTransportManager();
}
diff --git a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/ITUtils.java b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/ITUtils.java
index 89efcca..f57e835 100644
--- a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/ITUtils.java
+++ b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/ITUtils.java
@@ -77,7 +77,7 @@ public final class ITUtils {
Map<String, MicroserviceInstance> instances;
for (; ; ) {
- MicroserviceVersionRule microserviceVersionRule = RegistryUtils.getServiceRegistry()
+ MicroserviceVersionRule microserviceVersionRule = RegistryUtils
.getAppManager()
.getOrCreateMicroserviceVersionRule(appId, microserviceName, strVersionRule);
instances = microserviceVersionRule.getInstances();
@@ -92,7 +92,7 @@ public final class ITUtils {
minInstanceCount,
instances.size());
// pull at once
- RegistryUtils.getServiceRegistry().getAppManager().pullInstances();
+ RegistryUtils.getAppManager().pullInstances();
forceWait(TimeUnit.SECONDS, 1);
}
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java
index e24cfcb..4988caf 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java
@@ -55,7 +55,7 @@ public class MicroserviceDeploy extends NormalDeploy {
}
public void ensureReady() throws Throwable {
- MicroserviceVersionRule microserviceVersionRule = RegistryUtils.getServiceRegistry().getAppManager()
+ MicroserviceVersionRule microserviceVersionRule = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(microserviceDeployDefinition.getAppId(),
microserviceDeployDefinition.getMicroserviceName(),
microserviceDeployDefinition.getVersion());
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/GateRestTemplate.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/GateRestTemplate.java
index 5fde52b..c9ea374 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/GateRestTemplate.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/GateRestTemplate.java
@@ -70,7 +70,7 @@ public class GateRestTemplate extends RestTemplate {
}
private String getUrlPrefix(String gateName, String producerName, String schemaId) {
- MicroserviceVersionRule microserviceVersionRule = RegistryUtils.getServiceRegistry().getAppManager()
+ MicroserviceVersionRule microserviceVersionRule = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(RegistryUtils.getAppId(), gateName,
DefinitionConst.VERSION_RULE_ALL);
MicroserviceInstance microserviceInstance = microserviceVersionRule.getInstances().values().stream().findFirst()
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBAsyncRestTemplate.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBAsyncRestTemplate.java
index 51aa2e5..21f55a8 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBAsyncRestTemplate.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBAsyncRestTemplate.java
@@ -51,7 +51,7 @@ public class ITSCBAsyncRestTemplate extends CseAsyncRestTemplate {
ensureProviderBasePath(producerName);
urlPrefix = String.format("cse://%s%s", producerName, basePath);
- instance = RegistryUtils.getServiceRegistry().getAppManager()
+ instance = RegistryUtils.getAppManager()
.getOrCreateMicroserviceManager(RegistryUtils.getAppId())
.getOrCreateMicroserviceVersions(producerName).getPulledInstances().get(0);
@@ -78,7 +78,7 @@ public class ITSCBAsyncRestTemplate extends CseAsyncRestTemplate {
private void ensureProviderBasePath(String producerName) {
MicroserviceManager microserviceManager =
- RegistryUtils.getServiceRegistry().getAppManager().getOrCreateMicroserviceManager(RegistryUtils.getAppId());
+ RegistryUtils.getAppManager().getOrCreateMicroserviceManager(RegistryUtils.getAppId());
MicroserviceVersions producerMicroserviceVersions =
microserviceManager.getOrCreateMicroserviceVersions(producerName);
Optional<MicroserviceVersion> latestMicroserviceVersion =
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBRestTemplate.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBRestTemplate.java
index f83291b..f37d139 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBRestTemplate.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/extend/engine/ITSCBRestTemplate.java
@@ -48,7 +48,7 @@ public class ITSCBRestTemplate extends CseRestTemplate {
SchemaMeta schemaMeta = microserviceMeta.ensureFindSchemaMeta(schemaId);
basePath = schemaMeta.getSwagger().getBasePath();
urlPrefix = String.format("cse://%s%s", producerName, basePath);
- instance = RegistryUtils.getServiceRegistry().getAppManager()
+ instance = RegistryUtils.getAppManager()
.getOrCreateMicroserviceManager(RegistryUtils.getAppId())
.getOrCreateMicroserviceVersions(producerName).getPulledInstances().get(0);
diff --git a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/PreLoadBootListener.java b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/PreLoadBootListener.java
index e1e1343..b047ffa 100644
--- a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/PreLoadBootListener.java
+++ b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/PreLoadBootListener.java
@@ -36,7 +36,7 @@ public class PreLoadBootListener implements BootListener {
@Override
public void onBootEvent(BootEvent bootEvent) {
if (bootEvent.getEventType() == EventType.BEFORE_REGISTRY) {
- MicroserviceVersionRule rule = RegistryUtils.getServiceRegistry().getAppManager()
+ MicroserviceVersionRule rule = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(RegistryUtils.getAppId(), "it-producer", "0+");
if (rule.getInstances().size() == 0) {
LOGGER.warn("Prefetch not successful, maybe the provider not started.");
diff --git a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java
index c80566f..ed6a0a4 100644
--- a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java
+++ b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java
@@ -25,6 +25,8 @@ import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.bootstrap.SCBBootstrap;
import org.apache.servicecomb.foundation.common.Holder;
import org.apache.servicecomb.provider.springmvc.reference.CseClientHttpResponse;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.apache.servicecomb.serviceregistry.consumer.AppManager;
import org.apache.servicecomb.swagger.invocation.Response;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -38,11 +40,14 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import mockit.Deencapsulation;
+
public class CseAsyncClientHttpRequestTest {
static SCBEngine scbEngine;
@BeforeClass
public static void classSetup() {
+ Deencapsulation.setField(RegistryUtils.class, "appManager", new AppManager());
scbEngine = new SCBBootstrap().useLocalRegistry().createSCBEngineForTest()
.addProducerMeta("sid1", new CseAsyncClientHttpRequestTestSchema()).run();
}
@@ -81,7 +86,7 @@ public class CseAsyncClientHttpRequestTest {
byte[] body = "abc".getBytes();
client.setRequestBody(body);
client.executeAsync();
- Assert.assertArrayEquals(body, ( byte[])holder.value.getInvocationArguments().get("input"));
+ Assert.assertArrayEquals(body, (byte[]) holder.value.getInvocationArguments().get("input"));
}
@Test
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
index cdfad6b..400adc5 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
@@ -32,11 +32,14 @@ import org.apache.servicecomb.foundation.common.net.NetUtils;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManager;
+import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManagerNew;
import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient;
import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
import org.apache.servicecomb.serviceregistry.config.ServiceRegistryConfig;
+import org.apache.servicecomb.serviceregistry.consumer.AppManager;
import org.apache.servicecomb.serviceregistry.definition.MicroserviceDefinition;
import org.apache.servicecomb.serviceregistry.registry.ServiceRegistryFactory;
+import org.apache.servicecomb.serviceregistry.swagger.SwaggerLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,17 +50,23 @@ import com.netflix.config.DynamicPropertyFactory;
public final class RegistryUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(RegistryUtils.class);
- private static ServiceRegistry serviceRegistry;
+ private static volatile ServiceRegistry serviceRegistry;
// value is ip or {interface name}
public static final String PUBLISH_ADDRESS = "servicecomb.service.publishAddress";
private static final String PUBLISH_PORT = "servicecomb.{transport_name}.publishPort";
+ private static SwaggerLoader swaggerLoader = new SwaggerLoader();
+
+ private static AppManager appManager = new AppManager();
+
+ private static InstanceCacheManager instanceCacheManager = new InstanceCacheManagerNew(appManager);
+
private RegistryUtils() {
}
- public static void init() {
+ public static synchronized void init() {
if (serviceRegistry != null) {
return;
}
@@ -66,7 +75,7 @@ public final class RegistryUtils {
MicroserviceDefinition microserviceDefinition = new MicroserviceDefinition(loader.getConfigModels());
serviceRegistry =
ServiceRegistryFactory
- .getOrCreate(EventManager.eventBus, ServiceRegistryConfig.INSTANCE, microserviceDefinition);
+ .create(EventManager.eventBus, ServiceRegistryConfig.INSTANCE, microserviceDefinition);
serviceRegistry.init();
}
@@ -99,7 +108,15 @@ public final class RegistryUtils {
}
public static InstanceCacheManager getInstanceCacheManager() {
- return serviceRegistry.getInstanceCacheManager();
+ return instanceCacheManager;
+ }
+
+ public static SwaggerLoader getSwaggerLoader() {
+ return swaggerLoader;
+ }
+
+ public static AppManager getAppManager() {
+ return appManager;
}
public static String getAppId() {
@@ -234,4 +251,12 @@ public final class RegistryUtils {
public static String calcSchemaSummary(String schemaContent) {
return Hashing.sha256().newHasher().putString(schemaContent, Charsets.UTF_8).hash().toString();
}
+
+ public static String getAggregatedSchema(String microserviceId, String schemaId) {
+ return serviceRegistry.getServiceRegistryClient().getAggregatedSchema(microserviceId, schemaId);
+ }
+
+ public static Microservice getAggregatedRemoteMicroservice(String microserviceId) {
+ return serviceRegistry.getAggregatedRemoteMicroservice(microserviceId);
+ }
}
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
index 9e1b144..d119cb8 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
@@ -22,11 +22,8 @@ import java.util.Set;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
-import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManager;
import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient;
import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
-import org.apache.servicecomb.serviceregistry.consumer.AppManager;
-import org.apache.servicecomb.serviceregistry.swagger.SwaggerLoader;
import com.google.common.eventbus.EventBus;
@@ -39,22 +36,25 @@ public interface ServiceRegistry {
EventBus getEventBus();
- SwaggerLoader getSwaggerLoader();
-
Set<String> getCombinedMicroserviceNames();
+ /**
+ * Get the AppId of this microservice instance itself.
+ */
String getAppId();
+ /**
+ * Get the {@link Microservice} of this microservice instance itself.
+ */
Microservice getMicroservice();
+ /**
+ * Get the {@link MicroserviceInstance} of this microservice instance itself.
+ */
MicroserviceInstance getMicroserviceInstance();
ServiceRegistryClient getServiceRegistryClient();
- AppManager getAppManager();
-
- InstanceCacheManager getInstanceCacheManager();
-
List<MicroserviceInstance> findServiceInstance(String appId, String microserviceName,
String microserviceVersionRule);
@@ -65,8 +65,6 @@ public interface ServiceRegistry {
/**
* full update, not increase update
- * @param instanceProperties
- * @return
*/
boolean updateInstanceProperties(Map<String, String> instanceProperties);
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java
index 24f4d6b..6cc2e50 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java
@@ -20,30 +20,22 @@ package org.apache.servicecomb.serviceregistry.consumer;
import java.util.Map;
import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
-import org.apache.servicecomb.serviceregistry.ServiceRegistry;
+import org.apache.servicecomb.foundation.common.event.EventManager;
import org.apache.servicecomb.serviceregistry.api.response.MicroserviceInstanceChangedEvent;
import org.apache.servicecomb.serviceregistry.task.event.SafeModeChangeEvent;
import com.google.common.eventbus.EventBus;
public class AppManager {
- private ServiceRegistry serviceRegistry;
-
// key: appId
private Map<String, MicroserviceManager> apps = new ConcurrentHashMapEx<>();
- public AppManager(ServiceRegistry serviceRegistry) {
- this.serviceRegistry = serviceRegistry;
-
+ public AppManager() {
getEventBus().register(this);
}
- public ServiceRegistry getServiceRegistry() {
- return serviceRegistry;
- }
-
public EventBus getEventBus() {
- return serviceRegistry.getEventBus();
+ return EventManager.getEventBus();
}
public Map<String, MicroserviceManager> getApps() {
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
index d6953db..03ae5fe 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
@@ -21,6 +21,7 @@ import java.util.Collection;
import java.util.List;
import org.apache.servicecomb.foundation.common.VendorExtensions;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.event.CreateMicroserviceVersionEvent;
@@ -47,10 +48,7 @@ public class MicroserviceVersion {
public MicroserviceVersion(MicroserviceVersions microserviceVersions, String microserviceId,
String microserviceName,
Collection<MicroserviceInstance> instances) {
- Microservice microservice = microserviceVersions
- .getAppManager()
- .getServiceRegistry()
- .getAggregatedRemoteMicroservice(microserviceId);
+ Microservice microservice = RegistryUtils.getAggregatedRemoteMicroservice(microserviceId);
if (microservice == null) {
throw new IllegalStateException(
String.format("failed to query by microserviceId '%s' from ServiceCenter.", microserviceId));
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
index 66b81f6..8802a15 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
@@ -28,6 +28,7 @@ import java.util.Map.Entry;
import org.apache.servicecomb.foundation.common.VendorExtensions;
import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.api.Const;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.api.response.MicroserviceInstanceChangedEvent;
@@ -35,9 +36,9 @@ import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
import org.apache.servicecomb.serviceregistry.config.ServiceRegistryConfig;
import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
import org.apache.servicecomb.serviceregistry.definition.MicroserviceNameParser;
-import org.apache.servicecomb.serviceregistry.task.event.SafeModeChangeEvent;
import org.apache.servicecomb.serviceregistry.event.CreateMicroserviceEvent;
import org.apache.servicecomb.serviceregistry.event.DestroyMicroserviceEvent;
+import org.apache.servicecomb.serviceregistry.task.event.SafeModeChangeEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -177,7 +178,7 @@ public class MicroserviceVersions {
}
protected MicroserviceInstances findServiceInstances() {
- return appManager.getServiceRegistry().findServiceInstances(appId,
+ return RegistryUtils.findServiceInstances(appId,
microserviceName,
DefinitionConst.VERSION_RULE_ALL,
revision);
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java
index 05e1323..ca34f1c 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.serviceregistry.consumer;
import java.util.List;
import java.util.UUID;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.api.response.FindInstancesResponse;
@@ -48,7 +49,7 @@ public class StaticMicroserviceVersions extends MicroserviceVersions {
public StaticMicroserviceVersions init(Class<?> schemaIntfCls, String version,
List<MicroserviceInstance> addedInstances) {
this.schemaIntfCls = schemaIntfCls;
- Swagger swagger = this.appManager.getServiceRegistry().getSwaggerLoader()
+ Swagger swagger = RegistryUtils.getSwaggerLoader()
.registerSwagger(appId, shortName, shortName, schemaIntfCls);
String swaggerContent = SwaggerUtils.swaggerToString(swagger);
LOGGER.info("generate swagger for 3rd party service [{}]/[{}], swagger: {}",
@@ -88,7 +89,7 @@ public class StaticMicroserviceVersions extends MicroserviceVersions {
}
private void createMicroservice(String version) {
- String environment = appManager.getServiceRegistry().getMicroservice().getEnvironment();
+ String environment = RegistryUtils.getMicroservice().getEnvironment();
microservice.setAppId(this.getAppId());
microservice.setServiceName(this.getShortName());
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheCheckTask.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheCheckTask.java
index b6dd615..21e0a90 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheCheckTask.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheCheckTask.java
@@ -20,6 +20,7 @@ import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.consumer.AppManager;
import org.apache.servicecomb.serviceregistry.registry.RemoteServiceRegistry;
import org.apache.servicecomb.serviceregistry.registry.ServiceRegistryTaskInitializer;
@@ -86,7 +87,7 @@ public class InstanceCacheCheckTask implements ServiceRegistryTaskInitializer {
@Override
public void init(RemoteServiceRegistry remoteServiceRegistry) {
- appManager = remoteServiceRegistry.getAppManager();
+ appManager = RegistryUtils.getAppManager();
taskPool = remoteServiceRegistry.getTaskPool();
eventBus = remoteServiceRegistry.getEventBus();
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java
index 7158913..3180da7 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java
@@ -116,7 +116,6 @@ public class DiscoveryTree {
public DiscoveryTreeNode discovery(DiscoveryContext context, String appId, String microserviceName,
String versionRule) {
VersionedCache instanceVersionedCache = RegistryUtils
- .getServiceRegistry()
.getInstanceCacheManager()
.getOrCreateVersionedCache(appId, microserviceName, versionRule);
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
index 70cd5a0..a842db5 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
@@ -28,6 +28,7 @@ import java.util.Set;
import java.util.concurrent.ExecutorService;
import org.apache.servicecomb.serviceregistry.Features;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.ServiceRegistry;
import org.apache.servicecomb.serviceregistry.api.Const;
import org.apache.servicecomb.serviceregistry.api.registry.BasePath;
@@ -37,18 +38,14 @@ import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceFactory;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.api.response.MicroserviceInstanceChangedEvent;
-import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManager;
-import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManagerNew;
import org.apache.servicecomb.serviceregistry.client.IpPortManager;
import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient;
import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
import org.apache.servicecomb.serviceregistry.config.ServiceRegistryConfig;
-import org.apache.servicecomb.serviceregistry.consumer.AppManager;
import org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager;
import org.apache.servicecomb.serviceregistry.consumer.StaticMicroserviceVersions;
import org.apache.servicecomb.serviceregistry.definition.MicroserviceDefinition;
import org.apache.servicecomb.serviceregistry.definition.MicroserviceNameParser;
-import org.apache.servicecomb.serviceregistry.swagger.SwaggerLoader;
import org.apache.servicecomb.serviceregistry.task.MicroserviceServiceCenterTask;
import org.apache.servicecomb.serviceregistry.task.ServiceCenterTask;
import org.apache.servicecomb.serviceregistry.task.event.RecoveryEvent;
@@ -74,10 +71,6 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
protected Microservice microservice;
- protected AppManager appManager;
-
- protected InstanceCacheManager instanceCacheManager;
-
protected IpPortManager ipPortManager;
protected ServiceRegistryClient srClient;
@@ -86,8 +79,6 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
protected ServiceCenterTask serviceCenterTask;
- protected SwaggerLoader swaggerLoader = new SwaggerLoader(this);
-
protected ExecutorService executorService = MoreExecutors.newDirectExecutorService();
public AbstractServiceRegistry(EventBus eventBus, ServiceRegistryConfig serviceRegistryConfig,
@@ -100,9 +91,7 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
@Override
public void init() {
- appManager = new AppManager(this);
- instanceCacheManager = new InstanceCacheManagerNew(appManager);
- ipPortManager = new IpPortManager(serviceRegistryConfig, instanceCacheManager);
+ ipPortManager = new IpPortManager(serviceRegistryConfig, RegistryUtils.getInstanceCacheManager());
if (srClient == null) {
srClient = createServiceRegistryClient();
}
@@ -113,16 +102,6 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
}
@Override
- public SwaggerLoader getSwaggerLoader() {
- return swaggerLoader;
- }
-
- @Override
- public AppManager getAppManager() {
- return appManager;
- }
-
- @Override
public Features getFeatures() {
return features;
}
@@ -151,11 +130,6 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
}
@Override
- public InstanceCacheManager getInstanceCacheManager() {
- return instanceCacheManager;
- }
-
- @Override
public String getAppId() {
return microservice.getAppId();
}
@@ -315,10 +289,12 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
public void registerMicroserviceMapping(String microserviceName, String version,
List<MicroserviceInstance> instances, Class<?> schemaIntfCls) {
MicroserviceNameParser parser = new MicroserviceNameParser(microservice.getAppId(), microserviceName);
- MicroserviceManager microserviceManager = appManager.getOrCreateMicroserviceManager(parser.getAppId());
+ MicroserviceManager microserviceManager = RegistryUtils.getAppManager()
+ .getOrCreateMicroserviceManager(parser.getAppId());
microserviceManager.getVersionsByName()
.computeIfAbsent(microserviceName,
- svcName -> new StaticMicroserviceVersions(this.appManager, parser.getAppId(), microserviceName)
+ svcName -> new StaticMicroserviceVersions(RegistryUtils.getAppManager(), parser.getAppId(),
+ microserviceName)
.init(schemaIntfCls, version, instances)
);
}
@@ -345,17 +321,17 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
// post from watch eventloop, should refresh the exact microservice instances immediately
@Subscribe
public void onMicroserviceInstanceChanged(MicroserviceInstanceChangedEvent changedEvent) {
- executorService.execute(() -> appManager.onMicroserviceInstanceChanged(changedEvent));
+ executorService.execute(() -> RegistryUtils.getAppManager().onMicroserviceInstanceChanged(changedEvent));
}
// post from watch eventloop, should refresh all instances immediately
@Subscribe
public void serviceRegistryRecovery(RecoveryEvent event) {
- executorService.execute(appManager::pullInstances);
+ executorService.execute(RegistryUtils.getAppManager()::pullInstances);
}
@Subscribe
public void onSafeModeChanged(SafeModeChangeEvent modeChangeEvent) {
- executorService.execute(() -> appManager.onSafeModeChanged(modeChangeEvent));
+ executorService.execute(() -> RegistryUtils.getAppManager().onSafeModeChanged(modeChangeEvent));
}
}
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/RemoteServiceRegistry.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/RemoteServiceRegistry.java
index 72bd255..123017c 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/RemoteServiceRegistry.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/RemoteServiceRegistry.java
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.servicecomb.foundation.common.concurrency.SuppressedRunnableWrapper;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient;
import org.apache.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl;
import org.apache.servicecomb.serviceregistry.config.ServiceRegistryConfig;
@@ -83,7 +84,7 @@ public class RemoteServiceRegistry extends AbstractServiceRegistry {
TimeUnit.SECONDS);
taskPool.scheduleAtFixedRate(
- new SuppressedRunnableWrapper(appManager::pullInstances),
+ new SuppressedRunnableWrapper(RegistryUtils.getAppManager()::pullInstances),
serviceRegistryConfig.getInstancePullInterval(),
serviceRegistryConfig.getInstancePullInterval(),
TimeUnit.SECONDS);
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/ServiceRegistryFactory.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/ServiceRegistryFactory.java
index ce44b79..0dab855 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/ServiceRegistryFactory.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/registry/ServiceRegistryFactory.java
@@ -35,29 +35,9 @@ import com.google.common.eventbus.EventBus;
public final class ServiceRegistryFactory {
private static final Logger LOGGER = LoggerFactory.getLogger(ServiceRegistryFactory.class);
- private static final Object LOCK = new Object();
-
- private static volatile ServiceRegistry serviceRegistry;
-
private ServiceRegistryFactory() {
}
- public static ServiceRegistry getServiceRegistry() {
- return serviceRegistry;
- }
-
- public static ServiceRegistry getOrCreate(EventBus eventBus, ServiceRegistryConfig serviceRegistryConfig,
- MicroserviceDefinition microserviceDefinition) {
- if (serviceRegistry == null) {
- synchronized (LOCK) {
- if (serviceRegistry == null) {
- serviceRegistry = create(eventBus, serviceRegistryConfig, microserviceDefinition);
- }
- }
- }
- return serviceRegistry;
- }
-
public static ServiceRegistry createLocal() {
return createLocal(System.getProperty(LocalServiceRegistryClientImpl.LOCAL_REGISTRY_FILE_KEY));
}
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/swagger/SwaggerLoader.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/swagger/SwaggerLoader.java
index d04c23d..fb07b7e 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/swagger/SwaggerLoader.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/swagger/SwaggerLoader.java
@@ -27,7 +27,7 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
import org.apache.servicecomb.foundation.common.utils.JvmUtils;
import org.apache.servicecomb.foundation.common.utils.ResourceUtil;
-import org.apache.servicecomb.serviceregistry.ServiceRegistry;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.definition.MicroserviceNameParser;
import org.apache.servicecomb.swagger.SwaggerUtils;
@@ -40,15 +40,12 @@ import io.swagger.models.Swagger;
public class SwaggerLoader {
private static final Logger LOGGER = LoggerFactory.getLogger(SwaggerLoader.class);
- private ServiceRegistry serviceRegistry;
-
// first key : appId
// second key: microservice short name
// third key : schemaId
private Map<String, Map<String, Map<String, Swagger>>> apps = new ConcurrentHashMapEx<>();
- public SwaggerLoader(ServiceRegistry serviceRegistry) {
- this.serviceRegistry = serviceRegistry;
+ public SwaggerLoader() {
}
/**
@@ -67,7 +64,7 @@ public class SwaggerLoader {
* @param swaggersLocation eg. "test/schemas", will load all test/schemas/*.yaml
*/
public void registerSwaggersInLocation(String swaggersLocation) {
- String microserviceName = serviceRegistry.getMicroservice().getServiceName();
+ String microserviceName = RegistryUtils.getMicroservice().getServiceName();
registerSwaggersInLocation(microserviceName, swaggersLocation);
}
@@ -93,7 +90,7 @@ public class SwaggerLoader {
}
public void registerSwagger(String schemaId, Swagger swagger) {
- registerSwagger(serviceRegistry.getMicroservice().getServiceName(), schemaId, swagger);
+ registerSwagger(RegistryUtils.getMicroservice().getServiceName(), schemaId, swagger);
}
public void registerSwagger(String microserviceName, String schemaId, String swaggerContent) {
@@ -108,7 +105,7 @@ public class SwaggerLoader {
}
public void registerSwagger(String microserviceName, String schemaId, Swagger swagger) {
- MicroserviceNameParser parser = new MicroserviceNameParser(serviceRegistry.getAppId(), microserviceName);
+ MicroserviceNameParser parser = new MicroserviceNameParser(RegistryUtils.getAppId(), microserviceName);
registerSwagger(parser.getAppId(), parser.getShortName(), schemaId, swagger);
}
@@ -160,7 +157,7 @@ public class SwaggerLoader {
}
private Swagger loadFromResource(String appId, String shortName, String schemaId) {
- if (appId.equals(serviceRegistry.getAppId())) {
+ if (appId.equals(RegistryUtils.getAppId())) {
Swagger swagger = loadFromResource(String.format("microservices/%s/%s.yaml", shortName, schemaId));
if (swagger != null) {
return swagger;
@@ -181,7 +178,7 @@ public class SwaggerLoader {
}
private Swagger loadFromRemote(Microservice microservice, String schemaId) {
- String schemaContent = serviceRegistry.getServiceRegistryClient()
+ String schemaContent = RegistryUtils
.getAggregatedSchema(microservice.getServiceId(), schemaId);
if (schemaContent != null) {
LOGGER.info(
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/MockMicroserviceVersions.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/MockMicroserviceVersions.java
index 629628d..3d183b1 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/MockMicroserviceVersions.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/MockMicroserviceVersions.java
@@ -30,7 +30,6 @@ import org.apache.servicecomb.serviceregistry.consumer.AppManager;
import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersion;
import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersionRule;
import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions;
-import org.apache.servicecomb.serviceregistry.registry.ServiceRegistryFactory;
import org.apache.servicecomb.serviceregistry.version.Version;
import org.hamcrest.Matchers;
import org.junit.Assert;
@@ -45,14 +44,16 @@ public class MockMicroserviceVersions extends MicroserviceVersions {
private List<MicroserviceInstance> mockedInstances = new ArrayList<>();
public MockMicroserviceVersions() {
- super(new AppManager(ServiceRegistryFactory.createLocal()), "appId", "msName");
+ super(new AppManager(), "appId", "msName");
- new MockUp<ServiceRegistry>(appManager.getServiceRegistry()) {
+ ServiceRegistry serviceRegistry = new MockUp<ServiceRegistry>() {
@Mock
Microservice getAggregatedRemoteMicroservice(String microserviceId) {
return mockedMicroservices.get(microserviceId);
}
- };
+ }.getMockInstance();
+
+ RegistryUtils.setServiceRegistry(serviceRegistry);
addMock("1.0.0", 2);
addMock("2.0.0", 2);
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestConsumers.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestConsumers.java
index 737e47d..b5c009c 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestConsumers.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestConsumers.java
@@ -109,9 +109,9 @@ public class TestConsumers extends TestRegistryBase {
@Test
public void deleteWhenCreateMicroserviceVersion() {
- new Expectations(appManager.getServiceRegistry()) {
+ new Expectations(RegistryUtils.getServiceRegistry()) {
{
- appManager.getServiceRegistry().getAggregatedRemoteMicroservice(serviceId);
+ RegistryUtils.getServiceRegistry().getAggregatedRemoteMicroservice(serviceId);
result = null;
}
};
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java
index cd6ad04..63d1d8b 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java
@@ -89,7 +89,6 @@ public class TestRegistry {
Assert.assertEquals(serviceRegistry, RegistryUtils.getServiceRegistry());
Assert.assertEquals(serviceRegistry.getServiceRegistryClient(), RegistryUtils.getServiceRegistryClient());
- Assert.assertEquals(serviceRegistry.getInstanceCacheManager(), RegistryUtils.getInstanceCacheManager());
Microservice microservice = RegistryUtils.getMicroservice();
Assert.assertEquals(serviceRegistry.getMicroservice(), microservice);
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistryBase.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistryBase.java
index 3a6ac2f..267af9c 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistryBase.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistryBase.java
@@ -29,6 +29,7 @@ import org.junit.Before;
import com.google.common.eventbus.EventBus;
+import mockit.Deencapsulation;
import mockit.Expectations;
public class TestRegistryBase {
@@ -66,11 +67,12 @@ public class TestRegistryBase {
serviceRegistry = ServiceRegistryFactory.createLocal("registry.yaml");
serviceRegistry.init();
- appManager = serviceRegistry.getAppManager();
+ Deencapsulation.setField(RegistryUtils.class, "appManager", new AppManager());
+ appManager = RegistryUtils.getAppManager();
microserviceManager = appManager.getOrCreateMicroserviceManager(appId);
eventBus = serviceRegistry.getEventBus();
- serviceRegistry.getSwaggerLoader().registerSwagger(appId, serviceName, schemaId, Hello.class);
+ RegistryUtils.getSwaggerLoader().registerSwagger(appId, serviceName, schemaId, Hello.class);
RegistryUtils.setServiceRegistry(serviceRegistry);
@@ -86,9 +88,9 @@ public class TestRegistryBase {
protected void mockNotExist() {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
microserviceInstances.setMicroserviceNotExist(true);
- new Expectations(appManager.getServiceRegistry()) {
+ new Expectations(RegistryUtils.getServiceRegistry()) {
{
- appManager.getServiceRegistry()
+ RegistryUtils.getServiceRegistry()
.findServiceInstances(anyString, anyString, DefinitionConst.VERSION_RULE_ALL, anyString);
result = microserviceInstances;
}
@@ -96,9 +98,9 @@ public class TestRegistryBase {
}
protected void mockDisconnect() {
- new Expectations(appManager.getServiceRegistry()) {
+ new Expectations(RegistryUtils.getServiceRegistry()) {
{
- appManager.getServiceRegistry()
+ RegistryUtils.getServiceRegistry()
.findServiceInstances(anyString, anyString, DefinitionConst.VERSION_RULE_ALL, anyString);
result = null;
}
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java
index 66bb06a..133535c 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java
@@ -27,6 +27,7 @@ import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.serviceregistry.api.response.FindInstancesResponse;
import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
+import org.apache.servicecomb.serviceregistry.consumer.AppManager;
import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersionRule;
import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions;
import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
@@ -38,6 +39,7 @@ import org.junit.Before;
import org.junit.Test;
import io.vertx.core.json.Json;
+import mockit.Deencapsulation;
import mockit.Mock;
import mockit.MockUp;
@@ -54,10 +56,12 @@ public class TestInstanceCacheChecker {
@Before
public void setUp() throws Exception {
+ Deencapsulation.setField(RegistryUtils.class, "appManager", new AppManager());
+
serviceRegistry.init();
RegistryUtils.setServiceRegistry(serviceRegistry);
- checker = new InstanceCacheChecker(serviceRegistry.getAppManager());
+ checker = new InstanceCacheChecker(RegistryUtils.getAppManager());
checker.clock = new MockClock(new Holder<>(1L));
expectedSummary.setStatus(Status.NORMAL);
expectedSummary.setTimestamp(1);
@@ -78,7 +82,7 @@ public class TestInstanceCacheChecker {
@Test
public void check_microserviceManager_empty() {
appId = "notExist";
- serviceRegistry.getAppManager().getOrCreateMicroserviceVersions(appId, microserviceName);
+ RegistryUtils.getAppManager().getOrCreateMicroserviceVersions(appId, microserviceName);
InstanceCacheSummary instanceCacheSummary = checker.check();
Assert.assertEquals(Json.encode(expectedSummary), Json.encode(instanceCacheSummary));
}
@@ -119,7 +123,7 @@ public class TestInstanceCacheChecker {
registerMicroservice(appId, microserviceName);
- serviceRegistry.getAppManager()
+ RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(appId, microserviceName, DefinitionConst.VERSION_RULE_ALL);
findHolder.value = null;
@@ -151,7 +155,7 @@ public class TestInstanceCacheChecker {
registerMicroservice(appId, microserviceName);
- serviceRegistry.getAppManager()
+ RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(appId, microserviceName, DefinitionConst.VERSION_RULE_ALL);
findHolder.value.setMicroserviceNotExist(true);
@@ -183,7 +187,7 @@ public class TestInstanceCacheChecker {
registerMicroservice(appId, microserviceName);
- serviceRegistry.getAppManager()
+ RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(appId, microserviceName, DefinitionConst.VERSION_RULE_ALL);
findHolder.value.setRevision("second");
@@ -216,7 +220,7 @@ public class TestInstanceCacheChecker {
registerMicroservice(appId, microserviceName);
- MicroserviceVersions microserviceVersions = serviceRegistry.getAppManager()
+ MicroserviceVersions microserviceVersions = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersions(appId, microserviceName);
microserviceVersions.setRevision("first");
microserviceVersions.getOrCreateMicroserviceVersionRule(DefinitionConst.VERSION_RULE_ALL);
@@ -248,7 +252,7 @@ public class TestInstanceCacheChecker {
Arrays.asList("rest://localhost:8080"),
ThirdPartyServiceForUT.class);
- MicroserviceVersionRule microserviceVersionRule = serviceRegistry.getAppManager()
+ MicroserviceVersionRule microserviceVersionRule = RegistryUtils.getAppManager()
.getOrCreateMicroserviceVersionRule(appId, microserviceName, DefinitionConst.VERSION_RULE_ALL);
Assert.assertEquals(microserviceName, microserviceVersionRule.getLatestMicroserviceVersion().getMicroserviceName());
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/discovery/TestDiscoveryTree.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/discovery/TestDiscoveryTree.java
index 6402858..0940270 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/discovery/TestDiscoveryTree.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/discovery/TestDiscoveryTree.java
@@ -24,7 +24,6 @@ import org.apache.servicecomb.foundation.common.cache.VersionedCache;
import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
import org.apache.servicecomb.serviceregistry.RegistryUtils;
-import org.apache.servicecomb.serviceregistry.ServiceRegistry;
import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManager;
import org.hamcrest.Matchers;
import org.junit.Assert;
@@ -125,7 +124,7 @@ public class TestDiscoveryTree {
Assert.assertFalse(discoveryTree.isExpired(new DiscoveryTreeNode().cacheVersion(0), parent));
}
- class DiscoveryFilterForTest implements DiscoveryFilter {
+ static class DiscoveryFilterForTest implements DiscoveryFilter {
protected String groupName;
public DiscoveryFilterForTest(String groupName) {
@@ -167,13 +166,10 @@ public class TestDiscoveryTree {
}
@Test
- public void easyDiscovery(@Mocked ServiceRegistry serviceRegistry,
- @Mocked InstanceCacheManager instanceCacheManager) {
+ public void easyDiscovery(@Mocked InstanceCacheManager instanceCacheManager) {
new Expectations(RegistryUtils.class) {
{
- RegistryUtils.getServiceRegistry();
- result = serviceRegistry;
- serviceRegistry.getInstanceCacheManager();
+ RegistryUtils.getInstanceCacheManager();
result = instanceCacheManager;
instanceCacheManager.getOrCreateVersionedCache(anyString, anyString, anyString);
result = parent;
@@ -186,13 +182,10 @@ public class TestDiscoveryTree {
}
@Test
- public void discovery_filterReturnNull(@Mocked ServiceRegistry serviceRegistry,
- @Mocked InstanceCacheManager instanceCacheManager) {
+ public void discovery_filterReturnNull(@Mocked InstanceCacheManager instanceCacheManager) {
new Expectations(RegistryUtils.class) {
{
- RegistryUtils.getServiceRegistry();
- result = serviceRegistry;
- serviceRegistry.getInstanceCacheManager();
+ RegistryUtils.getInstanceCacheManager();
result = instanceCacheManager;
instanceCacheManager.getOrCreateVersionedCache(anyString, anyString, anyString);
result = parent;
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestServiceRegistryFactory.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestServiceRegistryFactory.java
index 07f7e08..77e8aa4 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestServiceRegistryFactory.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestServiceRegistryFactory.java
@@ -30,7 +30,6 @@ import org.junit.Test;
import com.google.common.eventbus.EventBus;
-import mockit.Deencapsulation;
import mockit.Mocked;
/**
@@ -52,20 +51,17 @@ public class TestServiceRegistryFactory {
ServiceRegistryClient client = serviceRegistry.getServiceRegistryClient();
Assert.assertTrue(client instanceof ServiceRegistryClientImpl);
- serviceRegistry = ServiceRegistryFactory.getOrCreate(eventBus,
+ serviceRegistry = ServiceRegistryFactory.create(eventBus,
serviceRegistryConfig,
microserviceDefinition);
Assert.assertTrue(serviceRegistry instanceof RemoteServiceRegistry);
- Assert.assertEquals(serviceRegistry, ServiceRegistryFactory.getServiceRegistry());
-
- Deencapsulation.setField(ServiceRegistryFactory.class, "serviceRegistry", null);
System.setProperty("local.registry.file", "/tmp/test.yaml");
serviceRegistry = ServiceRegistryFactory.create(eventBus, serviceRegistryConfig, microserviceDefinition);
serviceRegistry.init();
client = serviceRegistry.getServiceRegistryClient();
Assert.assertTrue(client instanceof LocalServiceRegistryClientImpl);
- Assert.assertTrue(ServiceRegistryFactory.getOrCreate(eventBus,
+ Assert.assertTrue(ServiceRegistryFactory.create(eventBus,
serviceRegistryConfig,
microserviceDefinition) instanceof LocalServiceRegistry);
System.clearProperty("local.registry.file");
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/swagger/TestSwaggerLoader.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/swagger/TestSwaggerLoader.java
index e4b8752..48623f0 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/swagger/TestSwaggerLoader.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/swagger/TestSwaggerLoader.java
@@ -40,6 +40,7 @@ import org.apache.servicecomb.foundation.common.Holder;
import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
import org.apache.servicecomb.foundation.common.utils.JvmUtils;
import org.apache.servicecomb.foundation.common.utils.ResourceUtil;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.TestRegistryBase;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
import org.apache.servicecomb.swagger.SwaggerUtils;
@@ -62,11 +63,11 @@ public class TestSwaggerLoader extends TestRegistryBase {
@Test
public void registerSwagger() {
Swagger swagger = SwaggerGenerator.generate(Hello.class);
- serviceRegistry.getSwaggerLoader().registerSwagger("default:ms2", schemaId, swagger);
+ RegistryUtils.getSwaggerLoader().registerSwagger("default:ms2", schemaId, swagger);
Microservice microservice = appManager.getOrCreateMicroserviceVersions(appId, serviceName)
.getVersions().values().iterator().next().getMicroservice();
- Assert.assertSame(swagger, serviceRegistry.getSwaggerLoader().loadSwagger(microservice, schemaId));
+ Assert.assertSame(swagger, RegistryUtils.getSwaggerLoader().loadSwagger(microservice, schemaId));
}
@Test
@@ -79,11 +80,11 @@ public class TestSwaggerLoader extends TestRegistryBase {
}
};
- serviceRegistry.getSwaggerLoader().unregisterSwagger(appId, serviceName, schemaId);
+ RegistryUtils.getSwaggerLoader().unregisterSwagger(appId, serviceName, schemaId);
Microservice microservice = appManager.getOrCreateMicroserviceVersions(appId, serviceName)
.getVersions().values().iterator().next().getMicroservice();
- Swagger loadedSwagger = serviceRegistry.getSwaggerLoader().loadSwagger(microservice, schemaId);
+ Swagger loadedSwagger = RegistryUtils.getSwaggerLoader().loadSwagger(microservice, schemaId);
Assert.assertNotSame(swagger, loadedSwagger);
Assert.assertEquals(swagger, loadedSwagger);
}
@@ -93,11 +94,11 @@ public class TestSwaggerLoader extends TestRegistryBase {
Swagger swagger = SwaggerGenerator.generate(Hello.class);
mockLocalResource(swagger, String.format("microservices/%s/%s.yaml", serviceName, schemaId));
- serviceRegistry.getSwaggerLoader().unregisterSwagger(appId, serviceName, schemaId);
+ RegistryUtils.getSwaggerLoader().unregisterSwagger(appId, serviceName, schemaId);
Microservice microservice = appManager.getOrCreateMicroserviceVersions(appId, serviceName)
.getVersions().values().iterator().next().getMicroservice();
- Swagger loadedSwagger = serviceRegistry.getSwaggerLoader().loadSwagger(microservice, schemaId);
+ Swagger loadedSwagger = RegistryUtils.getSwaggerLoader().loadSwagger(microservice, schemaId);
Assert.assertNotSame(swagger, loadedSwagger);
Assert.assertEquals(swagger, loadedSwagger);
}
@@ -107,11 +108,11 @@ public class TestSwaggerLoader extends TestRegistryBase {
Swagger swagger = SwaggerGenerator.generate(Hello.class);
mockLocalResource(swagger, String.format("applications/%s/%s/%s.yaml", appId, serviceName, schemaId));
- serviceRegistry.getSwaggerLoader().unregisterSwagger(appId, serviceName, schemaId);
+ RegistryUtils.getSwaggerLoader().unregisterSwagger(appId, serviceName, schemaId);
Microservice microservice = appManager.getOrCreateMicroserviceVersions(appId, serviceName)
.getVersions().values().iterator().next().getMicroservice();
- Swagger loadedSwagger = serviceRegistry.getSwaggerLoader().loadSwagger(microservice, schemaId);
+ Swagger loadedSwagger = RegistryUtils.getSwaggerLoader().loadSwagger(microservice, schemaId);
Assert.assertNotSame(swagger, loadedSwagger);
Assert.assertEquals(swagger, loadedSwagger);
}
@@ -127,7 +128,7 @@ public class TestSwaggerLoader extends TestRegistryBase {
expectedException.expect(IllegalStateException.class);
expectedException.expectMessage(
"no schema in local, and can not get schema from service center, appId=other, microserviceName=ms3, version=1.0, serviceId=003, schemaId=hello.");
- serviceRegistry.getSwaggerLoader().loadSwagger(microservice, schemaId);
+ RegistryUtils.getSwaggerLoader().loadSwagger(microservice, schemaId);
}
@Test
@@ -137,7 +138,7 @@ public class TestSwaggerLoader extends TestRegistryBase {
Microservice microservice = appManager.getOrCreateMicroserviceVersions("other", "ms3")
.getVersions().values().iterator().next().getMicroservice();
- Swagger loadedSwagger = serviceRegistry.getSwaggerLoader().loadSwagger(microservice, schemaId);
+ Swagger loadedSwagger = RegistryUtils.getSwaggerLoader().loadSwagger(microservice, schemaId);
Assert.assertNotSame(swagger, loadedSwagger);
Assert.assertEquals(swagger, loadedSwagger);
}
@@ -195,16 +196,16 @@ public class TestSwaggerLoader extends TestRegistryBase {
@Test
public void should_ignore_not_exist_location_when_register_swagger_in_location() {
- Map<String, Object> apps = Deencapsulation.getField(serviceRegistry.getSwaggerLoader(), "apps");
+ Map<String, Object> apps = Deencapsulation.getField(RegistryUtils.getSwaggerLoader(), "apps");
apps.clear();
- serviceRegistry.getSwaggerLoader().registerSwaggersInLocation("notExistPath");
+ RegistryUtils.getSwaggerLoader().registerSwaggersInLocation("notExistPath");
assertThat(apps).isEmpty();
}
@Test
public void should_ignore_non_yaml_file_when_register_swagger_in_location() {
- serviceRegistry.getSwaggerLoader().registerSwaggersInLocation("swagger-del");
- assertThat(serviceRegistry.getSwaggerLoader().loadFromMemory(appId, serviceName, "other")).isNull();
+ RegistryUtils.getSwaggerLoader().registerSwaggersInLocation("swagger-del");
+ assertThat(RegistryUtils.getSwaggerLoader().loadFromMemory(appId, serviceName, "other")).isNull();
}
@Test
@@ -248,12 +249,12 @@ public class TestSwaggerLoader extends TestRegistryBase {
}
};
- serviceRegistry.getSwaggerLoader().registerSwaggersInLocation("location");
+ RegistryUtils.getSwaggerLoader().registerSwaggersInLocation("location");
}
@Test
public void should_correct_register_swagger_in_location() {
- serviceRegistry.getSwaggerLoader().registerSwaggersInLocation("swagger-del");
- assertThat(serviceRegistry.getSwaggerLoader().loadFromMemory(appId, serviceName, "hello")).isNotNull();
+ RegistryUtils.getSwaggerLoader().registerSwaggersInLocation("swagger-del");
+ assertThat(RegistryUtils.getSwaggerLoader().loadFromMemory(appId, serviceName, "hello")).isNotNull();
}
}