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/servicecomb-java-chassis.git

commit 3a2e9cc3aad610ef1778487857a4debd32628ff9
Author: heyile <[email protected]>
AuthorDate: Sat Nov 24 14:58:40 2018 +0800

    [SCB-1039]Add interface to compatible with ServiceCenter Aggregator
---
 .../definition/TestMicroserviceVersionMeta.java    |  8 ++-
 .../TestMicroserviceVersionMetaFactory.java        |  7 ++-
 .../servicecomb/serviceregistry/RegistryUtils.java |  2 +-
 .../serviceregistry/ServiceRegistry.java           |  6 +-
 .../client/LocalServiceRegistryClientImpl.java     |  9 +--
 .../client/ServiceRegistryClient.java              |  4 +-
 .../client/http/ServiceRegistryClientImpl.java     | 64 ++++++++--------------
 .../consumer/MicroserviceVersion.java              |  2 +-
 .../registry/AbstractServiceRegistry.java          |  2 +-
 .../client/http/TestServiceRegistryClientImpl.java |  7 ---
 .../consumer/MicroserviceVersionTestUtils.java     | 12 +++-
 .../TestDefaultMicroserviceVersionFactory.java     |  7 ++-
 .../consumer/TestMicroserviceVersion.java          | 14 +++--
 .../consumer/TestMicroserviceVersionRule.java      | 38 +++++++------
 .../consumer/TestMicroserviceVersions.java         | 21 ++++++-
 15 files changed, 109 insertions(+), 94 deletions(-)

diff --git 
a/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMeta.java
 
b/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMeta.java
index fd24f6d..9f5d680 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMeta.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMeta.java
@@ -26,6 +26,7 @@ import 
org.apache.servicecomb.core.definition.classloader.PrivateMicroserviceCla
 import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
 import org.apache.servicecomb.core.definition.schema.ConsumerSchemaFactory;
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.hamcrest.Matchers;
 import org.junit.AfterClass;
@@ -35,6 +36,7 @@ import org.junit.Test;
 import mockit.Expectations;
 import mockit.Mock;
 import mockit.MockUp;
