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:10 UTC

[incubator-servicecomb-java-chassis] branch master updated (aaaaf5b -> 3dbfb87)

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git.


    from aaaaf5b  SCB-374 fix NPE when 404 not found
     new cee58b7  [SCB-394] framework version support SC which earlier than 1.0.0
     new ea98b4e  save serviceCenterInfo in AbstractServiceRegistry,compare version by class Version
     new 3dbfb87  fix ut

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../servicecomb/serviceregistry/api/Const.java     |  10 ++
 .../api/registry/MicroserviceFactory.java          |   9 -
 .../api/registry/ServiceCenterConfig.java          | 200 +++++++++++++++++++++
 .../{Framework.java => ServiceCenterInfo.java}     | 114 +++++++-----
 .../client/LocalServiceRegistryClientImpl.java     |  12 ++
 .../client/ServiceRegistryClient.java              |   6 +
 .../client/http/ServiceRegistryClientImpl.java     |  22 +++
 .../registry/AbstractServiceRegistry.java          |  40 +++++
 .../api/registry/TestFrameworkVersions.java        |   1 -
 .../api/registry/TestServiceCenterConfig.java      |  91 ++++++++++
 ...estBasePath.java => TestServiceCenterInfo.java} | 113 ++++++------
 .../client/LocalServiceRegistryClientImplTest.java |   7 +
 .../client/http/TestServiceRegistryClientImpl.java |  46 +++++
 .../registry/TestLocalServiceRegistry.java         |   1 +
 .../registry/TestRemoteServiceRegistry.java        |   1 -
 15 files changed, 558 insertions(+), 115 deletions(-)
 create mode 100644 service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterConfig.java
 copy service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/{Framework.java => ServiceCenterInfo.java} (56%)
 create mode 100644 service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterConfig.java
 copy service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/{TestBasePath.java => TestServiceCenterInfo.java} (53%)

-- 
To stop receiving notification emails like this one, please contact
liubao@apache.org.

[incubator-servicecomb-java-chassis] 03/03: fix ut

Posted by li...@apache.org.
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 3dbfb87eb6249f3ad41ea7514d1a73ec6e193bfe
Author: weichao666 <we...@huawei.com>
AuthorDate: Thu Mar 15 22:03:42 2018 +0800

    fix ut
---
 .../client/http/ServiceRegistryClientImpl.java     |  2 +-
 .../registry/AbstractServiceRegistry.java          | 24 ++++++++++++++++------
 .../registry/TestServiceRegistryFactory.java       | 13 ++----------
 3 files changed, 21 insertions(+), 18 deletions(-)

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 e916338..ab7f597 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 class ServiceRegistryClientImpl implements ServiceRegistryClient {
+public final 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 b524e2b..e30bf6f 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
@@ -104,9 +104,6 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
     }
 
     serviceCenterInfo = srClient.getServiceCenterInfo();
-    if (serviceCenterInfo == null) {
-      throw new IllegalStateException("Failed to load servicecenter info");
-    }
 
     createServiceCenterTask();
 
@@ -184,17 +181,32 @@ 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);
-    if (scVersion.compareTo(frameworkVersion) >= 0) {
+
+    if (needSetFrameworkVersion()) {
       framework.setVersion(FrameworkVersions.allVersions());
     }
     microservice.setFramework(framework);
     microservice.setRegisterBy(CONFIG_DEFAULT_REGISTER_BY);
   }
 
