You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/12/18 06:30:11 UTC

[servicecomb-java-chassis] 01/02: [SCB-1073] InstanceCacheChecker should ignore StaticMicroserviceVersions

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

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

commit c967d93077648912827e62652de2ac33e8485f01
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Tue Dec 11 11:02:24 2018 +0800

    [SCB-1073] InstanceCacheChecker should ignore StaticMicroserviceVersions
---
 .../diagnosis/instance/InstanceCacheChecker.java   |  9 +++----
 .../instance/TestInstanceCacheChecker.java         | 31 ++++++++++++++++++++++
 2 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java
index 28fb4b6..ec27cb0 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java
@@ -28,6 +28,7 @@ import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
 import org.apache.servicecomb.serviceregistry.consumer.AppManager;
 import org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager;
 import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions;
+import org.apache.servicecomb.serviceregistry.consumer.StaticMicroserviceVersions;
 import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
 import org.apache.servicecomb.serviceregistry.diagnosis.Status;
 import org.slf4j.Logger;
@@ -55,6 +56,9 @@ public class InstanceCacheChecker {
 
     for (MicroserviceManager microserviceManager : appManager.getApps().values()) {
       for (MicroserviceVersions microserviceVersions : microserviceManager.getVersionsByName().values()) {
+        if (microserviceVersions instanceof StaticMicroserviceVersions) {
+          continue;
+        }
         InstanceCacheResult instanceCacheResult = check(microserviceVersions);
         addInstanceCacheResult(instanceCacheResult);
       }
@@ -103,11 +107,6 @@ public class InstanceCacheChecker {
 
     // compare all instances
     List<MicroserviceInstance> remoteInstances = microserviceInstances.getInstancesResponse().getInstances();
-//    if (RandomUtils.nextInt(0, 2) == 0) {
-//      MicroserviceInstance microserviceInstance = new MicroserviceInstance();
-//      microserviceInstance.setInstanceId("abc");
-//      remoteInstances.add(microserviceInstance);
-//    }
     remoteInstances.sort(Comparator.comparing(MicroserviceInstance::getInstanceId));
     String local = Json.encode(microserviceVersions.getPulledInstances());
     String remote = Json.encode(remoteInstances);
diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java
index c84cc3e..b5f4a68 100644
--- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java
+++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java
@@ -26,7 +26,9 @@ import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
 import org.apache.servicecomb.serviceregistry.api.response.FindInstancesResponse;
 import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances;
+import org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager;
 import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions;
+import org.apache.servicecomb.serviceregistry.consumer.StaticMicroserviceVersions;
 import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
 import org.apache.servicecomb.serviceregistry.diagnosis.Status;
 import org.apache.servicecomb.serviceregistry.registry.ServiceRegistryFactory;
@@ -239,4 +241,33 @@ public class TestInstanceCacheChecker {
     Assert.assertEquals(Json.encode(expectedSummary), Json.encode(instanceCacheSummary));
     Assert.assertNull(microserviceVersions.getRevision());
   }
+
+  @Test
+  public void check_StaticMicroservice() {
+    Holder<MicroserviceInstances> findHolder = new Holder<>(new MicroserviceInstances());
+
+    new MockUp<RegistryUtils>() {
+      @Mock
+      MicroserviceInstances findServiceInstances(String appId, String serviceName,
+          String versionRule, String revision) {
+        return findHolder.value;
+      }
+    };
+
+    MicroserviceManager microserviceManager = serviceRegistry.getAppManager()
+        .getOrCreateMicroserviceManager(RegistryUtils.getAppId());
+    microserviceManager.getVersionsByName().put(microserviceName,
+        new StaticMicroserviceVersions(serviceRegistry.getAppManager(), RegistryUtils.getAppId(), microserviceName,
+            ThirdPartyServiceForUT.class));
+
+    InstanceCacheSummary instanceCacheSummary = checker.check();
+
+    expectedSummary.setStatus(Status.NORMAL);
+
+    Assert.assertEquals(Json.encode(expectedSummary), Json.encode(instanceCacheSummary));
+  }
+
+  private interface ThirdPartyServiceForUT {
+    String sayHello(String name);
+  }
 }