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");