+  private boolean needSetFrameworkVersion() {
+    if (serviceCenterInfo == null) {
+      LOGGER.warn("Server startup when service center not started and cannot retrieve version info, assume latest.");
+      return true;
+    } else {
+      Version scVersion = VersionUtils.getOrCreate(serviceCenterInfo.getVersion());
+      Version frameworkVersion = VersionUtils.getOrCreate(Const.SERVICECENTER_FRAMEWORK_VERSION);
+
+      if (scVersion.compareTo(frameworkVersion) >= 0) {
+        return true;
+      } else {
+        return false;
+      }
+    }
+  }
+
   private void loadStaticConfiguration() {
     // TODO 如果yaml定义了paths规则属性,替换默认值,现需要DynamicPropertyFactory支持数组获取
     List<BasePath> paths = microservice.getPaths();
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 d6357a0..1e62441 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,7 +20,6 @@ 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;
@@ -43,16 +42,8 @@ public class TestServiceRegistryFactory {
     ServiceRegistryConfig serviceRegistryConfig = ServiceRegistryConfig.INSTANCE;
     MicroserviceDefinition microserviceDefinition = new MicroserviceDefinition(Collections.emptyList());
 
-    ServiceRegistry serviceRegistry = new RemoteServiceRegistry(eventBus, serviceRegistryConfig, microserviceDefinition) {
-      @Override
-      protected ServiceRegistryClient createServiceRegistryClient() {
-        return new ServiceRegistryClientImpl(ipPortManager) {
-          public ServiceCenterInfo getServiceCenterInfo() {
-            return new ServiceCenterInfo();
-          }
-        };
-      }
-    };
+    ServiceRegistry serviceRegistry =
+        ServiceRegistryFactory.create(eventBus, serviceRegistryConfig, microserviceDefinition);
     serviceRegistry.init();
     ServiceRegistryClient client = serviceRegistry.getServiceRegistryClient();
     Assert.assertTrue(client instanceof ServiceRegistryClientImpl);

-- 
To stop receiving notification emails like this one, please contact
liubao@apache.org.

[incubator-servicecomb-java-chassis] 01/03: [SCB-394] framework version support SC which earlier than 1.0.0

Posted by li...@apache.org.
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 cee58b7ee47fda6450c6da09930dfedc157ede53
Author: weichao666 <we...@huawei.com>
AuthorDate: Mon Mar 12 17:40:03 2018 +0800

    [SCB-394] framework version support SC which earlier than 1.0.0
---
 .../servicecomb/serviceregistry/api/Const.java     |   8 +
 .../api/registry/FrameworkVersions.java            |  17 ++
 .../api/registry/MicroserviceFactory.java          |   9 -
 .../api/registry/ServiceCenterConfig.java          | 200 +++++++++++++++++++++
 .../api/registry/ServiceCenterInfo.java            |  70 ++++++++
 .../client/LocalServiceRegistryClientImpl.java     |  12 ++
 .../client/ServiceRegistryClient.java              |   6 +
 .../client/http/ServiceRegistryClientImpl.java     |  22 +++
 .../registry/AbstractServiceRegistry.java          |  14 ++
 .../servicecomb/serviceregistry/TestRegistry.java  |  11 ++
 .../api/registry/TestFrameworkVersions.java        |  23 +++
 .../api/registry/TestServiceCenterConfig.java      |  91 ++++++++++
 .../api/registry/TestServiceCenterInfo.java        |  53 ++++++
 .../client/LocalServiceRegistryClientImplTest.java |   7 +
 .../client/http/TestServiceRegistryClientImpl.java |  46 +++++
 .../registry/TestLocalServiceRegistry.java         |  25 +++
 .../registry/TestRemoteServiceRegistry.java        |  16 ++
 17 files changed, 621 insertions(+), 9 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 c9f7e84..5f3173a 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
@@ -137,6 +137,14 @@ public final class Const {
       }
     }
 
+    public static final String SERVICECENTER_VERSION;
+    static {
+      if (VERSION_V3.equals(CURRENT_VERSION)) {
+        SERVICECENTER_VERSION = "/version";
+      } else {
+        SERVICECENTER_VERSION = V4_PREFIX + "/version";
+      }
+    }
   }
 
   public static final String REGISTRY_APP_ID = "default";
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 5c87855..a9dce0f 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,12 +22,29 @@ 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/api/registry/MicroserviceFactory.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceFactory.java
index 4e40aa1..beba2d9 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceFactory.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceFactory.java
@@ -17,8 +17,6 @@
 package org.apache.servicecomb.serviceregistry.api.registry;
 
 import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_APPLICATION_ID_KEY;
-import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_DEFAULT_REGISTER_BY;
-import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_FRAMEWORK_DEFAULT_NAME;
 import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_QUALIFIED_MICROSERVICE_DESCRIPTION_KEY;
 import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_QUALIFIED_MICROSERVICE_NAME_KEY;
 import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_QUALIFIED_MICROSERVICE_ROLE_KEY;
