[
https://issues.apache.org/jira/browse/SCB-1039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16698389#comment-16698389
]
ASF GitHub Bot commented on SCB-1039:
-------------------------------------
liubao68 closed pull request #1007: [SCB-1039]Add interface to compatible with
ServiceCenter Aggregator
URL: https://github.com/apache/servicecomb-java-chassis/pull/1007
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git
a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ConsumerSchemaFactory.java
b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ConsumerSchemaFactory.java
index a3dbbdb3a..c9b8ed242 100644
---
a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ConsumerSchemaFactory.java
+++
b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ConsumerSchemaFactory.java
@@ -65,7 +65,7 @@ protected Swagger loadSwagger(ConsumerSchemaContext context) {
}
ServiceRegistryClient client = RegistryUtils.getServiceRegistryClient();
- String schemaContent =
client.getSchema(context.getMicroservice().getServiceId(),
context.getSchemaId());
+ String schemaContent =
client.getAggregatedSchema(context.getMicroservice().getServiceId(),
context.getSchemaId());
LOGGER.info("load schema from service center, microservice={}:{}:{},
schemaId={}, result={}",
context.getMicroservice().getAppId(),
context.getMicroservice().getServiceName(),
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 fd24f6dec..9f5d68041 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.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 mockit.Expectations;
import mockit.Mock;
import mockit.MockUp;
+import mockit.Mocked;
public class TestMicroserviceVersionMeta {
@AfterClass
@@ -44,7 +46,7 @@ public static void teardown() {
}
@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 void construct() {
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 bf6c527ac..8e5382abf 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.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 void constructWithFactory() {
@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 void create(@Mocked ConsumerSchemaFactory
consumerSchemaFactory,
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/ServiceRegistry.java
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
index ead2ccc31..a249b4883 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
@@ -58,6 +58,15 @@ MicroserviceInstances findServiceInstances(String appId,
String microserviceName
Microservice getRemoteMicroservice(String microserviceId);
+ /**
+ * <p>
+ * 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 clusters
+ * </p>
+ */
+ Microservice getAggregatedRemoteMicroservice(String microserviceId);
+
Features getFeatures();
/**
diff --git
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/MicroserviceInstanceCache.java
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/MicroserviceInstanceCache.java
index eb6828d1f..16a03819a 100644
---
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/MicroserviceInstanceCache.java
+++
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/MicroserviceInstanceCache.java
@@ -52,7 +52,7 @@
public static Microservice getOrCreate(String serviceId) {
try {
return microservices.get(serviceId, () -> {
- Microservice microservice =
RegistryUtils.getServiceRegistryClient().getMicroservice(serviceId);
+ Microservice microservice =
RegistryUtils.getServiceRegistryClient().getAggregatedMicroservice(serviceId);
if (microservice == null) {
throw new IllegalArgumentException("service id not exists.");
}
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 196cd24d3..b0d29ee8e 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
@@ -188,6 +188,11 @@ public Microservice getMicroservice(String microserviceId)
{
return microserviceIdMap.get(microserviceId);
}
+ @Override
+ public Microservice getAggregatedMicroservice(String microserviceId) {
+ return getMicroservice(microserviceId);
+ }
+
@Override
public String registerMicroserviceInstance(MicroserviceInstance instance) {
Map<String, MicroserviceInstance> instanceMap =
microserviceInstanceMap.get(instance.getServiceId());
@@ -353,6 +358,11 @@ public String getSchema(String microserviceId, String
schemaId) {
return microservice.getSchemaMap().get(schemaId);
}
+ @Override
+ public String getAggregatedSchema(String microserviceId, String schemaId) {
+ return getSchema(microserviceId, schemaId);
+ }
+
@Override
public Holder<List<GetSchemaResponse>> getSchemas(String microserviceId) {
Microservice microservice = microserviceIdMap.get(microserviceId);
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 4af6d7087..90d145534 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
@@ -56,6 +56,15 @@
*/
Microservice getMicroservice(String microserviceId);
+ /**
+ * <p>
+ * 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>
+ */
+ Microservice getAggregatedMicroservice(String microserviceId);
+
/**
* 更新微服务properties
*/
@@ -79,6 +88,15 @@
*/
String getSchema(String microserviceId, String schemaId);
+ /**
+ * <p>
+ * 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>
+ */
+ String getAggregatedSchema(String microserviceId, String schemaId);
+
/**
*
* 批量获取schemas内容
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 b5e24368d..c27ba96fe 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,19 +346,26 @@ public boolean registerSchema(String microserviceId,
String schemaId, String sch
@Override
public String getSchema(String microserviceId, String schemaId) {
+ return doGetSchema(microserviceId, schemaId, false);
+ }
+
+ private String doGetSchema(String microserviceId, String schemaId, boolean
global) {
Holder<GetSchemaResponse> holder = new Holder<>();
IpPort ipPort = ipPortManager.getAvailableAddress();
CountDownLatch countDownLatch = new CountDownLatch(1);
+ RequestParam param = new RequestParam();
+ if (global) {
+ 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();
} catch (Exception e) {
LOGGER.error("query schema exist {}/{} failed",
- microserviceId,
schemaId,
e);
}
@@ -369,6 +376,11 @@ public String getSchema(String microserviceId, String
schemaId) {
return null;
}
+ @Override
+ public String getAggregatedSchema(String microserviceId, String schemaId) {
+ return doGetSchema(microserviceId, schemaId, true);
+ }
+
@Override
public Holder<List<GetSchemaResponse>> getSchemas(String microserviceId) {
Holder<GetSchemasResponse> holder = new Holder<>();
@@ -433,13 +445,21 @@ public String registerMicroservice(Microservice
microservice) {
@Override
public Microservice getMicroservice(String microserviceId) {
+ return doGetMicroservice(microserviceId, false);
+ }
+
+ private Microservice doGetMicroservice(String microserviceId, boolean
global) {
Holder<GetServiceResponse> holder = new Holder<>();
IpPort ipPort = ipPortManager.getAvailableAddress();
CountDownLatch countDownLatch = new CountDownLatch(1);
+ RequestParam param = new RequestParam();
+ if (global) {
+ 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();
@@ -452,6 +472,11 @@ public Microservice getMicroservice(String microserviceId)
{
return null;
}
+ @Override
+ public Microservice getAggregatedMicroservice(String microserviceId) {
+ return doGetMicroservice(microserviceId, true);
+ }
+
@Override
public String registerMicroserviceInstance(MicroserviceInstance instance) {
Holder<RegisterInstanceResponse> holder = new Holder<>();
@@ -650,6 +675,7 @@ public MicroserviceInstances findServiceInstances(String
consumerId, String appI
RequestParam requestParam = new RequestParam().addQueryParam("appId",
appId)
.addQueryParam("serviceName", serviceName)
+ .addQueryParam("global", "true")
.addQueryParam("version", versionRule)
.addHeader("X-ConsumerId", consumerId);
if (revision != null) {
@@ -774,7 +800,7 @@ public MicroserviceInstance findServiceInstance(String
serviceId, String instanc
CountDownLatch countDownLatch = new CountDownLatch(1);
RestUtils.get(ipPort,
String.format(Const.REGISTRY_API.MICROSERVICE_INSTANCE_OPERATION_ONE,
serviceId, instanceId),
- new RequestParam().addHeader("X-ConsumerId", serviceId),
+ new RequestParam().addHeader("X-ConsumerId",
serviceId).addQueryParam("global", "true"),
syncHandler(countDownLatch, MicroserviceInstanceResponse.class,
holder));
countDownLatch.await();
if (null != holder.value) {
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 b956a664e..9c882e6b5 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 @@
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 be33fdae3..4f6582114 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
@@ -298,6 +298,11 @@ public Microservice getRemoteMicroservice(String
microserviceId) {
return srClient.getMicroservice(microserviceId);
}
+ @Override
+ public Microservice getAggregatedRemoteMicroservice(String microserviceId) {
+ return srClient.getAggregatedMicroservice(microserviceId);
+ }
+
public Microservice getMicroservice() {
return microservice;
}
diff --git
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/cache/TestMicroserviceInstanceCache.java
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/cache/TestMicroserviceInstanceCache.java
index 5e55e6da4..85da7fb05 100644
---
a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/cache/TestMicroserviceInstanceCache.java
+++
b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/cache/TestMicroserviceInstanceCache.java
@@ -35,9 +35,9 @@ public void testGetOrCreateMicroservice(@Mocked RegistryUtils
utils, @Mocked Ser
{
RegistryUtils.getServiceRegistryClient();
result = client;
- client.getMicroservice("forkedid");
+ client.getAggregatedMicroservice("forkedid");
result = microservice;
- client.getMicroservice("forkedidNull");
+ client.getAggregatedMicroservice("forkedidNull");
result = null;
}
};
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 1c238dc85..cba18e24d 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
@@ -36,6 +36,7 @@
import
org.apache.servicecomb.serviceregistry.api.response.GetExistenceResponse;
import org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse;
import org.apache.servicecomb.serviceregistry.api.response.GetSchemasResponse;
+import org.apache.servicecomb.serviceregistry.api.response.GetServiceResponse;
import org.apache.servicecomb.serviceregistry.client.ClientException;
import org.apache.servicecomb.serviceregistry.client.IpPortManager;
import
org.apache.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.ResponseWrapper;
@@ -50,6 +51,7 @@
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.HttpClientOptions;
import io.vertx.core.http.HttpClientResponse;
+import io.vertx.core.http.HttpMethod;
import io.vertx.core.json.Json;
import mockit.Deencapsulation;
import mockit.Expectations;
@@ -298,6 +300,53 @@ void httpDo(RequestContext requestContext,
Handler<RestResponse> responseHandler
Assert.assertFalse(oClient.isSchemaExist(microserviceId, schemaId));
}
+ @Test
+ public void getAggregatedMicroservice() {
+ String microserviceId = "msId";
+ new MockUp<RestUtils>() {
+ @Mock
+ void httpDo(RequestContext requestContext, Handler<RestResponse>
responseHandler) {
+ Holder<GetServiceResponse> holder =
Deencapsulation.getField(responseHandler, "arg$4");
+ GetServiceResponse serviceResp = Json
+ .decodeValue(
+ "{\"service\":{\"serviceId\":\"serviceId\",\"framework\":null"
+ +
",\"registerBy\":null,\"environment\":null,\"appId\":\"appId\",\"serviceName\":null,"
+ +
"\"alias\":null,\"version\":null,\"description\":null,\"level\":null,\"schemas\":[],"
+ +
"\"paths\":[],\"status\":\"UP\",\"properties\":{},\"intance\":null}}",
+ GetServiceResponse.class);
+ holder.value = serviceResp;
+ RequestParam requestParam = requestContext.getParams();
+ Assert.assertEquals("global=true", requestParam.getQueryParams());
+ }
+ };
+ Microservice aggregatedMicroservice =
oClient.getAggregatedMicroservice(microserviceId);
+ Assert.assertEquals("serviceId", aggregatedMicroservice.getServiceId());
+ Assert.assertEquals("appId", aggregatedMicroservice.getAppId());
+ }
+
+ @Test
+ public void getAggregatedSchema() {
+ String microserviceId = "msId";
+ String schemaId = "schemaId";
+
+ new MockUp<RestUtils>() {
+
+ @Mock
+ void httpDo(RequestContext requestContext, Handler<RestResponse>
responseHandler) {
+ Holder<GetSchemaResponse> holder =
Deencapsulation.getField(responseHandler, "arg$4");
+ GetSchemaResponse schemasResp = Json
+ .decodeValue(
+ "{ \"schema\": \"schema\",
\"schemaId\":\"metricsEndpoint\",\"summary\":\"c1188d709631a9038874f9efc6eb894f\"}",
+ GetSchemaResponse.class);
+ holder.value = schemasResp;
+ RequestParam requestParam = requestContext.getParams();
+ Assert.assertEquals("global=true", requestParam.getQueryParams());
+ }
+ };
+ String str = oClient.getAggregatedSchema(microserviceId, schemaId);
+ Assert.assertEquals("schema", str);
+ }
+
@Test
public void getSchemas() {
String microserviceId = "msId";
@@ -363,6 +412,13 @@ void httpDo(RequestContext requestContext,
Handler<RestResponse> responseHandler
@Test
public void testFindServiceInstance() {
+ new MockUp<RestUtils>() {
+ @Mock
+ void get(IpPort ipPort, String uri, RequestParam requestParam,
+ Handler<RestResponse> responseHandler) {
+ Assert.assertEquals("global=true", requestParam.getQueryParams());
+ }
+ };
Assert.assertNull(oClient.findServiceInstance("aaa", "bbb"));
}
@@ -374,7 +430,13 @@ IpPort getAvailableAddress() {
throw new Error("must not invoke this.");
}
};
-
+ new MockUp<RestUtils>() {
+ @Mock
+ void get(IpPort ipPort, String uri, RequestParam requestParam,
+ Handler<RestResponse> responseHandler) {
+ Assert.assertEquals("global=true", requestParam.getQueryParams());
+ }
+ };
Assert.assertNull(oClient.findServiceInstance(null, "appId",
"serviceName", "1.0.0+"));
}
@@ -395,6 +457,14 @@ HttpClientResponse bodyHandler(Handler<Buffer>
bodyHandler) {
}.getMockInstance();
RestResponse restResponse = new RestResponse(requestContext, response);
new MockUp<RestUtils>() {
+ @Mock
+ void get(IpPort ipPort, String uri, RequestParam requestParam,
+ Handler<RestResponse> responseHandler) {
+
Assert.assertEquals("appId=appId&global=true&serviceName=serviceName&version=0.0.0%2B",
+ requestParam.getQueryParams());
+ httpDo(RestUtils.createRequestContext(HttpMethod.GET, ipPort, uri,
requestParam), responseHandler);
+ }
+
@Mock
void httpDo(RequestContext requestContext, Handler<RestResponse>
responseHandler) {
responseHandler.handle(restResponse);
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 919cb5fcb..5a9db9189 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 f82b44397..3d9056c55 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 @@
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 02b7ff54c..b6b036da5 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.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 void constructInvalid() {
}
@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 659c8af26..d78bf1850 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 @@
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 void getVersionRule() {
}
@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 void deleteMicroserviceVersionMatchAndExist() {
}
@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 void setInstances() {
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 9614048ca..1382bf9e2 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 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 @@
public class TestMicroserviceVersions {
EventBus eventBus = new EventBus();
+ @Mocked
+ ServiceRegistry serviceRegistry;
+
AppManager appManager = new AppManager(eventBus);
String appId = "appId";
@@ -129,6 +133,18 @@ MicroserviceInstances findServiceInstances(String appId,
String serviceName,
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 void setInstancesMatch() {
@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");
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Add interface to compatible with ServiceCenter Aggregator
> ---------------------------------------------------------
>
> Key: SCB-1039
> URL: https://issues.apache.org/jira/browse/SCB-1039
> Project: Apache ServiceComb
> Issue Type: Improvement
> Components: Java-Chassis
> Reporter: 何一乐
> Assignee: 何一乐
> Priority: Major
>
> 1.增加几个接口
>
> org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient#getMicroservice旁边加getAggregatedMicroervice
>
> org.apache.servicecomb.serviceregistry.ServiceRegistry#getRemoteMicroservice旁边加上getAggregatedRemoteMicroervice
>
> org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient#getSchema旁边加getAggregatedSchema
> 都加上java doc注释,描述以下信息:
> 1)连接普通ServiceCenter时,效果等同于不带Aggregagit chected的信息
> 2)连接ServiceCenter
> Aggregator时,表示获取范围不仅仅局限在本ServiceCenter中,还包括其他ServiceCenter集群
> 向ServiceCenter发RESTful请求时,Aggregated的版本是在query参数部分加上global=true
> 2.搜索旧接口的所有引用
> 所有在服务发现流程中对它们的调用,都需要切换为Aggregated版本
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)