This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit ea98b4e17e50a6c0572ab81f0a28ca64b9071a84 Author: weichao666 <[email protected]> AuthorDate: Thu Mar 15 20:55:54 2018 +0800 save serviceCenterInfo in AbstractServiceRegistry,compare version by class Version --- .../servicecomb/serviceregistry/api/Const.java | 2 ++ .../api/registry/FrameworkVersions.java | 17 --------------- .../client/http/ServiceRegistryClientImpl.java | 2 +- .../registry/AbstractServiceRegistry.java | 16 ++++++++++++++- .../servicecomb/serviceregistry/TestRegistry.java | 11 ---------- .../api/registry/TestFrameworkVersions.java | 24 ---------------------- .../registry/TestLocalServiceRegistry.java | 24 ---------------------- .../registry/TestRemoteServiceRegistry.java | 17 --------------- .../registry/TestServiceRegistryFactory.java | 13 ++++++++++-- 9 files changed, 29 insertions(+), 97 deletions(-) diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java index 5f3173a..8166bec 100644 --- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java +++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java @@ -158,4 +158,6 @@ public final class Const { public static final String URL_PREFIX = "urlPrefix"; public static final String INSTANCE_PUBKEY_PRO = "publickey"; + + public static final String SERVICECENTER_FRAMEWORK_VERSION = "1.0.0"; } diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java index a9dce0f..5c87855 100644 --- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java +++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java @@ -22,29 +22,12 @@ import java.util.Map; import java.util.Map.Entry; import java.util.ServiceLoader; -import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.api.Versions; -import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class FrameworkVersions { - private static final Logger LOGGER = LoggerFactory.getLogger(FrameworkVersions.class); private static final ServiceLoader<Versions> frameworkVersions = ServiceLoader.load(Versions.class); public static String allVersions() { - ServiceRegistryClient client = RegistryUtils.getServiceRegistryClient(); - ServiceCenterInfo serviceCenterInfo = client.getServiceCenterInfo(); - if (serviceCenterInfo == null) { - LOGGER.error("query servicecenter version info failed."); - } - String scVersion = serviceCenterInfo.getVersion(); - //old scVersion which earlier than 1.0.0 not report frameworkVersion, e.g. 0.5.0 - String oldScVersion = "0.[0-5].0+"; - if (scVersion.matches(oldScVersion)) { - return ""; - } - Map<String, String> versions = new HashMap<>(); Entry<String, String> entry; StringBuffer sb = new StringBuffer(); diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java index ab7f597..e916338 100644 --- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java +++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/ServiceRegistryClientImpl.java @@ -65,7 +65,7 @@ import io.vertx.core.Handler; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpClientResponse; -public final class ServiceRegistryClientImpl implements ServiceRegistryClient { +public class ServiceRegistryClientImpl implements ServiceRegistryClient { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceRegistryClientImpl.class); private IpPortManager ipPortManager; 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 6ad86bf..b524e2b 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 @@ -33,6 +33,7 @@ import org.apache.servicecomb.serviceregistry.api.registry.FrameworkVersions; 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.registry.ServiceCenterInfo; import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManager; import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManagerNew; import org.apache.servicecomb.serviceregistry.client.IpPortManager; @@ -45,6 +46,8 @@ import org.apache.servicecomb.serviceregistry.definition.MicroserviceDefinition; import org.apache.servicecomb.serviceregistry.task.MicroserviceServiceCenterTask; import org.apache.servicecomb.serviceregistry.task.ServiceCenterTask; import org.apache.servicecomb.serviceregistry.task.event.ShutdownEvent; +import org.apache.servicecomb.serviceregistry.version.Version; +import org.apache.servicecomb.serviceregistry.version.VersionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,6 +78,8 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry { protected ServiceCenterTask serviceCenterTask; + protected ServiceCenterInfo serviceCenterInfo; + public AbstractServiceRegistry(EventBus eventBus, ServiceRegistryConfig serviceRegistryConfig, MicroserviceDefinition microserviceDefinition) { this.eventBus = eventBus; @@ -98,6 +103,11 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry { srClient = createServiceRegistryClient(); } + serviceCenterInfo = srClient.getServiceCenterInfo(); + if (serviceCenterInfo == null) { + throw new IllegalStateException("Failed to load servicecenter info"); + } + createServiceCenterTask(); eventBus.register(this); @@ -174,9 +184,13 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry { } private void loadFrameworkVersions() { + Version scVersion = VersionUtils.getOrCreate(serviceCenterInfo.getVersion()); + Version frameworkVersion = VersionUtils.getOrCreate(Const.SERVICECENTER_FRAMEWORK_VERSION); Framework framework = new Framework(); framework.setName(CONFIG_FRAMEWORK_DEFAULT_NAME); - framework.setVersion(FrameworkVersions.allVersions()); + if (scVersion.compareTo(frameworkVersion) >= 0) { + framework.setVersion(FrameworkVersions.allVersions()); + } microservice.setFramework(framework); microservice.setRegisterBy(CONFIG_DEFAULT_REGISTER_BY); } 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 f4e9382..8237ef4 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 @@ -34,8 +34,6 @@ import org.apache.servicecomb.config.ConfigUtil; 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.api.registry.ServiceCenterInfo; -import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances; import org.apache.servicecomb.serviceregistry.registry.ServiceRegistryFactory; import org.junit.AfterClass; @@ -57,9 +55,6 @@ import mockit.Mocked; public class TestRegistry { private static final AbstractConfiguration inMemoryConfig = new ConcurrentMapConfiguration(); - private static ServiceRegistryClient registryClient = Mockito.mock(ServiceRegistryClient.class); - private static ServiceRegistry serviceRegistry = Mockito.mock(ServiceRegistry.class); - private static ServiceCenterInfo serviceCenterInfo = Mockito.mock(ServiceCenterInfo.class); @BeforeClass public static void initSetup() throws Exception { @@ -69,11 +64,6 @@ public class TestRegistry { configuration.addConfiguration(inMemoryConfig); ConfigurationManager.install(configuration); - - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", serviceRegistry); - Mockito.when(serviceRegistry.getServiceRegistryClient()).thenReturn(registryClient); - Mockito.when(registryClient.getServiceCenterInfo()).thenReturn(serviceCenterInfo); - Mockito.when(serviceCenterInfo.getVersion()).thenReturn("1.0.0"); } @AfterClass @@ -82,7 +72,6 @@ public class TestRegistry { Deencapsulation.setField(ConfigurationManager.class, "customConfigurationInstalled", false); Deencapsulation.setField(DynamicPropertyFactory.class, "config", null); RegistryUtils.setServiceRegistry(null); - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", null); } @Before diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestFrameworkVersions.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestFrameworkVersions.java index 5d16727..e0dde1a 100644 --- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestFrameworkVersions.java +++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestFrameworkVersions.java @@ -17,34 +17,10 @@ package org.apache.servicecomb.serviceregistry.api.registry; -import org.apache.servicecomb.serviceregistry.RegistryUtils; -import org.apache.servicecomb.serviceregistry.ServiceRegistry; -import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; -import org.junit.AfterClass; import org.junit.Assert; -import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.Mockito; -import mockit.Deencapsulation; public class TestFrameworkVersions { - private static ServiceRegistryClient registryClient = Mockito.mock(ServiceRegistryClient.class); - private static ServiceRegistry serviceRegistry = Mockito.mock(ServiceRegistry.class); - private static ServiceCenterInfo serviceCenterInfo = Mockito.mock(ServiceCenterInfo.class); - - @BeforeClass - public static void init() { - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", serviceRegistry); - Mockito.when(serviceRegistry.getServiceRegistryClient()).thenReturn(registryClient); - Mockito.when(registryClient.getServiceCenterInfo()).thenReturn(serviceCenterInfo); - Mockito.when(serviceCenterInfo.getVersion()).thenReturn("1.0.0"); - } - - @AfterClass - public static void teardown() { - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", null); - } - @Test public void testFrameworkVersions() { Assert.assertEquals("ServiceComb:null", FrameworkVersions.allVersions()); diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestLocalServiceRegistry.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestLocalServiceRegistry.java index cbdcc73..6332995 100644 --- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestLocalServiceRegistry.java +++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestLocalServiceRegistry.java @@ -19,36 +19,12 @@ package org.apache.servicecomb.serviceregistry.registry; import java.util.HashMap; import java.util.Map; -import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.ServiceRegistry; import org.apache.servicecomb.serviceregistry.api.registry.Microservice; -import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterInfo; -import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; -import org.junit.AfterClass; import org.junit.Assert; -import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.Mockito; - -import mockit.Deencapsulation; public class TestLocalServiceRegistry { - private static ServiceRegistryClient registryClient = Mockito.mock(ServiceRegistryClient.class); - private static ServiceRegistry serviceRegistry = Mockito.mock(ServiceRegistry.class); - private static ServiceCenterInfo serviceCenterInfo = Mockito.mock(ServiceCenterInfo.class); - - @BeforeClass - public static void init() { - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", serviceRegistry); - Mockito.when(serviceRegistry.getServiceRegistryClient()).thenReturn(registryClient); - Mockito.when(registryClient.getServiceCenterInfo()).thenReturn(serviceCenterInfo); - Mockito.when(serviceCenterInfo.getVersion()).thenReturn("1.0.0"); - } - - @AfterClass - public static void teardown() { - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", null); - } @Test public void testLifeCycle() { diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestRemoteServiceRegistry.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestRemoteServiceRegistry.java index 8b21c34..5e8e6e7 100644 --- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestRemoteServiceRegistry.java +++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/registry/TestRemoteServiceRegistry.java @@ -25,7 +25,6 @@ import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.foundation.common.net.IpPort; import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.ServiceRegistry; -import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterInfo; import org.apache.servicecomb.serviceregistry.client.LocalServiceRegistryClientImpl; import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; import org.apache.servicecomb.serviceregistry.config.ServiceRegistryConfig; @@ -34,13 +33,10 @@ import org.apache.servicecomb.serviceregistry.definition.MicroserviceDefinition; import org.apache.servicecomb.serviceregistry.task.event.PullMicroserviceVersionsInstancesEvent; import org.apache.servicecomb.serviceregistry.task.event.ShutdownEvent; import org.hamcrest.Matchers; -import org.junit.AfterClass; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.mockito.Mockito; - import com.google.common.eventbus.EventBus; import mockit.Deencapsulation; @@ -51,10 +47,6 @@ import mockit.MockUp; import mockit.Mocked; public class TestRemoteServiceRegistry { - private static ServiceRegistryClient registryClient = Mockito.mock(ServiceRegistryClient.class); - private static ServiceRegistry serviceRegistry = Mockito.mock(ServiceRegistry.class); - private static ServiceCenterInfo serviceCenterInfo = Mockito.mock(ServiceCenterInfo.class); - class TestingRemoteServiceRegistry extends RemoteServiceRegistry { public TestingRemoteServiceRegistry(EventBus eventBus, ServiceRegistryConfig serviceRegistryConfig, MicroserviceDefinition microserviceDefinition) { @@ -101,10 +93,6 @@ public class TestRemoteServiceRegistry { EventBus bus = new EventBus(); RemoteServiceRegistry remote = new TestingRemoteServiceRegistry(bus, config, definition); remote.init(); - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", serviceRegistry); - Mockito.when(serviceRegistry.getServiceRegistryClient()).thenReturn(registryClient); - Mockito.when(registryClient.getServiceCenterInfo()).thenReturn(serviceCenterInfo); - Mockito.when(serviceCenterInfo.getVersion()).thenReturn("1.0.0"); remote.run(); Assert.assertTrue(2 <= remote.getTaskPool().getTaskCount()); // includes complete tasks @@ -145,9 +133,4 @@ public class TestRemoteServiceRegistry { Deencapsulation.setField(remote, "taskPool", taskPool); bus.post(event); } - - @AfterClass - public static void teardown() { - Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", null); - } } 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 1e62441..d6357a0 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 @@ -20,6 +20,7 @@ package org.apache.servicecomb.serviceregistry.registry; import java.util.Collections; import org.apache.servicecomb.serviceregistry.ServiceRegistry; +import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterInfo; import org.apache.servicecomb.serviceregistry.client.LocalServiceRegistryClientImpl; import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; import org.apache.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl; @@ -42,8 +43,16 @@ public class TestServiceRegistryFactory { ServiceRegistryConfig serviceRegistryConfig = ServiceRegistryConfig.INSTANCE; MicroserviceDefinition microserviceDefinition = new MicroserviceDefinition(Collections.emptyList()); - ServiceRegistry serviceRegistry = - ServiceRegistryFactory.create(eventBus, serviceRegistryConfig, microserviceDefinition); + ServiceRegistry serviceRegistry = new RemoteServiceRegistry(eventBus, serviceRegistryConfig, microserviceDefinition) { + @Override + protected ServiceRegistryClient createServiceRegistryClient() { + return new ServiceRegistryClientImpl(ipPortManager) { + public ServiceCenterInfo getServiceCenterInfo() { + return new ServiceCenterInfo(); + } + }; + } + }; serviceRegistry.init(); ServiceRegistryClient client = serviceRegistry.getServiceRegistryClient(); Assert.assertTrue(client instanceof ServiceRegistryClientImpl); -- To stop receiving notification emails like this one, please contact [email protected].