@@ -70,13 +68,6 @@ public class MicroserviceFactory {
           microservice.getServiceName()));
     }
 
-    // use default values, we can add configure item in future.
-    Framework framework = new Framework();
-    framework.setName(CONFIG_FRAMEWORK_DEFAULT_NAME);
-    framework.setVersion(FrameworkVersions.allVersions());
-    microservice.setFramework(framework);
-    microservice.setRegisterBy(CONFIG_DEFAULT_REGISTER_BY);
-
     return microservice;
   }
 
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterConfig.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterConfig.java
new file mode 100644
index 0000000..26049e1
--- /dev/null
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterConfig.java
@@ -0,0 +1,200 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.serviceregistry.api.registry;
+
+public class ServiceCenterConfig {
+  private int maxHeaderBytes;
+
+  private int maxBodyBytes;
+
+  private String readHeaderTimeout;
+
+  private String readTimeout;
+
+  private String idleTimeout;
+
+  private String writeTimeout;
+
+  private String limitTTLUnit;
+
+  private int limitConnections;
+
+  private String limitIPLookup;
+
+  private String sslEnabled;
+
+  private String sslMinVersion;
+
+  private String sslVerifyPeer;
+
+  private String sslCiphers;
+
+  private String autoSyncInterval;
+
+  private int compactIndexDelta;
+
+  private String compactInterval;
+
+  private int logRotateSize;
+
+  private int logBackupCount;
+
+  public int getMaxHeaderBytes() {
+    return maxHeaderBytes;
+  }
+
+  public void setMaxHeaderBytes(int maxHeaderBytes) {
+    this.maxHeaderBytes = maxHeaderBytes;
+  }
+
+  public int getMaxBodyBytes() {
+    return maxBodyBytes;
+  }
+
+  public void setMaxBodyBytes(int maxBodyBytes) {
+    this.maxBodyBytes = maxBodyBytes;
+  }
+
+  public String getReadHeaderTimeout() {
+    return readHeaderTimeout;
+  }
+
+  public void setReadHeaderTimeout(String readHeaderTimeout) {
+    this.readHeaderTimeout = readHeaderTimeout;
+  }
+
+  public String getReadTimeout() {
+    return readTimeout;
+  }
+
+  public void setReadTimeout(String readTimeout) {
+    this.readTimeout = readTimeout;
+  }
+
+  public String getIdleTimeout() {
+    return idleTimeout;
+  }
+
+  public void setIdleTimeout(String idleTimeout) {
+    this.idleTimeout = idleTimeout;
+  }
+
+  public String getWriteTimeout() {
+    return writeTimeout;
+  }
+
+  public void setWriteTimeout(String writeTimeout) {
+    this.writeTimeout = writeTimeout;
+  }
+
+  public String getLimitTTLUnit() {
+    return limitTTLUnit;
+  }
+
+  public void setLimitTTLUnit(String limitTTLUnit) {
+    this.limitTTLUnit = limitTTLUnit;
+  }
+
+  public int getLimitConnections() {
+    return limitConnections;
+  }
+
+  public void setLimitConnections(int limitConnections) {
+    this.limitConnections = limitConnections;
+  }
+
+  public String getLimitIPLookup() {
+    return limitIPLookup;
+  }
+
+  public void setLimitIPLookup(String limitIPLookup) {
+    this.limitIPLookup = limitIPLookup;
+  }
+
+  public String getSslEnabled() {
+    return sslEnabled;
+  }
+
+  public void setSslEnabled(String sslEnabled) {
+    this.sslEnabled = sslEnabled;
+  }
+
+  public String getSslMinVersion() {
+    return sslMinVersion;
+  }
+
+  public void setSslMinVersion(String sslMinVersion) {
+    this.sslMinVersion = sslMinVersion;
+  }
+
+  public String getSslVerifyPeer() {
+    return sslVerifyPeer;
+  }
+
+  public void setSslVerifyPeer(String sslVerifyPeer) {
+    this.sslVerifyPeer = sslVerifyPeer;
+  }
+
+  public String getSslCiphers() {
+    return sslCiphers;
+  }
+
+  public void setSslCiphers(String sslCiphers) {
+    this.sslCiphers = sslCiphers;
+  }
+
+  public String getAutoSyncInterval() {
+    return autoSyncInterval;
+  }
+
+  public void setAutoSyncInterval(String autoSyncInterval) {
+    this.autoSyncInterval = autoSyncInterval;
+  }
+
+  public int getCompactIndexDelta() {
+    return compactIndexDelta;
+  }
+
+  public void setCompactIndexDelta(int compactIndexDelta) {
+    this.compactIndexDelta = compactIndexDelta;
+  }
+
+  public String getCompactInterval() {
+    return compactInterval;
+  }
+
+  public void setCompactInterval(String compactInterval) {
+    this.compactInterval = compactInterval;
+  }
+
+  public int getLogRotateSize() {
+    return logRotateSize;
+  }
+
+  public void setLogRotateSize(int logRotateSize) {
+    this.logRotateSize = logRotateSize;
+  }
+
+  public int getLogBackupCount() {
+    return logBackupCount;
+  }
+
+  public void setLogBackupCount(int logBackupCount) {
+    this.logBackupCount = logBackupCount;
+  }
+}
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterInfo.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterInfo.java
new file mode 100644
index 0000000..65dca2b
--- /dev/null
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/ServiceCenterInfo.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.serviceregistry.api.registry;
+
+public class ServiceCenterInfo {
+  private String version;
+
+  private String buildTag;
+
+  private String runMode;
+
+  private String apiVersion;
+
+  private ServiceCenterConfig config;
+
+  public String getVersion() {
+    return version;
+  }
+
+  public void setVersion(String version) {
+    this.version = version;
+  }
+
+  public String getBuildTag() {
+    return buildTag;
+  }
+
+  public void setBuildTag(String buildTag) {
+    this.buildTag = buildTag;
+  }
+
+  public String getRunMode() {
+    return runMode;
+  }
+
+  public void setRunMode(String runMode) {
+    this.runMode = runMode;
+  }
+
+  public String getApiVersion() {
+    return apiVersion;
+  }
+
+  public void setApiVersion(String apiVersion) {
+    this.apiVersion = apiVersion;
+  }
+
+  public ServiceCenterConfig getConfig() {
+    return config;
+  }
+
+  public void setConfig(ServiceCenterConfig config) {
+    this.config = config;
+  }
+}
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
index 663cde3..2cb228f 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImpl.java
@@ -34,6 +34,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
+import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterConfig;
+import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterInfo;
 import org.apache.servicecomb.serviceregistry.api.response.FindInstancesResponse;
 import org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse;
 import org.apache.servicecomb.serviceregistry.api.response.MicroserviceInstanceChangedEvent;
