You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/03/16 01:54:12 UTC
[incubator-servicecomb-java-chassis] 02/03: save serviceCenterInfo
in AbstractServiceRegistry, compare version by class Version
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 <we...@huawei.com>
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
liubao@apache.org.