You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/01/22 00:52:42 UTC
[servicecomb-java-chassis] 01/05: [SCB-1726]fix all TODOs in demos
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 ef972eb51a2f5c8e0f06a664b2b46c7a5215832f
Author: liubao <bi...@qq.com>
AuthorDate: Sun Jan 19 15:20:52 2020 +0800
[SCB-1726]fix all TODOs in demos
---
.../protobuf/definition/OperationProtobuf.java | 15 +-
.../protobuf/definition/RequestRootSerializer.java | 8 +-
demo/demo-jaxrs/jaxrs-client/pom.xml | 46 +++++
.../servicecomb/demo/jaxrs/client/JaxrsClient.java | 225 ++++++++++++---------
.../jaxrs/client/MultiErrorCodeServiceClient.java | 61 +++---
.../client/beanParam/BeanParamPojoClient.java | 22 +-
.../beanParam/BeanParamRestTemplateClient.java | 25 ++-
.../apache/servicecomb/demo/jaxrs/JaxrsIT.java} | 33 +--
demo/demo-pojo/pojo-client/pom.xml | 5 +
.../demo/pojo/client/CodeFirstPojoClient.java | 3 +-
.../servicecomb/demo/pojo/client/PojoClient.java | 67 +++---
.../servicecomb/demo/pojo/client/TestWeakPojo.java | 10 +
.../demo/pojo/server/SmartCareImpl.java | 2 -
.../servicecomb/demo/pojo/server/TestImpl.java | 1 -
.../servicecomb/demo/CategorizedTestCase.java | 9 +-
.../demo/CategorizedTestCaseRunner.java | 2 +-
.../servicecomb/demo/CodeFirstRestTemplate.java | 24 +--
.../main/resources/microservices/pojo/server.yaml | 4 -
demo/demo-springmvc/springmvc-client/pom.xml | 5 +
.../client/CodeFirstRestTemplateSpringmvc.java | 6 +-
.../demo/springmvc/client/SpringmvcClient.java | 164 ++++++++-------
.../demo/springmvc/client/TestWeakSpringmvc.java | 10 +
.../foundation/protobuf/ProtoMapper.java | 3 +
.../serializer/scalar/Int32WriteSchemas.java | 3 +
.../common/InvocationToHttpServletRequest.java | 13 +-
.../common/TestInvocationToHttpServletRequest.java | 4 +-
.../transport/highway/HighwayCodec.java | 4 +-
.../transport/highway/TestHighwayCodec.java | 114 +++--------
28 files changed, 494 insertions(+), 394 deletions(-)
diff --git a/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/OperationProtobuf.java b/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/OperationProtobuf.java
index e475712..9d12a9b 100644
--- a/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/OperationProtobuf.java
+++ b/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/OperationProtobuf.java
@@ -27,6 +27,7 @@ import javax.ws.rs.core.Response.Status.Family;
import org.apache.servicecomb.codec.protobuf.utils.ScopedProtobufSchemaManager;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.foundation.protobuf.ProtoMapper;
+import org.apache.servicecomb.foundation.protobuf.internal.ProtoConst;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import com.fasterxml.jackson.databind.JavaType;
@@ -45,6 +46,10 @@ public class OperationProtobuf {
private ResponseRootDeserializer<Object> responseRootDeserializer;
+ private ResponseRootSerializer anyResponseRootSerializer;
+
+ private ResponseRootDeserializer<Object> anyResponseRootDeserializer;
+
public OperationProtobuf(ScopedProtobufSchemaManager scopedProtobufSchemaManager, OperationMeta operationMeta) {
this.operationMeta = operationMeta;
initRequestCodec(scopedProtobufSchemaManager, operationMeta);
@@ -63,16 +68,14 @@ public class OperationProtobuf {
if (Family.SUCCESSFUL.equals(Family.familyOf(statusCode))) {
return this.responseRootSerializer;
}
- // TODO : WEAK handles only one response type.
- throw new IllegalStateException("not implemented now, statusCode = " + statusCode);
+ return anyResponseRootSerializer;
}
public ResponseRootDeserializer<Object> findResponseRootDeserializer(int statusCode) {
if (Family.SUCCESSFUL.equals(Family.familyOf(statusCode))) {
return this.responseRootDeserializer;
}
- // TODO : WEAK handles only one response type.
- throw new IllegalStateException("not implemented now, statusCode = " + statusCode);
+ return anyResponseRootDeserializer;
}
public OperationMeta getOperationMeta() {
@@ -159,5 +162,9 @@ public class OperationProtobuf {
}
}
}
+ anyResponseRootSerializer = new ResponseRootSerializer(mapper.createRootSerializer(ProtoConst.ANY,
+ Object.class), false, true);
+ anyResponseRootDeserializer = new ResponseRootDeserializer<>(
+ mapper.createRootDeserializer(ProtoConst.ANY, Object.class), false);
}
}
diff --git a/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/RequestRootSerializer.java b/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/RequestRootSerializer.java
index 0dde46e..ab34445 100644
--- a/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/RequestRootSerializer.java
+++ b/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/RequestRootSerializer.java
@@ -21,6 +21,8 @@ import java.util.Map;
import org.apache.servicecomb.foundation.protobuf.RootSerializer;
+import io.vertx.core.json.JsonObject;
+
public class RequestRootSerializer {
private RootSerializer rootSerializer;
@@ -37,7 +39,11 @@ public class RequestRootSerializer {
@SuppressWarnings("unchecked")
public byte[] serialize(Object value) throws IOException {
if (noTypesInfo && !isWrap) {
- return this.rootSerializer.serialize(((Map<String, Object>) value).values().iterator().next());
+ Object param = ((Map<String, Object>) value).values().iterator().next();
+ if (param instanceof JsonObject) {
+ param = ((JsonObject) param).getMap();
+ }
+ return this.rootSerializer.serialize(param);
} else {
return this.rootSerializer.serialize(value);
}
diff --git a/demo/demo-jaxrs/jaxrs-client/pom.xml b/demo/demo-jaxrs/jaxrs-client/pom.xml
index 28ca8ff..e21c510 100644
--- a/demo/demo-jaxrs/jaxrs-client/pom.xml
+++ b/demo/demo-jaxrs/jaxrs-client/pom.xml
@@ -50,5 +50,51 @@
<properties>
<demo.main>org.apache.servicecomb.demo.jaxrs.client.JaxrsClient</demo.main>
</properties>
+ <build>
+ <plugins>
+ <!-- Because other demos depend on this module, if add classpath, the depended module will fail dual to spring configuration files duplication.
+ So, we remove maven-dependency-plugin to make all integration tests run. In your applications, still need to add this to make packaged jar files run.
+ -->
+ <!--
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ </plugin>
+ -->
+ <plugin>
+ <groupId>com.github.odavid.maven.plugins</groupId>
+ <artifactId>mixin-maven-plugin</artifactId>
+ <configuration>
+ <mixins>
+ <mixin>
+ <groupId>org.apache.servicecomb.demo</groupId>
+ <artifactId>docker-run-config</artifactId>
+ <version>${project.version}</version>
+ </mixin>
+ </mixins>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <properties>
+ <demo.service.name>jaxrs-server</demo.service.name>
+ <demo.vm.options>
+ -Dcse.highway.address=0.0.0.0:7070
+ -Dcse.rest.address=0.0.0.0:8080?sslEnabled=false
+ </demo.vm.options>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
index 13fc4c9..9779b13 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java
@@ -26,14 +26,13 @@ import javax.ws.rs.core.Response.Status;
import org.apache.http.HttpStatus;
import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory;
import org.apache.servicecomb.core.Const;
+import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
import org.apache.servicecomb.demo.CodeFirstRestTemplate;
import org.apache.servicecomb.demo.DemoConst;
import org.apache.servicecomb.demo.RestObjectMapperWithStringMapper;
import org.apache.servicecomb.demo.RestObjectMapperWithStringMapperNotWriteNull;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.demo.compute.Person;
-import org.apache.servicecomb.demo.jaxrs.client.beanParam.BeanParamPojoClient;
-import org.apache.servicecomb.demo.jaxrs.client.beanParam.BeanParamRestTemplateClient;
import org.apache.servicecomb.demo.jaxrs.client.pojoDefault.DefaultModelServiceClient;
import org.apache.servicecomb.demo.jaxrs.client.validation.ValidationServiceClient;
import org.apache.servicecomb.demo.validator.Student;
@@ -41,7 +40,10 @@ import org.apache.servicecomb.foundation.common.utils.BeanUtils;
import org.apache.servicecomb.foundation.common.utils.Log4jUtils;
import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
+import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
@@ -51,12 +53,21 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
public class JaxrsClient {
+ private static final Logger LOGGER = LoggerFactory.getLogger(JaxrsClient.class);
+
private static RestTemplate templateNew = RestTemplateBuilder.create();
public static void main(String[] args) throws Exception {
init();
- run();
+ try {
+ run();
+ } catch (Exception e) {
+ TestMgr.check("success", "failed");
+ LOGGER.error("-------------- test failed -------------");
+ LOGGER.error("", e);
+ LOGGER.error("-------------- test failed -------------");
+ }
TestMgr.summary();
}
@@ -69,6 +80,8 @@ public class JaxrsClient {
}
public static void run() throws Exception {
+ CategorizedTestCaseRunner.runCategorizedTestCase("jaxrs");
+
CodeFirstRestTemplate codeFirstClient = new CodeFirstRestTemplateJaxrs();
codeFirstClient.testCodeFirst(templateNew, "jaxrs", "/codeFirstJaxrs/");
testCompute(templateNew);
@@ -76,18 +89,11 @@ public class JaxrsClient {
testClientTimeOut(templateNew);
testJaxRSDefaultValuesAllTransport(templateNew);
testSpringMvcDefaultValuesJavaPrimitiveAllTransport(templateNew);
- MultiErrorCodeServiceClient.runTest();
- BeanParamPojoClient beanParamPojoClient = new BeanParamPojoClient();
- beanParamPojoClient.testAllTransport();
- BeanParamRestTemplateClient beanParamRestTemplateClient = new BeanParamRestTemplateClient();
- beanParamRestTemplateClient.testAllTransport();
DefaultModelServiceClient.run();
ValidationServiceClient.run();
testOnlyRest(templateNew);
- beanParamPojoClient.testRestOnly();
- beanParamRestTemplateClient.testRestOnly();
}
private static void testOnlyRest(RestTemplate template) {
@@ -129,11 +135,11 @@ public class JaxrsClient {
testValidatorAddFail(template, cseUrlPrefix);
testValidatorSayHiFail(template, cseUrlPrefix);
testValidatorExchangeFail(template, cseUrlPrefix);
+ testJaxRSDefaultValuesRest(template);
} else if ("highway".equals(transport)) {
- // TODO : WEAK highway support InvocationException
-// testValidatorAddFail(template, cseUrlPrefix);
-// testValidatorSayHiFail(template, cseUrlPrefix);
-// testValidatorExchangeFail(template, cseUrlPrefix);
+ testValidatorAddFail(template, cseUrlPrefix);
+ testValidatorSayHiFail(template, cseUrlPrefix);
+ testValidatorExchangeFail(template, cseUrlPrefix);
}
testValidatorSayHiSuccess(template, cseUrlPrefix);
testValidatorExchangeSuccess(template, cseUrlPrefix);
@@ -207,43 +213,42 @@ public class JaxrsClient {
result = template.getForObject(cseUrlPrefix + "/query?d=10", String.class);
TestMgr.check("Hello 20bobo4010", result);
boolean failed = false;
- // TODO: WEAK invocationexception not support in HIGHWAY
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-//
-// failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query2?d=2&e=2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-// TestMgr.check(failed, true);
-//
-// failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query2?a=&d=2&e=2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-// TestMgr.check(failed, true);
-//
-// result = template.getForObject(cseUrlPrefix + "/query2?d=30&e=2", String.class);
-// TestMgr.check("Hello 20bobo40302", result);
-//
-// failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query3?a=2&b=2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-// TestMgr.check(failed, true);
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+
+ failed = false;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query2?d=2&e=2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(failed, true);
+
+ failed = false;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query2?a=&d=2&e=2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(failed, true);
+
+ result = template.getForObject(cseUrlPrefix + "/query2?d=30&e=2", String.class);
+ TestMgr.check("Hello 20bobo40302", result);
+
+ failed = false;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query3?a=2&b=2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(failed, true);
result = template.getForObject(cseUrlPrefix + "/query3?a=30&b=2", String.class);
TestMgr.check("Hello 302", result);
@@ -294,20 +299,19 @@ public class JaxrsClient {
}
private static void testGetAllTransport(RestTemplate template, String cseUrlPrefix) {
- // TODO: WEAK highway not support HttpServletRequest
-// Map<String, String> params = new HashMap<>();
-// params.put("a", "5");
-// params.put("b", "3");
-// int result =
-// template.getForObject(cseUrlPrefix + "/compute/reduce?a={a}&b={b}", Integer.class, params);
-// TestMgr.check(2, result);
-//
-// result = template.getForObject(cseUrlPrefix + "/compute/reduce?a={a}&b={b}", Integer.class, 5, 4);
-// TestMgr.check(1, result);
-//
-// result = template.getForObject(cseUrlPrefix + "/compute/reduce?a=5&b=6",
-// Integer.class);
-// TestMgr.check(-1, result);
+ Map<String, String> params = new HashMap<>();
+ params.put("a", "5");
+ params.put("b", "3");
+ int result =
+ template.getForObject(cseUrlPrefix + "/compute/reduce?a={a}&b={b}", Integer.class, params);
+ TestMgr.check(2, result);
+
+ result = template.getForObject(cseUrlPrefix + "/compute/reduce?a={a}&b={b}", Integer.class, 5, 4);
+ TestMgr.check(1, result);
+
+ result = template.getForObject(cseUrlPrefix + "/compute/reduce?a=5&b=6",
+ Integer.class);
+ TestMgr.check(-1, result);
}
private static void testPost(RestTemplate template, String cseUrlPrefix) {
@@ -381,9 +385,17 @@ public class JaxrsClient {
// Message dependends on locale, so just check the short part.
// 'must be greater than or equal to 20', propertyPath=add.arg1, rootBeanClass=class org.apache.servicecomb.demo.jaxrs.server.Validator, messageTemplate='{javax.validation.constraints.Min.message}'}]]
// ignored
- Map data = (Map) e.getErrorData();
- TestMgr.check(
- true, data.get("message").toString().contains("propertyPath=add.b"));
+ if (e.getErrorData() instanceof CommonExceptionData) {
+ // highway decode/encode 'Object' with special type information, got runtime type
+ CommonExceptionData data = (CommonExceptionData) e.getErrorData();
+ TestMgr.check(
+ true, data.getMessage().contains("propertyPath=add.b"));
+ } else {
+ // rest decode/encode 'Object' using json without type information, got map. Users can got runtime type by adding @JsonTypeInfo to the model.
+ Map data = (Map) e.getErrorData();
+ TestMgr.check(
+ true, data.get("message").toString().contains("propertyPath=add.b"));
+ }
}
TestMgr.check(true, isExcep);
@@ -407,9 +419,16 @@ public class JaxrsClient {
TestMgr.check(400, e.getStatus().getStatusCode());
TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase());
// Message dependends on locale, so just check the short part.
- Map data = (Map) e.getErrorData();
- TestMgr.check(
- true, data.get("message").toString().contains("propertyPath=sayHi.name"));
+ if (e.getErrorData() instanceof CommonExceptionData) {
+ // highway decode/encode 'Object' with special type information, got runtime type
+ CommonExceptionData data = (CommonExceptionData) e.getErrorData();
+ TestMgr.check(
+ true, data.getMessage().contains("propertyPath=sayHi.name"));
+ } else {
+ Map data = (Map) e.getErrorData();
+ TestMgr.check(
+ true, data.get("message").toString().contains("propertyPath=sayHi.name"));
+ }
}
TestMgr.check(true, isExcep);
}
@@ -440,9 +459,16 @@ public class JaxrsClient {
TestMgr.check(400, e.getStatus().getStatusCode());
TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase());
// Message dependends on locale, so just check the short part.
- Map data = (Map) e.getErrorData();
- TestMgr.check(
- true, data.get("message").toString().contains("propertyPath=sayHello.student.age"));
+ if (e.getErrorData() instanceof CommonExceptionData) {
+ // highway decode/encode 'Object' with special type information, got runtime type
+ CommonExceptionData data = (CommonExceptionData) e.getErrorData();
+ TestMgr.check(
+ true, data.getMessage().contains("propertyPath=sayHello.student.age"));
+ } else {
+ Map data = (Map) e.getErrorData();
+ TestMgr.check(
+ true, data.get("message").toString().contains("propertyPath=sayHello.student.age"));
+ }
}
TestMgr.check(true, isExcep);
}
@@ -524,29 +550,32 @@ public class JaxrsClient {
}
private static void testSpringMvcDefaultValuesJavaPrimitiveAllTransport(RestTemplate template) {
- // TODO : WEAK highway not support primitive default values
-// String microserviceName = "jaxrs";
-// String cseUrlPrefix = "cse://" + microserviceName + "/JaxRSDefaultValues/";
-//
-// HttpHeaders headers = new HttpHeaders();
-// headers.setContentType(org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED);
-// MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
-// HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
-//
-// //default values with primitive
-// String result = template.postForObject(cseUrlPrefix + "/javaprimitiveint", request, String.class);
-// TestMgr.check("Hello 0bobo", result);
-//
-// result = template.postForObject(cseUrlPrefix + "/javaprimitivenumber", request, String.class);
-// TestMgr.check("Hello 0.0false", result);
-//
-// result = template.postForObject(cseUrlPrefix + "/javaprimitivestr", request, String.class);
-// TestMgr.check("Hello", result);
-//
-// result = template.postForObject(cseUrlPrefix + "/javaprimitivecomb", request, String.class);
-// TestMgr.check("Hello nullnull", result);
-//
-// result = template.postForObject(cseUrlPrefix + "/allprimitivetypes", null, String.class);
-// TestMgr.check("Hello false,\0,0,0,0,0,0.0,0.0,null", result);
+ String microserviceName = "jaxrs";
+ for (String transport : DemoConst.transports) {
+ CategorizedTestCaseRunner.changeTransport(microserviceName, transport);
+
+ String cseUrlPrefix = "cse://" + microserviceName + "/JaxRSDefaultValues/";
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED);
+ MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
+ HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
+
+ //default values with primitive
+ String result = template.postForObject(cseUrlPrefix + "/javaprimitiveint", request, String.class);
+ TestMgr.check("Hello 0bobo", result);
+
+ result = template.postForObject(cseUrlPrefix + "/javaprimitivenumber", request, String.class);
+ TestMgr.check("Hello 0.0false", result);
+
+ result = template.postForObject(cseUrlPrefix + "/javaprimitivestr", request, String.class);
+ TestMgr.check("Hello", result);
+
+ result = template.postForObject(cseUrlPrefix + "/javaprimitivecomb", request, String.class);
+ TestMgr.check("Hello nullnull", result);
+
+ result = template.postForObject(cseUrlPrefix + "/allprimitivetypes", null, String.class);
+ TestMgr.check("Hello false,\0,0,0,0,0,0.0,0.0,null", result);
+ }
}
}
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
index f05604c..a58cbc5 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
@@ -22,14 +22,13 @@ import java.util.Map;
import javax.ws.rs.core.Response.Status;
import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory;
-import org.apache.servicecomb.demo.DemoConst;
+import org.apache.servicecomb.demo.CategorizedTestCase;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.demo.multiErrorCode.MultiRequest;
import org.apache.servicecomb.demo.multiErrorCode.MultiResponse200;
import org.apache.servicecomb.demo.multiErrorCode.MultiResponse400;
import org.apache.servicecomb.demo.multiErrorCode.MultiResponse500;
import org.apache.servicecomb.foundation.common.net.URIEndpointObject;
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
@@ -40,6 +39,7 @@ import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.client.UnknownHttpStatusCodeException;
@@ -47,27 +47,33 @@ import org.springframework.web.client.UnknownHttpStatusCodeException;
import io.vertx.core.json.Json;
import io.vertx.core.json.JsonObject;
-public class MultiErrorCodeServiceClient {
+@Component
+public class MultiErrorCodeServiceClient implements CategorizedTestCase {
private static final String SERVER = "cse://jaxrs";
private static String serverDirectURL;
private static RestTemplate template = RestTemplateBuilder.create();
- public static void runTest() {
- for (String transport : DemoConst.transports) {
- ArchaiusUtils.setProperty("servicecomb.references.transport.jaxrs", transport);
-
- // TODO fix this in SCB-1634
-// testErrorCode();
-// testErrorCodeWithHeader();
-// testErrorCodeWithHeaderJAXRS();
-// testErrorCodeWithHeaderJAXRSUsingRowType();
-// testNoClientErrorCode();
- }
+ @Override
+ public void testAllTransport() throws Exception {
+ testErrorCode();
+ testErrorCodeWithHeader();
+ testErrorCodeWithHeaderJAXRS();
+ testErrorCodeWithHeaderJAXRSUsingRowType();
+ testNoClientErrorCode();
+ }
+ @Override
+ public void testRestTransport() throws Exception {
prepareServerDirectURL();
testErrorCodeWrongType();
+ testErrorCodeWithHeaderJAXRSUsingRowTypeRest();
+ }
+
+ @Override
+ public void testHighwayTransport() throws Exception {
+
}
private static void prepareServerDirectURL() {
@@ -220,6 +226,23 @@ public class MultiErrorCodeServiceClient {
TestMgr.check(t500.getMessage(), "internal error");
}
+ private static void testErrorCodeWithHeaderJAXRSUsingRowTypeRest() {
+ // TODO recover this in SCB-1652
+ // using string
+// MultiRequest request = new MultiRequest();
+// request.setCode(200);
+// request.setMessage("test message");
+// String stringRequest = Json.encode(request);
+//
+// ResponseEntity<MultiResponse200> result = template
+// .postForEntity(SERVER + "/MultiErrorCodeService/errorCodeWithHeaderJAXRS", stringRequest,
+// MultiResponse200.class);
+// TestMgr.check(result.getStatusCodeValue(), 200);
+// TestMgr.check(result.getBody().getMessage(), "test message");
+// TestMgr.check(result.getBody().getCode(), 200);
+// TestMgr.check(result.getHeaders().getFirst("x-code"), 200);
+ }
+
private static void testErrorCodeWithHeaderJAXRSUsingRowType() {
JsonObject requestJson = new JsonObject();
requestJson.put("code", 200);
@@ -244,16 +267,6 @@ public class MultiErrorCodeServiceClient {
TestMgr.check(result.getBody().getMessage(), "test message");
TestMgr.check(result.getBody().getCode(), 200);
TestMgr.check(result.getHeaders().getFirst("x-code"), 200);
-
- // TODO recover this in SCB-1652
- // using string
-// result = template
-// .postForEntity(SERVER + "/MultiErrorCodeService/errorCodeWithHeaderJAXRS", stringRequest,
-// MultiResponse200.class);
-// TestMgr.check(result.getStatusCodeValue(), 200);
-// TestMgr.check(result.getBody().getMessage(), "test message");
-// TestMgr.check(result.getBody().getCode(), 200);
-// TestMgr.check(result.getHeaders().getFirst("x-code"), 200);
}
private static void testNoClientErrorCode() {
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java
index 2f384f4..9e09bc1 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java
@@ -20,25 +20,33 @@ package org.apache.servicecomb.demo.jaxrs.client.beanParam;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
+import org.apache.servicecomb.demo.CategorizedTestCase;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.provider.pojo.Invoker;
+import org.springframework.stereotype.Component;
-public class BeanParamPojoClient {
+@Component
+public class BeanParamPojoClient implements CategorizedTestCase {
private BeanParamTestServiceIntf beanParamTestServiceIntf;
public BeanParamPojoClient() {
beanParamTestServiceIntf = Invoker.createProxy("jaxrs", "beanParamTest", BeanParamTestServiceIntf.class);
}
- public void testAllTransport() {
- // TODO : WEAK highway not implement InvocationContext and BeanParam and Upload
-// testBeanParam();
-// testUpload();
+ @Override
+ public void testRestTransport() throws Exception {
+ testBeanParam();
+ testUpload();
+ }
+
+ @Override
+ public void testHighwayTransport() throws Exception {
+
}
- public void testRestOnly() {
+ @Override
+ public void testAllTransport() throws Exception {
testBeanParam();
- testUpload();
}
private void testBeanParam() {
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
index 401d3a2..69c5057 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
@@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream;
import java.util.HashMap;
import java.util.Map;
+import org.apache.servicecomb.demo.CategorizedTestCase;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.provider.springmvc.reference.CseHttpEntity;
import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
@@ -30,9 +31,11 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
-public class BeanParamRestTemplateClient {
+@Component
+public class BeanParamRestTemplateClient implements CategorizedTestCase {
RestTemplate restTemplate;
public BeanParamRestTemplateClient() {
@@ -40,17 +43,23 @@ public class BeanParamRestTemplateClient {
}
- public void testAllTransport() {
-// testBeanParam();
-// testUpload();
+ @Override
+ public void testRestTransport() throws Exception {
+ testBeanParam();
+ testUpload();
+ }
+
+ @Override
+ public void testHighwayTransport() throws Exception {
+
}
- public void testRestOnly() {
+ @Override
+ public void testAllTransport() throws Exception {
testBeanParam();
- testUpload();
}
- public void testBeanParam() {
+ private void testBeanParam() {
HttpHeaders headers = new HttpHeaders();
headers.add("Cookie", "cookieSwaggerLong=11");
headers.add("headerSwaggerInt", "2");
@@ -66,7 +75,7 @@ public class BeanParamRestTemplateClient {
result.getBody());
}
- public void testUpload() {
+ private void testUpload() {
BufferedInputStream bufferedInputStream0 = new BufferedInputStream(new ByteArrayInputStream("up0".getBytes()));
BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new ByteArrayInputStream("up1".getBytes()));
BufferedInputStream bufferedInputStream2 = new BufferedInputStream(new ByteArrayInputStream("up2".getBytes()));
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java b/demo/demo-jaxrs/jaxrs-client/src/test/java/org/apache/servicecomb/demo/jaxrs/JaxrsIT.java
similarity index 61%
copy from demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java
copy to demo/demo-jaxrs/jaxrs-client/src/test/java/org/apache/servicecomb/demo/jaxrs/JaxrsIT.java
index 4db55c9..df4d1ab 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/test/java/org/apache/servicecomb/demo/jaxrs/JaxrsIT.java
@@ -15,24 +15,27 @@
* limitations under the License.
*/
-package org.apache.servicecomb.demo;
+package org.apache.servicecomb.demo.jaxrs;
-public interface CategorizedTestCase {
- /**
- * test case which only successful in REST transport
- */
- default void testRestTransport() throws Exception {
- }
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+import org.apache.servicecomb.demo.TestMgr;
+import org.apache.servicecomb.demo.jaxrs.client.JaxrsClient;
+import org.junit.Before;
+import org.junit.Test;
- /**
- * test case which only successful in HIGHWAY transport
- */
- default void testHighwayTransport() throws Exception {
+public class JaxrsIT {
+
+ @Before
+ public void setUp() {
+ TestMgr.errors().clear();
}
- /**
- * test case which successful in both REST and HIGHWAY transport
- */
- default void testAllTransport() throws Exception {
+ @Test
+ public void clientGetsNoError() throws Exception {
+ JaxrsClient.main(new String[0]);
+
+ assertThat(TestMgr.errors().isEmpty(), is(true));
}
}
diff --git a/demo/demo-pojo/pojo-client/pom.xml b/demo/demo-pojo/pojo-client/pom.xml
index 34475b2..04ce19a 100644
--- a/demo/demo-pojo/pojo-client/pom.xml
+++ b/demo/demo-pojo/pojo-client/pom.xml
@@ -48,10 +48,15 @@
</properties>
<build>
<plugins>
+ <!-- Because other demos depend on this module, if add classpath, the depended module will fail dual to spring configuration files duplication.
+ So, we remove maven-dependency-plugin to make all integration tests run. In your applications, still need to add this to make packaged jar files run.
+ -->
+ <!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
+ -->
<plugin>
<groupId>com.github.odavid.maven.plugins</groupId>
<artifactId>mixin-maven-plugin</artifactId>
diff --git a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/CodeFirstPojoClient.java b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/CodeFirstPojoClient.java
index 147d17e..ee91f31 100644
--- a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/CodeFirstPojoClient.java
+++ b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/CodeFirstPojoClient.java
@@ -71,8 +71,7 @@ public class CodeFirstPojoClient {
private void testAll(CodeFirstPojoIntf codeFirst) {
testCodeFirstUserMap(codeFirst);
testCodeFirstUserArray(codeFirst);
- // TODO: WEAK highway returns array
-// testCodeFirstStrings(codeFirst);
+ testCodeFirstStrings(codeFirst);
testCodeFirstBytes(codeFirst);
testCodeFirstAddDate(codeFirst);
testCodeFirstAddString(codeFirst);
diff --git a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
index 1f3d012..a302b38 100644
--- a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
+++ b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
@@ -23,6 +23,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ForkJoinPool;
+import java.util.stream.IntStream;
import javax.inject.Inject;
@@ -86,32 +88,29 @@ public class PojoClient {
TestMgr.check("success", "failed");
LOGGER.error("-------------- test failed -------------");
LOGGER.error("", e);
- System.err.println("-------------- test failed -------------");
+ LOGGER.error("-------------- test failed -------------");
}
TestMgr.summary();
}
- private static void testContextClassLoaderIsNull() {
- // TODO: WEAK protostuff many classes use ContextClassLoader to load classes, if it is null,
- // Will cause many components not work.
-// IntStream.range(0, 100).parallel().forEach(item -> {
-// if (Thread.currentThread().getName().equals("main")) {
-// return;
-// }
-// // in web environment, this could be null, here we just mock a null class loader.
-// Thread.currentThread().setContextClassLoader(null);
-// TestMgr.check(null, test.postTestStatic(2));
-// });
+ private static void testContextClassLoaderIsNull() throws Exception {
+ ForkJoinPool pool = new ForkJoinPool(4);
+ pool.submit(() ->
+ IntStream.range(0, 20).parallel().forEach(item -> {
+ if (Thread.currentThread().getName().equals("main")) {
+ return;
+ }
+ // in web environment, this could be null, here we just mock a null class loader.
+ Thread.currentThread().setContextClassLoader(null);
+ TestMgr.check(null, test.postTestStatic(2));
+ })).get();
}
public static void run() throws Exception {
CategorizedTestCaseRunner.runCategorizedTestCase("pojo");
- testContextClassLoaderIsNull();
-
smartcare = BeanUtils.getBean("smartcare");
-
String microserviceName = "pojo";
codeFirstPojoClient.testCodeFirst(microserviceName);
@@ -120,6 +119,7 @@ public class PojoClient {
TestMgr.setMsg(microserviceName, transport);
LOGGER.info("test {}, transport {}", microserviceName, transport);
+ testContextClassLoaderIsNull();
testNull(testFromXml);
testNull(test);
@@ -228,24 +228,23 @@ public class PojoClient {
}
private static void testException(Test test) {
- // TODO : WEAK highway support error code
-// try {
-// test.testException(456);
-// } catch (InvocationException e) {
-// TestMgr.check("456 error", e.getErrorData());
-// }
-//
-// try {
-// test.testException(556);
-// } catch (InvocationException e) {
-// TestMgr.check("[556 error]", e.getErrorData());
-// }
-
-// try {
-// test.testException(557);
-// } catch (InvocationException e) {
-// TestMgr.check("[[557 error]]", e.getErrorData());
-// }
+ try {
+ test.testException(456);
+ } catch (InvocationException e) {
+ TestMgr.check("456 error", e.getErrorData());
+ }
+
+ try {
+ test.testException(556);
+ } catch (InvocationException e) {
+ TestMgr.check("[556 error]", e.getErrorData());
+ }
+
+ try {
+ test.testException(557);
+ } catch (InvocationException e) {
+ TestMgr.check("[[557 error]]", e.getErrorData());
+ }
}
private static void testInputArray(Test test) {
@@ -281,7 +280,6 @@ public class PojoClient {
}
private static void testEmptyHighway(Test test) {
- // TODO : WEAK highway will never encoding empty string
TestMgr.check("code is 'null'", test.getTestString(""));
}
@@ -294,7 +292,6 @@ public class PojoClient {
}
private static void testNullHighway(Test test) {
- // TODO: WEAK highway will never have request with null. When new User, the default name is nameA
TestMgr.check("nameA", test.wrapParam(null).getName());
}
diff --git a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java
index d324463..1ab7f58 100644
--- a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java
+++ b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java
@@ -109,6 +109,16 @@ public class TestWeakPojo implements CategorizedTestCase {
private ObjectInf objectInf;
@Override
+ public void testRestTransport() throws Exception {
+
+ }
+
+ @Override
+ public void testHighwayTransport() throws Exception {
+
+ }
+
+ @Override
public void testAllTransport() throws Exception {
testDiffName();
diff --git a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/SmartCareImpl.java b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/SmartCareImpl.java
index 69a4abd..7b34256 100644
--- a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/SmartCareImpl.java
+++ b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/SmartCareImpl.java
@@ -28,7 +28,6 @@ public class SmartCareImpl implements SmartCare {
@Override
public Response addApplication(Application application) {
- // TODO: add application
LOG.info(application.toString());
Response resp = new Response();
@@ -40,7 +39,6 @@ public class SmartCareImpl implements SmartCare {
@SuppressWarnings("divzero")
@Override
public Response delApplication(String appName) {
- // TODO: delete application
LOG.info(appName);
try {
diff --git a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/TestImpl.java b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/TestImpl.java
index 1d8fd4e..be1baca 100644
--- a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/TestImpl.java
+++ b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/TestImpl.java
@@ -88,7 +88,6 @@ public class TestImpl implements Test {
@Override
public User wrapParam(TestRequest request) {
- // TODO: WEAK highway will never have request with null, so here check request.getUser() == null
if (request == null || request.getUser() == null) {
return null;
}
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java
index 4db55c9..51c733a 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java
+++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCase.java
@@ -21,18 +21,15 @@ public interface CategorizedTestCase {
/**
* test case which only successful in REST transport
*/
- default void testRestTransport() throws Exception {
- }
+ void testRestTransport() throws Exception;
/**
* test case which only successful in HIGHWAY transport
*/
- default void testHighwayTransport() throws Exception {
- }
+ void testHighwayTransport() throws Exception;
/**
* test case which successful in both REST and HIGHWAY transport
*/
- default void testAllTransport() throws Exception {
- }
+ void testAllTransport() throws Exception;
}
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCaseRunner.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCaseRunner.java
index 1bc637a..ee508cd 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCaseRunner.java
+++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CategorizedTestCaseRunner.java
@@ -38,7 +38,7 @@ public class CategorizedTestCaseRunner {
}
}
- private static void changeTransport(String microserviceName, String transport) {
+ public static void changeTransport(String microserviceName, String transport) {
ArchaiusUtils.setProperty("servicecomb.references.transport." + microserviceName, transport);
TestMgr.setMsg(microserviceName, transport);
}
diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
index 417c351..087d518 100644
--- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
+++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
@@ -57,30 +57,28 @@ public class CodeFirstRestTemplate {
changeTransport(microserviceName, Const.RESTFUL);
testOnlyRest(microserviceName, template, cseUrlPrefix);
- for (String transport : DemoConst.transports) {
+ for (String transport : DemoConst.transports) {
changeTransport(microserviceName, transport);
testAllTransport(microserviceName, template, cseUrlPrefix);
}
}
protected void testAllTransport(String microserviceName, RestTemplate template, String cseUrlPrefix) {
- // TODO : WEAK not supported now in HIGHWAY
-// testCodeFirstUserMap(template, cseUrlPrefix);
-// testCodeFirstTextPlain(template, cseUrlPrefix);
-// testCodeFirstAppXml(template, cseUrlPrefix);
-// testCodeFirstBytes(template, cseUrlPrefix);
-// testCseResponse(microserviceName, template, cseUrlPrefix);
-// testCodeFirstAddDate(template, cseUrlPrefix);
-
-// testCodeFirstAdd(template, cseUrlPrefix);
-// testCodeFirstAddString(template, cseUrlPrefix);
+ testCodeFirstUserMap(template, cseUrlPrefix);
+ testCodeFirstTextPlain(template, cseUrlPrefix);
+ testCodeFirstAppXml(template, cseUrlPrefix);
+ testCodeFirstBytes(template, cseUrlPrefix);
+ testCseResponse(microserviceName, template, cseUrlPrefix);
+ testCodeFirstAddDate(template, cseUrlPrefix);
+
+ testCodeFirstAdd(template, cseUrlPrefix);
+ testCodeFirstAddString(template, cseUrlPrefix);
testCodeFirstIsTrue(template, cseUrlPrefix);
testCodeFirstSayHi2(template, cseUrlPrefix);
testCodeFirstSayHi(template, cseUrlPrefix);
testCodeFirstSaySomething(template, cseUrlPrefix);
- // testCodeFirstRawJsonString(template, cseUrlPrefix);
testCodeFirstSayHello(template, cseUrlPrefix);
-// testCodeFirstReduce(template, cseUrlPrefix);
+ testCodeFirstReduce(template, cseUrlPrefix);
testTraceIdOnContextContainsTraceId(template, cseUrlPrefix);
diff --git a/demo/demo-schema/src/main/resources/microservices/pojo/server.yaml b/demo/demo-schema/src/main/resources/microservices/pojo/server.yaml
index da06df5..9c8be9e 100644
--- a/demo/demo-schema/src/main/resources/microservices/pojo/server.yaml
+++ b/demo/demo-schema/src/main/resources/microservices/pojo/server.yaml
@@ -196,8 +196,6 @@ definitions:
type: object
properties:
index:
- # TODO WEAK highway do not support map number(which IDL type is double) to integer
- # type: number
type: integer
format: int32
user:
@@ -218,8 +216,6 @@ definitions:
type: integer
format: int32
index:
- # TODO WEAK highway do not support map number(which IDL type is double) to integer
- # type: number
type: integer
format: int32
x-java-class: "org.apache.servicecomb.demo.server.User"
diff --git a/demo/demo-springmvc/springmvc-client/pom.xml b/demo/demo-springmvc/springmvc-client/pom.xml
index 9f15f93..970463f 100644
--- a/demo/demo-springmvc/springmvc-client/pom.xml
+++ b/demo/demo-springmvc/springmvc-client/pom.xml
@@ -65,10 +65,15 @@
</properties>
<build>
<plugins>
+ <!-- Because other demos depend on this module, if add classpath, the depended module will fail dual to spring configuration files duplication.
+ So, we remove maven-dependency-plugin to make all integration tests run. In your applications, still need to add this to make packaged jar files run.
+ -->
+ <!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
+ -->
<plugin>
<groupId>com.github.odavid.maven.plugins</groupId>
<artifactId>mixin-maven-plugin</artifactId>
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
index 563fcdf..8e88096 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
@@ -113,8 +113,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
testBizkeeper.runAllTest();
testResponseEntity("springmvc", template, cseUrlPrefix);
testCodeFirstTestForm(template, cseUrlPrefix);
- // TODO : WEAK not supported now in HIGHWAY
-// testFallback(template, cseUrlPrefix);
+ testFallback(template, cseUrlPrefix);
super.testAllTransport(microserviceName, template, cseUrlPrefix);
}
@@ -249,7 +248,8 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
TestMgr.check(code + "null",
template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
map.put("form2", "hello");
- TestMgr.check(code + "hello", template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
+ TestMgr
+ .check(code + "hello", template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
}
private void testCodeFirstTestFormHighway(RestTemplate template, String cseUrlPrefix) {
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java
index 8ecfadf..1b299fe 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java
@@ -243,26 +243,25 @@ public class SpringmvcClient {
TestMgr.check(e.getStatusCode(), 400);
}
- // TODO: WEAK HttpServletRequest not supported in highway
-// TestMgr.check("hi world [world]",
-// template.getForObject(prefix + "/controller/sayhi?name=world",
-// String.class));
-//
-// TestMgr.check("hi world1 [world1]",
-// template.getForObject(prefix + "/controller/sayhi?name={name}",
-// String.class,
-// "world1"));
-// TestMgr.check("hi hi 中国 [hi 中国]",
-// template.getForObject(prefix + "/controller/sayhi?name={name}",
-// String.class,
-// "hi 中国"));
-//
-// Map<String, String> params = new HashMap<>();
-// params.put("name", "world2");
-// TestMgr.check("hi world2 [world2]",
-// template.getForObject(prefix + "/controller/sayhi?name={name}",
-// String.class,
-// params));
+ TestMgr.check("hi world [world]",
+ template.getForObject(prefix + "/controller/sayhi?name=world",
+ String.class));
+
+ TestMgr.check("hi world1 [world1]",
+ template.getForObject(prefix + "/controller/sayhi?name={name}",
+ String.class,
+ "world1"));
+ TestMgr.check("hi hi 中国 [hi 中国]",
+ template.getForObject(prefix + "/controller/sayhi?name={name}",
+ String.class,
+ "hi 中国"));
+
+ Map<String, String> params = new HashMap<>();
+ params.put("name", "world2");
+ TestMgr.check("hi world2 [world2]",
+ template.getForObject(prefix + "/controller/sayhi?name={name}",
+ String.class,
+ params));
TestMgr.check("hello world",
template.postForObject(prefix + "/controller/sayhello/{name}",
@@ -275,16 +274,15 @@ public class SpringmvcClient {
String.class,
"hello 中国"));
- // TODO: WEAK throw InvocationiException not supported in highway
-// try {
-// template.postForObject(prefix + "/controller/sayhello/{name}",
-// null,
-// String.class,
-// "exception");
-// TestMgr.check(true, false);
-// } catch (InvocationException e) {
-// TestMgr.check(e.getStatusCode(), 503);
-// }
+ try {
+ template.postForObject(prefix + "/controller/sayhello/{name}",
+ null,
+ String.class,
+ "exception");
+ TestMgr.check(true, false);
+ } catch (InvocationException e) {
+ TestMgr.check(e.getStatusCode(), 503);
+ }
HttpHeaders headers = new HttpHeaders();
headers.add("name", "world");
@@ -306,8 +304,7 @@ public class SpringmvcClient {
}
private static void testController() {
- // TODO: WEAK HttpServletRequest not supported in highway
-// TestMgr.check("hi world [world]", controller.sayHi("world"));
+ TestMgr.check("hi world [world]", controller.sayHi("world"));
Person user = new Person();
user.setName("world");
TestMgr.check("ha world", controller.saySomething("ha", user));
@@ -368,42 +365,51 @@ public class SpringmvcClient {
String result = template.getForObject(cseUrlPrefix + "/query?d=10", String.class);
TestMgr.check("Hello 20bobo4010", result);
boolean failed = false;
+ result = null;
try {
result = template.getForObject(cseUrlPrefix + "/query2", String.class);
} catch (InvocationException e) {
failed = true;
TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
}
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
failed = false;
+ result = null;
try {
result = template.getForObject(cseUrlPrefix + "/query2?d=2&e=2", String.class);
} catch (InvocationException e) {
failed = true;
TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
}
- TestMgr.check(failed, true);
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
failed = false;
+ result = null;
try {
result = template.getForObject(cseUrlPrefix + "/query2?a=&d=2&e=2", String.class);
} catch (InvocationException e) {
failed = true;
TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
}
- TestMgr.check(failed, true);
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
result = template.getForObject(cseUrlPrefix + "/query2?d=30&e=2", String.class);
TestMgr.check("Hello 20bobo40302", result);
failed = false;
+ result = null;
try {
result = template.getForObject(cseUrlPrefix + "/query3?a=2&b=2", String.class);
} catch (InvocationException e) {
failed = true;
TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
}
- TestMgr.check(failed, true);
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
}
private static void testSpringMvcDefaultValuesAllTransport(RestTemplate template, String microserviceName) {
@@ -421,46 +427,54 @@ public class SpringmvcClient {
result = template.postForObject(cseUrlPrefix + "/header", entity, String.class);
TestMgr.check("Hello 20bobo30", result);
- // TODO: WEAK InvocationException not supported in highway
-// result = template.getForObject(cseUrlPrefix + "/query?d=10", String.class);
-// TestMgr.check("Hello 20bobo4010", result);
-// boolean failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-//
-// failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query2?d=2&e=2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-// TestMgr.check(failed, true);
-//
-// failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query2?a=&d=2&e=2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-// TestMgr.check(failed, true);
-//
-// result = template.getForObject(cseUrlPrefix + "/query2?d=30&e=2", String.class);
-// TestMgr.check("Hello 20bobo40302", result);
-//
-// failed = false;
-// try {
-// result = template.getForObject(cseUrlPrefix + "/query3?a=2&b=2", String.class);
-// } catch (InvocationException e) {
-// failed = true;
-// TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
-// }
-// TestMgr.check(failed, true);
+ result = template.getForObject(cseUrlPrefix + "/query?d=10", String.class);
+ TestMgr.check("Hello 20bobo4010", result);
+ boolean failed = false;
+ result = null;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
+
+ failed = false;
+ result = null;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query2?d=2&e=2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
+
+ failed = false;
+ result = null;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query2?a=&d=2&e=2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
+
+ result = template.getForObject(cseUrlPrefix + "/query2?d=30&e=2", String.class);
+ TestMgr.check("Hello 20bobo40302", result);
+
+ failed = false;
+ result = null;
+ try {
+ result = template.getForObject(cseUrlPrefix + "/query3?a=2&b=2", String.class);
+ } catch (InvocationException e) {
+ failed = true;
+ TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
+ }
+ TestMgr.check(true, failed);
+ TestMgr.check(null, result);
result = template.getForObject(cseUrlPrefix + "/query3?a=30&b=2", String.class);
TestMgr.check("Hello 302", result);
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
index b7317c8..36d4c91 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
@@ -106,6 +106,16 @@ public class TestWeakSpringmvc implements CategorizedTestCase {
private RestTemplate restTemplate = RestTemplateBuilder.create();
@Override
+ public void testRestTransport() throws Exception {
+
+ }
+
+ @Override
+ public void testHighwayTransport() throws Exception {
+
+ }
+
+ @Override
public void testAllTransport() throws Exception {
getDiffName();
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/ProtoMapper.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/ProtoMapper.java
index 1a86e9b..7a5e695 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/ProtoMapper.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/ProtoMapper.java
@@ -99,6 +99,9 @@ public class ProtoMapper {
public Message getRequestMessage(String operationId) {
Service service = proto.getServices().get(0);
ServiceMethod serviceMethod = service.getMethod(operationId);
+ if (serviceMethod == null) {
+ throw new IllegalArgumentException("operation not found, operation id=" + operationId);
+ }
return serviceMethod.getArgType();
}
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java
index 42b2f55..615afb6 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java
@@ -62,6 +62,9 @@ public final class Int32WriteSchemas {
}
if (value instanceof String) {
+ if (((String) value).isEmpty()) {
+ return;
+ }
int parsedValue = Integer.parseInt((String) value, 10);
output.writeScalarInt32(tag, tagSize, parsedValue);
return;
diff --git a/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java b/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java
index b98f799..be3cda5 100644
--- a/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java
+++ b/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java
@@ -36,16 +36,17 @@ import io.vertx.core.net.SocketAddress;
public class InvocationToHttpServletRequest extends AbstractHttpServletRequest {
private RestOperationMeta swaggerOperation;
- private SocketAddress sockerAddress;
-
private Invocation invocation;
public InvocationToHttpServletRequest(Invocation invocation) {
this.swaggerOperation = invocation.getOperationMeta().getExtData(RestConst.SWAGGER_REST_OPERATION);
- this.sockerAddress = (SocketAddress) invocation.getHandlerContext().get(Const.REMOTE_ADDRESS);
this.invocation = invocation;
}
+ private SocketAddress getSockerAddress() {
+ return (SocketAddress) invocation.getHandlerContext().get(Const.REMOTE_ADDRESS);
+ }
+
@Override
public String getParameter(String name) {
RestParam param = swaggerOperation.getParamByName(name);
@@ -112,17 +113,17 @@ public class InvocationToHttpServletRequest extends AbstractHttpServletRequest {
@Override
public String getRemoteAddr() {
- return this.sockerAddress == null ? "" : this.sockerAddress.host();
+ return this.getSockerAddress() == null ? "" : this.getSockerAddress().host();
}
@Override
public String getRemoteHost() {
- return this.sockerAddress == null ? "" : this.sockerAddress.host();
+ return this.getSockerAddress() == null ? "" : this.getSockerAddress().host();
}
@Override
public int getRemotePort() {
- return this.sockerAddress == null ? 0 : this.sockerAddress.port();
+ return this.getSockerAddress() == null ? 0 : this.getSockerAddress().port();
}
@Override
diff --git a/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java b/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java
index 13619f4..3faa31f 100644
--- a/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java
+++ b/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java
@@ -71,8 +71,6 @@ public class TestInvocationToHttpServletRequest {
result = operationMeta;
operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
result = swaggerOperation;
- invocation.getHandlerContext();
- result = handlerContext;
}
};
@@ -288,6 +286,8 @@ public class TestInvocationToHttpServletRequest {
result = "127.0.0.2";
socketAddress.port();
result = 8088;
+ invocation.getHandlerContext();
+ result = handlerContext;
}
};
String addr = request.getRemoteAddr();
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java
index 014f2b7..bb28651 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java
@@ -84,8 +84,8 @@ public final class HighwayCodec {
@SuppressWarnings({"rawtypes", "unchecked"})
public static void decodeRequest(Invocation invocation, RequestHeader header, OperationProtobuf operationProtobuf,
Buffer bodyBuffer) throws Exception {
- RequestRootDeserializer<Object> requestDesirializer = operationProtobuf.getRequestRootDeserializer();
- Map<String, Object> swaggerArguments = requestDesirializer.deserialize(bodyBuffer.getBytes());
+ RequestRootDeserializer<Object> requestDeserializer = operationProtobuf.getRequestRootDeserializer();
+ Map<String, Object> swaggerArguments = requestDeserializer.deserialize(bodyBuffer.getBytes());
addPrimitiveTypeDefaultValues(invocation, operationProtobuf.getOperationMeta(), swaggerArguments);
invocation.setSwaggerArguments(swaggerArguments);
invocation.mergeContext(header.getContext());
diff --git a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java
index 7635139..e77d364 100644
--- a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java
+++ b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java
@@ -22,10 +22,12 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.servicecomb.codec.protobuf.definition.OperationProtobuf;
+import org.apache.servicecomb.codec.protobuf.definition.RequestRootDeserializer;
import org.apache.servicecomb.codec.protobuf.definition.RequestRootSerializer;
import org.apache.servicecomb.codec.protobuf.definition.ResponseRootSerializer;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.Invocation;
+import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.foundation.vertx.server.TcpParser;
@@ -46,19 +48,20 @@ import io.vertx.core.buffer.Buffer;
import mockit.Mocked;
public class TestHighwayCodec {
-
- private RequestHeader header = null;
-
private OperationProtobuf operationProtobuf = null;
private Buffer bodyBuffer = null;
private RequestRootSerializer requestSerializer = null;
+ private RequestRootDeserializer<Object> requestRootDeserializer = null;
+
private SchemaMeta schemaMeta = null;
private OperationMeta operationMeta = null;
+ private MicroserviceMeta microserviceMeta = null;
+
private ByteBuf lByteBuf = null;
private ByteBuffer nioBuffer = null;
@@ -75,18 +78,20 @@ public class TestHighwayCodec {
serviceRegistry.init();
RegistryUtils.setServiceRegistry(serviceRegistry);
- header = Mockito.mock(RequestHeader.class);
-
operationProtobuf = Mockito.mock(OperationProtobuf.class);
bodyBuffer = Mockito.mock(Buffer.class);
requestSerializer = Mockito.mock(RequestRootSerializer.class);
+ requestRootDeserializer = Mockito.mock(RequestRootDeserializer.class);
+
schemaMeta = Mockito.mock(SchemaMeta.class);
operationMeta = Mockito.mock(OperationMeta.class);
+ microserviceMeta = Mockito.mock(MicroserviceMeta.class);
+
lByteBuf = Mockito.mock(ByteBuf.class);
nioBuffer = Mockito.mock(ByteBuffer.class);
@@ -97,8 +102,6 @@ public class TestHighwayCodec {
@After
public void tearDown() {
- header = null;
-
operationProtobuf = null;
bodyBuffer = null;
@@ -116,66 +119,25 @@ public class TestHighwayCodec {
invocation = null;
}
- @Test
- public void testDecodeRequest(@Mocked Endpoint endpoint) throws Exception {
- // TODO : WK unit test
-// commonMock();
-// Mockito.when(schemaMeta.getMicroserviceMeta().getProviderHandlerChain()).thenReturn(Collections.emptyList());
-// Object[] args = new Object[] {};
-// Mockito.when(schema.readObject(bodyBuffer)).thenReturn(args);
-//
-// Invocation invocation = new Invocation(endpoint, operationMeta, null);
-//
-// HighwayCodec.decodeRequest(invocation, header, operationProtobuf, bodyBuffer);
-//
-// Assert.assertSame(args, invocation.getSwaggerArguments());
- }
-
- @Test
- public void testDecodeResponse() throws Exception {
- // TODO : WK unit test
- // Invocation invocation = Mockito.mock(Invocation.class);
-// Mockito.when(operationProtobuf.findResponseSchema(200)).thenReturn(Mockito.mock(WrapSchema.class));
-//
-// Map<String, String> context = new HashMap<>();
-// Mockito.when(invocation.getContext()).thenReturn(context);
-//
-// TcpData tcpData = Mockito.mock(TcpData.class);
-//
-// Mockito.when(tcpData.getHeaderBuffer()).thenReturn(bodyBuffer);
-// commonMock();
-//
-// ResponseHeader header = new ResponseHeader();
-// header.setStatusCode(200);
-// header.setContext(new HashMap<>());
-// header.getContext().put("a", "10");
-// Buffer responseBuf = HighwayCodec.encodeResponse(0, header, null, null);
-//
-// TcpData tcp = new TcpData(responseBuf.slice(23, responseBuf.length()), null);
-// Response response = HighwayCodec.decodeResponse(invocation, operationProtobuf, tcp);
-// Assert.assertEquals("10", invocation.getContext().get("a"));
-// Assert.assertEquals(200, response.getStatusCode());
- }
@Test
public void testDecodeRequestTraceId(@Mocked Endpoint endpoint) throws Exception {
- // TODO : WK unit test
- // commonMock();
-//
-// Invocation invocation = new Invocation(endpoint, operationMeta, null);
-//
-// invocation.addContext("X-B3-traceId", "test1");
-// Assert.assertEquals("test1", invocation.getContext("X-B3-traceId"));
-//
-// RequestHeader headers = new RequestHeader();
-// Map<String, String> context = new HashMap<>();
-// headers.setContext(context);
-// HighwayCodec.decodeRequest(invocation, headers, operationProtobuf, bodyBuffer);
-// Assert.assertEquals("test1", invocation.getContext("X-B3-traceId"));
-//
-// context.put("X-B3-traceId", "test2");
-// HighwayCodec.decodeRequest(invocation, headers, operationProtobuf, bodyBuffer);
-// Assert.assertEquals("test2", invocation.getContext("X-B3-traceId"));
+ commonMock();
+
+ Invocation invocation = new Invocation(endpoint, operationMeta, null);
+
+ invocation.addContext("X-B3-traceId", "test1");
+ Assert.assertEquals("test1", invocation.getContext("X-B3-traceId"));
+
+ RequestHeader headers = new RequestHeader();
+ Map<String, String> context = new HashMap<>();
+ headers.setContext(context);
+ HighwayCodec.decodeRequest(invocation, headers, operationProtobuf, bodyBuffer);
+ Assert.assertEquals("test1", invocation.getContext("X-B3-traceId"));
+
+ context.put("X-B3-traceId", "test2");
+ HighwayCodec.decodeRequest(invocation, headers, operationProtobuf, bodyBuffer);
+ Assert.assertEquals("test2", invocation.getContext("X-B3-traceId"));
}
@Test
@@ -212,32 +174,14 @@ public class TestHighwayCodec {
Assert.assertTrue(status);
}
- @Test
- public void testReadRequestHeader() {
- // TODO : WK unit test
- // boolean status = true;
-// try {
-// new MockUp<NotWrapSchema>() {
-// @Mock
-// public Object readObject(Input input) throws IOException {
-// return new RequestHeader();
-// }
-// };
-// bodyBuffer = Buffer.buffer("\"abc\"");
-// RequestHeader requestHeader = HighwayCodec.readRequestHeader(bodyBuffer);
-// Assert.assertNotNull(requestHeader);
-// Assert.assertEquals(0, requestHeader.getFlags());
-// } catch (Exception e) {
-// status = false;
-// }
-// Assert.assertTrue(status);
- }
-
private void commonMock() {
Mockito.when(operationProtobuf.getRequestRootSerializer()).thenReturn(requestSerializer);
+ Mockito.when(operationProtobuf.getRequestRootDeserializer()).thenReturn(requestRootDeserializer);
Mockito.when(bodyBuffer.getByteBuf()).thenReturn(lByteBuf);
+ Mockito.when(bodyBuffer.getBytes()).thenReturn(new byte[0]);
Mockito.when(lByteBuf.nioBuffer()).thenReturn(nioBuffer);
Mockito.when(operationProtobuf.getOperationMeta()).thenReturn(operationMeta);
Mockito.when(operationMeta.getSchemaMeta()).thenReturn(schemaMeta);
+ Mockito.when(schemaMeta.getMicroserviceMeta()).thenReturn(microserviceMeta);
}
}