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 <[email protected]> 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(); } }