@@ -371,5 +373,15 @@ public class LocalServiceRegistryClientImpl implements ServiceRegistryClient {
     return instances.get(instanceId);
   }
 
+  @Override
+  public ServiceCenterInfo getServiceCenterInfo() {
+    ServiceCenterInfo info = new ServiceCenterInfo();
+    info.setVersion("1.0.0");
+    info.setBuildTag("20180312");
+    info.setRunMode("dev");
+    info.setApiVersion("4.0.0");
+    info.setConfig(new ServiceCenterConfig());
+    return info;
+  }
 
 }
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
index 6167824..2cf20b9 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/ServiceRegistryClient.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
 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.api.response.HeartbeatResponse;
 import org.apache.servicecomb.serviceregistry.api.response.MicroserviceInstanceChangedEvent;
 import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
@@ -140,4 +141,9 @@ public interface ServiceRegistryClient {
    * @return MicroserviceInstance
    */
   MicroserviceInstance findServiceInstance(String serviceId, String instanceId);
+
+  /**
+   * get ServiceCenterVersionInfo
+   */
+  ServiceCenterInfo getServiceCenterInfo();
 }
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 d48d0bc..ab7f597 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
@@ -35,6 +35,7 @@ import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
 import org.apache.servicecomb.serviceregistry.api.Const;
 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.api.request.CreateSchemaRequest;
 import org.apache.servicecomb.serviceregistry.api.request.CreateServiceRequest;
 import org.apache.servicecomb.serviceregistry.api.request.RegisterInstanceRequest;