+import mockit.Mocked;
 
 public class TestMicroserviceVersionMeta {
   @AfterClass
@@ -44,7 +46,7 @@ public class TestMicroserviceVersionMeta {
   }
 
   @Test
-  public void construct() {
+  public void construct(@Mocked ServiceRegistry serviceRegistry) {
     String microserviceName = "app:ms";
     String microserviceId = "id";
     Microservice microservice = new Microservice();
@@ -52,7 +54,9 @@ public class TestMicroserviceVersionMeta {
 
     new Expectations(RegistryUtils.class) {
       {
-        RegistryUtils.getMicroservice(microserviceId);
+        RegistryUtils.getServiceRegistry();
+        result = serviceRegistry;
+        serviceRegistry.getAggregatedRemoteMicroservice(microserviceId);
         result = microservice;
       }
     };
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMetaFactory.java
 
b/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMetaFactory.java
index bf6c527..8e5382a 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMetaFactory.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/definition/TestMicroserviceVersionMetaFactory.java
@@ -23,6 +23,7 @@ import 
org.apache.servicecomb.core.definition.classloader.PrivateMicroserviceCla
 import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
 import org.apache.servicecomb.core.definition.schema.ConsumerSchemaFactory;
 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.consumer.MicroserviceVersion;
 import org.hamcrest.Matchers;
@@ -58,7 +59,7 @@ public class TestMicroserviceVersionMetaFactory {
 
   @Test
   public void create(@Mocked ConsumerSchemaFactory consumerSchemaFactory,
-      @Mocked SchemaListenerManager schemaListenerManager) {
+      @Mocked SchemaListenerManager schemaListenerManager, @Mocked 
ServiceRegistry serviceRegistry) {
     String microserviceName = "app:ms";
     String microserviceId = "id";
     Microservice microservice = new Microservice();
@@ -66,7 +67,9 @@ public class TestMicroserviceVersionMetaFactory {
 
     new Expectations(RegistryUtils.class) {
       {
-        RegistryUtils.getMicroservice(microserviceId);
+        RegistryUtils.getServiceRegistry();
+        result = serviceRegistry;
+        serviceRegistry.getAggregatedRemoteMicroservice(microserviceId);
         result = microservice;
       }
     };
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
index 78f0d46..1853578 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
@@ -216,7 +216,7 @@ public final class RegistryUtils {
   }
 
   public static Microservice getMicroservice(String microserviceId) {
-    return serviceRegistry.getAggregatedRemoteMicroervice(microserviceId);
+    return serviceRegistry.getRemoteMicroservice(microserviceId);
   }
 
   public static MicroserviceInstances findServiceInstances(String appId, 
String serviceName,
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
index c858c5a..a249b48 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
@@ -60,12 +60,12 @@ public interface ServiceRegistry {
 
   /**
    * <p>
-   *    if connect to simple ServiceCenter, same with the method
+   *    if connect to normal ServiceCenter, same with the method
    *    {@linkplain 
org.apache.servicecomb.serviceregistry.ServiceRegistry#getRemoteMicroservice(String)}
  }
-   *    if connect to ServiceCenter Aggregator, not only contain the target 
ServiceCenter but also other ServiceCenter cluster
+   *    if connect to ServiceCenter Aggregator, not only contain the target 
ServiceCenter but also other ServiceCenter clusters
    * </p>
    */
-  Microservice getAggregatedRemoteMicroervice(String microserviceId);
+  Microservice getAggregatedRemoteMicroservice(String microserviceId);
 
   Features getFeatures();
 
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 9112038..b0d29ee 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
@@ -190,7 +190,7 @@ public class LocalServiceRegistryClientImpl implements 
ServiceRegistryClient {
 
   @Override
   public Microservice getAggregatedMicroservice(String microserviceId) {
-    return microserviceIdMap.get(microserviceId);
+    return getMicroservice(microserviceId);
   }
 
   @Override
@@ -360,12 +360,7 @@ public class LocalServiceRegistryClientImpl implements 
ServiceRegistryClient {
 
   @Override
   public String getAggregatedSchema(String microserviceId, String schemaId) {
-    Microservice microservice = microserviceIdMap.get(microserviceId);
-    if (microservice == null) {
-      throw new IllegalArgumentException("Invalid serviceId, serviceId=" + 
microserviceId);
-    }
-
-    return microservice.getSchemaMap().get(schemaId);
+    return getSchema(microserviceId, schemaId);
   }
 
   @Override
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 8e08ae4..90d1455 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
@@ -58,7 +58,7 @@ public interface ServiceRegistryClient {
 
   /**
    * <p>
-   *    if connect to simple ServiceCenter, same with the method
+   *    if connect to normal ServiceCenter, same with the method
    *    {@linkplain 
org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient#getMicroservice(String)}
    *    if connect to ServiceCenter Aggregator, not only contain the target 
ServiceCenter but also other ServiceCenter clusters
    * </p>
@@ -90,7 +90,7 @@ public interface ServiceRegistryClient {
 
   /**
    * <p>
-   *    if connect to simple ServiceCenter, same with the method
+   *    if connect to normal ServiceCenter, same with the method
    *    {@linkplain 
org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient#getSchema(String,
 String)}
    *    if connect to ServiceCenter Aggregator, not only contain the target 
ServiceCenter but also other ServiceCenter clusters
    * </p>
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 a9082f6..da4bb49 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
@@ -346,13 +346,21 @@ public final class ServiceRegistryClientImpl implements 
ServiceRegistryClient {
 
   @Override
   public String getSchema(String microserviceId, String schemaId) {
+    return doGetSchema(microserviceId, schemaId, false);
+  }
+
+  private String doGetSchema(String microserviceId, String schemaId, boolean 
isAggregatedServiceCenter) {
     Holder<GetSchemaResponse> holder = new Holder<>();
     IpPort ipPort = ipPortManager.getAvailableAddress();
 
     CountDownLatch countDownLatch = new CountDownLatch(1);
+    RequestParam param = new RequestParam();
+    if (isAggregatedServiceCenter) {
+      param.addQueryParam("global", "true");
+    }
     RestUtils.get(ipPort,
         String.format(Const.REGISTRY_API.MICROSERVICE_SCHEMA, microserviceId, 
schemaId),
-        new RequestParam(),
+        param,
         syncHandler(countDownLatch, GetSchemaResponse.class, holder));
     try {
       countDownLatch.await();
@@ -370,27 +378,7 @@ public final class ServiceRegistryClientImpl implements 
ServiceRegistryClient {
 
   @Override
   public String getAggregatedSchema(String microserviceId, String schemaId) {
-    Holder<GetSchemaResponse> holder = new Holder<>();
-    IpPort ipPort = ipPortManager.getAvailableAddress();
-
-    CountDownLatch countDownLatch = new CountDownLatch(1);
-    RestUtils.get(ipPort,
-        String.format(Const.REGISTRY_API.MICROSERVICE_SCHEMA, microserviceId, 
schemaId),
-        new RequestParam().addQueryParam("global", "true"),
-        syncHandler(countDownLatch, GetSchemaResponse.class, holder));
-    try {
-      countDownLatch.await();
-    } catch (Exception e) {
-      LOGGER.error("query schema exist {}/{} failed",
-          microserviceId,
-          schemaId,
-          e);
-    }
-    if (holder.value != null) {
-      return holder.value.getSchema();
-    }
-
-    return null;
+    return doGetSchema(microserviceId, schemaId, true);
   }
 
   @Override
@@ -457,13 +445,21 @@ public final class ServiceRegistryClientImpl implements 
ServiceRegistryClient {
 
   @Override
   public Microservice getMicroservice(String microserviceId) {
+    return doGetMicroservice(microserviceId, false);
+  }
+
+  private Microservice doGetMicroservice(String microserviceId, boolean 
isAggregatedServiceCenter) {
     Holder<GetServiceResponse> holder = new Holder<>();
     IpPort ipPort = ipPortManager.getAvailableAddress();
 
     CountDownLatch countDownLatch = new CountDownLatch(1);
+    RequestParam param = new RequestParam();
+    if (isAggregatedServiceCenter) {
+      param.addQueryParam("global", "true");
+    }
     RestUtils.get(ipPort,
         String.format(Const.REGISTRY_API.MICROSERVICE_OPERATION_ONE, 
microserviceId),
-        new RequestParam(),
+        param,
         syncHandler(countDownLatch, GetServiceResponse.class, holder));
     try {
       countDownLatch.await();
@@ -478,23 +474,7 @@ public final class ServiceRegistryClientImpl implements 
ServiceRegistryClient {
 
   @Override
   public Microservice getAggregatedMicroservice(String microserviceId) {
-    Holder<GetServiceResponse> holder = new Holder<>();
-    IpPort ipPort = ipPortManager.getAvailableAddress();
-
-    CountDownLatch countDownLatch = new CountDownLatch(1);
-    RestUtils.get(ipPort,
-        String.format(Const.REGISTRY_API.MICROSERVICE_OPERATION_ONE, 
microserviceId),
-        new RequestParam().addQueryParam("global", "true"),
-        syncHandler(countDownLatch, GetServiceResponse.class, holder));
-    try {
-      countDownLatch.await();
-      if (holder.value != null) {
-        return holder.value.getService();
-      }
-    } catch (Exception e) {
-      LOGGER.error("query microservice {} failed", microserviceId, e);
-    }
-    return null;
+    return doGetMicroservice(microserviceId, true);
   }
 
   @Override
@@ -534,7 +514,7 @@ public final class ServiceRegistryClientImpl implements 
ServiceRegistryClient {
     CountDownLatch countDownLatch = new CountDownLatch(1);
     RestUtils.get(ipPort,
         String.format(Const.REGISTRY_API.MICROSERVICE_INSTANCE_OPERATION_ALL, 
providerId),
-        new RequestParam().addHeader("X-ConsumerId", 
consumerId).addQueryParam("global", "true"),
+        new RequestParam().addHeader("X-ConsumerId", consumerId),
         syncHandler(countDownLatch, GetInstancesResponse.class, holder));
     try {
       countDownLatch.await();
@@ -841,7 +821,7 @@ public final class ServiceRegistryClientImpl implements 
ServiceRegistryClient {
     CountDownLatch countDownLatch = new CountDownLatch(1);
     RestUtils.get(ipPort,
         Const.REGISTRY_API.SERVICECENTER_VERSION,
-        new RequestParam().addQueryParam("global", "true"),
+        new RequestParam(),
         syncHandler(countDownLatch, ServiceCenterInfo.class, holder));
     try {
       countDownLatch.await();
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
index b956a66..9c882e6 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
@@ -27,7 +27,7 @@ public class MicroserviceVersion {
   protected Microservice microservice;
 
   public MicroserviceVersion(String microserviceId) {
-    microservice = RegistryUtils.getMicroservice(microserviceId);
+    microservice = 
RegistryUtils.getServiceRegistry().getAggregatedRemoteMicroservice(microserviceId);
     if (microservice == null) {
       throw new IllegalStateException(String.format("Invalid microserviceId 
%s.", microserviceId));
     }
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 2e6e100..4f65821 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
@@ -299,7 +299,7 @@ public abstract class AbstractServiceRegistry implements 
ServiceRegistry {
   }
 
   @Override
-  public Microservice getAggregatedRemoteMicroervice(String microserviceId) {
+  public Microservice getAggregatedRemoteMicroservice(String microserviceId) {
     return srClient.getAggregatedMicroservice(microserviceId);
   }
 
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 80b7d58..cba18e2 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
@@ -488,13 +488,6 @@ public class TestServiceRegistryClientImpl {
 
     new MockUp<RestUtils>() {
       @Mock
-      void get(IpPort ipPort, String uri, RequestParam requestParam,
-          Handler<RestResponse> responseHandler) {
-        Assert.assertEquals("global=true", requestParam.getQueryParams());
-        httpDo(RestUtils.createRequestContext(HttpMethod.GET, ipPort, uri, 
requestParam), responseHandler);
-      }
-
-      @Mock
       void httpDo(RequestContext requestContext, Handler<RestResponse> 
responseHandler) {
         Holder<ServiceCenterInfo> holder = 
Deencapsulation.getField(responseHandler, "arg$4");
         holder.value = serviceCenterInfo;
diff --git 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionTestUtils.java
 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionTestUtils.java
index 919cb5f..5a9db91 100644
--- 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionTestUtils.java
+++ 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionTestUtils.java
@@ -18,19 +18,27 @@
 package org.apache.servicecomb.serviceregistry.consumer;
 
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 
 import mockit.Expectations;
+import mockit.Mocked;
 
 public interface MicroserviceVersionTestUtils {
-  public static MicroserviceVersion createMicroserviceVersion(String 
microserviceId, String version) {
+
+
+  public static MicroserviceVersion createMicroserviceVersion(String 
microserviceId, String version,
+      @Mocked ServiceRegistry serviceRegistry) {
+
     Microservice microservice = new Microservice();
     microservice.setServiceId(microserviceId);
     microservice.setVersion(version);
 
     new Expectations(RegistryUtils.class) {
       {
-        RegistryUtils.getMicroservice(microserviceId);
+        RegistryUtils.getServiceRegistry();
+        result = serviceRegistry;
+        serviceRegistry.getAggregatedRemoteMicroservice(microserviceId);
         result = microservice;
       }
     };
diff --git 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestDefaultMicroserviceVersionFactory.java
 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestDefaultMicroserviceVersionFactory.java
index f82b443..3d9056c 100644
--- 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestDefaultMicroserviceVersionFactory.java
+++ 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestDefaultMicroserviceVersionFactory.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.serviceregistry.consumer;
 
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.junit.Assert;
 import org.junit.Test;
@@ -27,11 +28,13 @@ import mockit.Mocked;
 
 public class TestDefaultMicroserviceVersionFactory {
   @Test
-  public void create(@Mocked Microservice microservice) {
+  public void create(@Mocked Microservice microservice, @Mocked 
ServiceRegistry serviceRegistry) {
     String microserviceId = "id";
     new Expectations(RegistryUtils.class) {
       {
-        RegistryUtils.getMicroservice(microserviceId);
+        RegistryUtils.getServiceRegistry();
+        result = serviceRegistry;
+        serviceRegistry.getAggregatedRemoteMicroservice(microserviceId);
         result = microservice;
         microservice.getVersion();
         result = "1.0.0";
diff --git 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersion.java
 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersion.java
index 02b7ff5..b6b036d 100644
--- 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersion.java
+++ 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersion.java
@@ -18,6 +18,7 @@
 package org.apache.servicecomb.serviceregistry.consumer;
 
 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.version.Version;
 import org.hamcrest.Matchers;
@@ -27,19 +28,23 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
 import mockit.Expectations;
+import mockit.Mocked;
 
 public class TestMicroserviceVersion {
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
 
   @Test
-  public void constructInvalid() {
+  public void constructInvalid(@Mocked ServiceRegistry serviceRegistry) {
+
     expectedException.expect(IllegalStateException.class);
     expectedException.expectMessage(Matchers.is("Invalid microserviceId 
invalid."));
 
     new Expectations(RegistryUtils.class) {
       {
-        RegistryUtils.getMicroservice("invalid");
+        RegistryUtils.getServiceRegistry();
+        result = serviceRegistry;
+        serviceRegistry.getAggregatedRemoteMicroservice("invalid");
         result = null;
       }
     };
@@ -47,8 +52,9 @@ public class TestMicroserviceVersion {
   }
 
   @Test
-  public void constructNormal() {
-    MicroserviceVersion microserviceVersion = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "1.0.0");
+  public void constructNormal(@Mocked ServiceRegistry serviceRegistry) {
+    MicroserviceVersion microserviceVersion = MicroserviceVersionTestUtils
+        .createMicroserviceVersion("1", "1.0.0", serviceRegistry);
     Assert.assertEquals("1", 
microserviceVersion.getMicroservice().getServiceId());
     Assert.assertEquals("1.0.0", 
microserviceVersion.getVersion().getVersion());
   }
diff --git 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersionRule.java
 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersionRule.java
index 659c8af..d78bf18 100644
--- 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersionRule.java
+++ 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersionRule.java
@@ -19,12 +19,15 @@ package org.apache.servicecomb.serviceregistry.consumer;
 
 import java.util.Arrays;
 
+import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import 
org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
 import org.apache.servicecomb.serviceregistry.cache.InstanceCache;
 import org.hamcrest.Matchers;
 import org.junit.Assert;
 import org.junit.Test;
 
+import mockit.Mocked;
+
 public class TestMicroserviceVersionRule {
   MicroserviceVersionRule microserviceVersionRule = new 
MicroserviceVersionRule("appId", "msName", "1+");
 
@@ -34,47 +37,48 @@ public class TestMicroserviceVersionRule {
   }
 
   @Test
-  public void addMicroserviceVersionNotMatch() {
-    MicroserviceVersion microserviceVersion = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "0.0.1");
+  public void addMicroserviceVersionNotMatch(@Mocked ServiceRegistry 
serviceRegistry) {
+    MicroserviceVersion microserviceVersion = MicroserviceVersionTestUtils
+        .createMicroserviceVersion("1", "0.0.1", serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(microserviceVersion);
 
     Assert.assertNull(microserviceVersionRule.getLatestMicroserviceVersion());
   }
 
   @Test
-  public void addMicroserviceVersionMatch() {
-    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0");
+  public void addMicroserviceVersionMatch(@Mocked ServiceRegistry 
serviceRegistry) {
+    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v2);
     Assert.assertSame(v2, 
microserviceVersionRule.getLatestMicroserviceVersion());
 
-    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "1.0.0");
+    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "1.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v1);
     Assert.assertSame(v2, 
microserviceVersionRule.getLatestMicroserviceVersion());
   }
 
   @Test
-  public void deleteMicroserviceVersionNotMatch() {
-    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0");
+  public void deleteMicroserviceVersionNotMatch(@Mocked ServiceRegistry 
serviceRegistry) {
+    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v2);
 
-    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "0.0.1");
+    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "0.0.1", 
serviceRegistry);
     microserviceVersionRule.deleteMicroserviceVersion(v1);
     Assert.assertSame(v2, 
microserviceVersionRule.getLatestMicroserviceVersion());
   }
 
   @Test
-  public void deleteMicroserviceVersionMatchNotExist() {
-    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0");
+  public void deleteMicroserviceVersionMatchNotExist(@Mocked ServiceRegistry 
serviceRegistry) {
+    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v2);
 
-    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "1.0.0");
+    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "1.0.0", 
serviceRegistry);
     microserviceVersionRule.deleteMicroserviceVersion(v1);
     Assert.assertSame(v2, 
microserviceVersionRule.getLatestMicroserviceVersion());
   }
 
   @Test
-  public void deleteMicroserviceVersionMatchAndExist() {
-    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0");
+  public void deleteMicroserviceVersionMatchAndExist(@Mocked ServiceRegistry 
serviceRegistry) {
+    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v2);
 
     microserviceVersionRule.deleteMicroserviceVersion(v2);
@@ -83,11 +87,11 @@ public class TestMicroserviceVersionRule {
   }
 
   @Test
-  public void setInstances() {
-    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "0.0.1");
+  public void setInstances(@Mocked ServiceRegistry serviceRegistry) {
+    MicroserviceVersion v1 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("1", "0.0.1", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v1);
 
-    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0");
+    MicroserviceVersion v2 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("2", "2.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v2);
 
     MicroserviceInstance instance1 = new MicroserviceInstance();
@@ -115,7 +119,7 @@ public class TestMicroserviceVersionRule {
     microserviceVersionRule.setInstances(Arrays.asList(instance2));
     
Assert.assertEquals(microserviceVersionRule.getLatestMicroserviceVersion(), v2);
 
-    MicroserviceVersion v3 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("3", "3.0.0");
+    MicroserviceVersion v3 = 
MicroserviceVersionTestUtils.createMicroserviceVersion("3", "3.0.0", 
serviceRegistry);
     microserviceVersionRule.addMicroserviceVersion(v3);
     
Assert.assertEquals(microserviceVersionRule.getLatestMicroserviceVersion(), v2);
   }
diff --git 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersions.java
 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersions.java
index 9614048..1382bf9 100644
--- 
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersions.java
+++ 
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/consumer/TestMicroserviceVersions.java
@@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import org.apache.servicecomb.serviceregistry.api.Const;
 import org.apache.servicecomb.serviceregistry.api.MicroserviceKey;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
@@ -53,6 +54,9 @@ import mockit.Mocked;
 public class TestMicroserviceVersions {
   EventBus eventBus = new EventBus();
 
+  @Mocked
+  ServiceRegistry serviceRegistry;
+
   AppManager appManager = new AppManager(eventBus);
 
   String appId = "appId";
@@ -129,6 +133,18 @@ public class TestMicroserviceVersions {
       Microservice getMicroservice(String microserviceId) {
         return microservices.get(microserviceId);
       }
+
+      @Mock
+      ServiceRegistry getServiceRegistry() {
+        return serviceRegistry;
+      }
+    };
+
+    new Expectations() {
+      {
+        serviceRegistry.getAggregatedRemoteMicroservice(microserviceId);
+        result = microservices.get(microserviceId);
+      }
     };
   }
 
@@ -241,7 +257,10 @@ public class TestMicroserviceVersions {
   @Test
   public void setInstances_selectUp() {
     String microserviceId = "1";
-    setup(microserviceId);
+
+    createMicroservice(microserviceId);
+    createInstance(microserviceId);
+    createMicroserviceInstances();
 
     instances.get(0).setStatus(MicroserviceInstanceStatus.DOWN);
     Deencapsulation.invoke(microserviceVersions, "setInstances", instances, 
"0");

Reply via email to