@@ -735,4 +736,25 @@ public final class ServiceRegistryClientImpl implements ServiceRegistryClient {
       return null;
     }
   }
+
+  @Override
+  public ServiceCenterInfo getServiceCenterInfo() {
+    Holder<ServiceCenterInfo> holder = new Holder<>();
+    IpPort ipPort = ipPortManager.getAvailableAddress();
+
+    CountDownLatch countDownLatch = new CountDownLatch(1);
+    RestUtils.get(ipPort,
+        Const.REGISTRY_API.SERVICECENTER_VERSION,
+        new RequestParam(),
+        syncHandler(countDownLatch, ServiceCenterInfo.class, holder));
+    try {
+      countDownLatch.await();
+      if (holder.value != null) {
+        return holder.value;
+      }
+    } catch (Exception e) {
+      LOGGER.error("query servicecenter version info failed.", e);
+    }
+    return null;
+  }
 }
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 9b67ed5..6ad86bf 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
@@ -16,6 +16,9 @@
  */
 package org.apache.servicecomb.serviceregistry.registry;
 
+import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_DEFAULT_REGISTER_BY;
+import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_FRAMEWORK_DEFAULT_NAME;
+
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -25,6 +28,8 @@ import org.apache.servicecomb.serviceregistry.Features;
 import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import org.apache.servicecomb.serviceregistry.api.Const;
 import org.apache.servicecomb.serviceregistry.api.registry.BasePath;
+import org.apache.servicecomb.serviceregistry.api.registry.Framework;
+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;
@@ -162,11 +167,20 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
   public void run() {
     loadStaticConfiguration();
 
+    loadFrameworkVersions();
     // try register
     // if failed, then retry in thread
     serviceCenterTask.init();
   }
 
+  private void loadFrameworkVersions() {
+    Framework framework = new Framework();
+    framework.setName(CONFIG_FRAMEWORK_DEFAULT_NAME);
+    framework.setVersion(FrameworkVersions.allVersions());
+    microservice.setFramework(framework);
+    microservice.setRegisterBy(CONFIG_DEFAULT_REGISTER_BY);
+  }
+
   private void loadStaticConfiguration() {
     // TODO 如果yaml定义了paths规则属性,替换默认值,现需要DynamicPropertyFactory支持数组获取
     List<BasePath> paths = microservice.getPaths();
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 8237ef4..f4e9382 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,6 +34,8 @@ 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;
@@ -55,6 +57,9 @@ 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 {
@@ -64,6 +69,11 @@ 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
@@ -72,6 +82,7 @@ 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 d02bd55..5d16727 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,10 +17,33 @@
 
 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() {
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterConfig.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterConfig.java
new file mode 100644
index 0000000..101385a
--- /dev/null
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterConfig.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.serviceregistry.api.registry;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestServiceCenterConfig {
+  ServiceCenterConfig config = new ServiceCenterConfig();
+
+  @Test
+  public void testDefaultValues() {
+    Assert.assertEquals(0, config.getMaxHeaderBytes());
+    Assert.assertEquals(0, config.getMaxBodyBytes());
+    Assert.assertNull(config.getReadHeaderTimeout());
+    Assert.assertNull(config.getReadTimeout());
+    Assert.assertNull(config.getIdleTimeout());
+    Assert.assertNull(config.getWriteTimeout());
+    Assert.assertNull(config.getLimitTTLUnit());
+    Assert.assertEquals(0, config.getLimitConnections());
+    Assert.assertNull(config.getLimitIPLookup());
+    Assert.assertNull(config.getSslEnabled());
+    Assert.assertNull(config.getSslMinVersion());
+    Assert.assertNull(config.getSslVerifyPeer());
+    Assert.assertNull(config.getSslCiphers());
+    Assert.assertNull(config.getAutoSyncInterval());
+    Assert.assertEquals(0, config.getCompactIndexDelta());
+    Assert.assertNull(config.getCompactInterval());
+    Assert.assertEquals(0, config.getLogRotateSize());
+    Assert.assertEquals(0, config.getLogBackupCount());
+  }
+
+  @Test
+  public void testInitializedValues() {
+    initMicroservice(); //Initialize the Object
+    Assert.assertEquals(10, config.getMaxHeaderBytes());
+    Assert.assertEquals(10, config.getMaxBodyBytes());
+    Assert.assertEquals("60s", config.getReadHeaderTimeout());
+    Assert.assertEquals("60s", config.getReadTimeout());
+    Assert.assertEquals("60s", config.getIdleTimeout());
+    Assert.assertEquals("60s", config.getWriteTimeout());
+    Assert.assertEquals("s", config.getLimitTTLUnit());
+    Assert.assertEquals(0, config.getLimitConnections());
+    Assert.assertEquals("xxx", config.getLimitIPLookup());
+    Assert.assertEquals("false", config.getSslEnabled());
+    Assert.assertEquals("xxx", config.getSslMinVersion());
+    Assert.assertEquals("true", config.getSslVerifyPeer());
+    Assert.assertEquals("xxx", config.getSslCiphers());
+    Assert.assertEquals("30s", config.getAutoSyncInterval());
+    Assert.assertEquals(100, config.getCompactIndexDelta());
+    Assert.assertEquals("100", config.getCompactInterval());
+    Assert.assertEquals(20, config.getLogRotateSize());
+    Assert.assertEquals(50, config.getLogBackupCount());
+  }
+
+  private void initMicroservice() {
+    config.setMaxHeaderBytes(10);
+    config.setMaxBodyBytes(10);
+    config.setReadHeaderTimeout("60s");
+    config.setReadTimeout("60s");
+    config.setIdleTimeout("60s");
+    config.setWriteTimeout("60s");
+    config.setLimitTTLUnit("s");
+    config.setLimitConnections(0);
+    config.setLimitIPLookup("xxx");
+    config.setSslEnabled("false");
+    config.setSslMinVersion("xxx");
+    config.setSslVerifyPeer("true");
+    config.setSslCiphers("xxx");
+    config.setAutoSyncInterval("30s");
+    config.setCompactIndexDelta(100);
+    config.setCompactInterval("100");
+    config.setLogRotateSize(20);
+    config.setLogBackupCount(50);
+  }
+}
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterInfo.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterInfo.java
new file mode 100644
index 0000000..50c4bb0
--- /dev/null
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/api/registry/TestServiceCenterInfo.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.serviceregistry.api.registry;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestServiceCenterInfo {
+  ServiceCenterInfo info = new ServiceCenterInfo();
+  ServiceCenterConfig config = new ServiceCenterConfig();
+
+  @Test
+  public void testDefaultValues() {
+    Assert.assertNull(info.getVersion());
+    Assert.assertNull(info.getBuildTag());
+    Assert.assertNull(info.getRunMode());
+    Assert.assertNull(info.getApiVersion());
+    Assert.assertNull(info.getConfig());
+  }
+
+  @Test
+  public void testInitializedValues() {
+    initMicroservice(); //Initialize the Object
+    Assert.assertEquals("x.x.x", info.getVersion());
+    Assert.assertEquals("xxx", info.getBuildTag());
+    Assert.assertEquals("dev", info.getRunMode());
+    Assert.assertEquals("x.x.x", info.getApiVersion());
+    Assert.assertNotNull(info.getConfig());
+  }
+
+  private void initMicroservice() {
+    info.setVersion("x.x.x");
+    info.setBuildTag("xxx");
+    info.setRunMode("dev");
+    info.setApiVersion("x.x.x");
+    info.setConfig(config);
+  }
+}
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImplTest.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImplTest.java
index b4eee38..c841f25 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImplTest.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/LocalServiceRegistryClientImplTest.java
@@ -22,6 +22,7 @@ import java.util.List;
 
 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.http.MicroserviceInstances;
 import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
 import org.hamcrest.Matchers;
@@ -172,4 +173,10 @@ public class LocalServiceRegistryClientImplTest {
     String instanceId = registryClient.registerMicroserviceInstance(instance);
     Assert.assertNotNull(registryClient.findServiceInstance(microservice.getServiceId(), instanceId));
   }
+
+  @Test
+  public void testGetServiceCenterInfo() {
+    ServiceCenterInfo serviceCenterInfo = registryClient.getServiceCenterInfo();
+    Assert.assertEquals("1.0.0", serviceCenterInfo.getVersion());
+  }
 }
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/http/TestServiceRegistryClientImpl.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/http/TestServiceRegistryClientImpl.java
index 56af6d2..23bdf94 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/http/TestServiceRegistryClientImpl.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/client/http/TestServiceRegistryClientImpl.java
@@ -32,6 +32,8 @@ import org.apache.log4j.spi.LoggingEvent;
 import org.apache.servicecomb.foundation.common.net.IpPort;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceFactory;
+import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterConfig;
+import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterInfo;
 import org.apache.servicecomb.serviceregistry.api.response.GetExistenceResponse;
 import org.apache.servicecomb.serviceregistry.client.ClientException;
 import org.apache.servicecomb.serviceregistry.client.IpPortManager;
@@ -321,4 +323,48 @@ public class TestServiceRegistryClientImpl {
 
     Assert.assertNull(oClient.findServiceInstance(null, "appId", "serviceName", "1.0.0+"));
   }
+
+  @Test
+  public void testGetServiceCenterInfoSuccess() {
+    ServiceCenterInfo serviceCenterInfo = new ServiceCenterInfo();
+    serviceCenterInfo.setVersion("x.x.x");
+    serviceCenterInfo.setBuildTag("xxx");
+    serviceCenterInfo.setRunMode("dev");
+    serviceCenterInfo.setApiVersion("x.x.x");
+    serviceCenterInfo.setConfig(new ServiceCenterConfig());
+
+    new MockUp<RestUtils>() {
+      @Mock
+      void httpDo(RequestContext requestContext, Handler<RestResponse> responseHandler) {
+        Holder<ServiceCenterInfo> holder = Deencapsulation.getField(responseHandler, "arg$4");
+        holder.value = serviceCenterInfo;
+      }
+    };
+    ServiceCenterInfo info = oClient.getServiceCenterInfo();
+    Assert.assertEquals("x.x.x", info.getVersion());
+    Assert.assertEquals("xxx", info.getBuildTag());
+    Assert.assertEquals("dev", info.getRunMode());
+    Assert.assertNotNull(info.getConfig());
+  }
+
+  @Test
+  public void testGetServiceCenterInfoException() {
+    InterruptedException e = new InterruptedException();
+    new MockUp<CountDownLatch>() {
+      @Mock
+      public void await() throws InterruptedException {
+        throw e;
+      }
+    };
+
+    new RegisterSchemaTester() {
+      void doRun(java.util.List<LoggingEvent> events) {
+        oClient.getServiceCenterInfo();
+        Assert.assertEquals(
+            "query servicecenter version info failed.",
+            events.get(0).getMessage());
+        Assert.assertEquals(e, events.get(0).getThrowableInformation().getThrowable());
+      }
+    }.run();
+  }
 }
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 b422d59..cbdcc73 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,12 +19,37 @@ 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() {
     ServiceRegistry serviceRegistry = ServiceRegistryFactory.createLocal();
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 d46ef93..8b21c34 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,6 +25,7 @@ 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;
@@ -33,10 +34,12 @@ 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;
 
@@ -48,6 +51,10 @@ 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) {
@@ -94,6 +101,10 @@ 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
 
@@ -134,4 +145,9 @@ public class TestRemoteServiceRegistry {
     Deencapsulation.setField(remote, "taskPool", taskPool);
     bus.post(event);
   }
+
+  @AfterClass
+  public static void teardown() {
+    Deencapsulation.setField(RegistryUtils.class, "serviceRegistry", null);
+  }
 }

-- 
To stop receiving notification emails like this one, please contact
liubao@apache.org.

[incubator-servicecomb-java-chassis] 02/03: save serviceCenterInfo in AbstractServiceRegistry, compare version by class Version

Posted by li...@apache.org.
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.