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 2018/08/17 02:23:51 UTC
[incubator-servicecomb-java-chassis] 02/10: [SCB-847]fix test
errors and deal with error code override
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/incubator-servicecomb-java-chassis.git
commit a0131f061b77e64556da2bab91e4de99330c25c8
Author: liubao <ba...@huawei.com>
AuthorDate: Thu Aug 16 09:30:31 2018 +0800
[SCB-847]fix test errors and deal with error code override
---
.../servicecomb/demo/edge/consumer/Consumer.java | 5 ++--
.../servicecomb/demo/jaxrs/client/JaxrsClient.java | 27 ++++++++++++++--------
.../resources/microservices/jaxrs/compute.yaml | 1 +
.../demo/springmvc/client/SpringmvcClient.java | 3 +++
.../swagger/generator/core/OperationGenerator.java | 3 ---
.../swagger/invocation/response/ResponsesMeta.java | 5 ++--
.../invocation/response/TestResponsesMeta.java | 11 +++++----
7 files changed, 35 insertions(+), 20 deletions(-)
diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
index c5c22ea..95ea17a 100644
--- a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
+++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
@@ -161,6 +161,7 @@ public class Consumer {
Assert.isNull(response.getField().getField(), "must be null");
}
+ @SuppressWarnings({"unckecked", "rawtypes"})
protected void testErrorCode() {
String url = edgePrefix + "/v2/error/add";
@@ -171,14 +172,14 @@ public class Consumer {
Assert.isTrue(raw.get("message").equals("Cse Internal Server Error"), "x99");
try {
- raw = template.getForObject(url + "?x=88&y=3", Map.class);
+ template.getForObject(url + "?x=88&y=3", Map.class);
Assert.isTrue(false, "x88");
} catch (HttpClientErrorException e) {
Assert.isTrue(e.getRawStatusCode() == 403, "x88");
Assert.isTrue(e.getResponseBodyAsString().equals("{\"id\":12,\"message\":\"not allowed id.\"}"), "x88");
}
try {
- raw = template.getForObject(url + "?x=77&y=3", Map.class);
+ template.getForObject(url + "?x=77&y=3", Map.class);
Assert.isTrue(false, "x77");
} catch (HttpServerErrorException e) {
Assert.isTrue(e.getRawStatusCode() == 500, "x77");
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 f285d5f..ac13405 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
@@ -179,6 +179,9 @@ public class JaxrsClient {
result = template.getForObject(cseUrlPrefix + "/query3?a=30&b=2", String.class);
TestMgr.check("Hello 302", result);
+ result = template.getForObject(cseUrlPrefix + "/query3?a=30", String.class);
+ TestMgr.check("Hello 30null", result);
+
//input values
headers = new HttpHeaders();
headers.setContentType(org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED);
@@ -278,6 +281,7 @@ public class JaxrsClient {
template.postForObject(cseUrlPrefix + "/compute/testrawjson", jsonPerson, String.class));
}
+ @SuppressWarnings({"unckecked", "rawtypes"})
private static void testValidatorAddFail(RestTemplate template, String cseUrlPrefix) {
Map<String, String> params = new HashMap<>();
params.put("a", "5");
@@ -292,10 +296,11 @@ 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(
- "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=",
- e.getErrorData().toString().substring(0,
- "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=".length()));
+ "[ConstraintViolationImpl{interpolatedMessage=",
+ data.get("message").toString().substring(0,
+ "[ConstraintViolationImpl{interpolatedMessage=".length()));
}
TestMgr.check(true, isExcep);
@@ -309,6 +314,7 @@ public class JaxrsClient {
TestMgr.check(25, result);
}
+ @SuppressWarnings({"unckecked", "rawtypes"})
private static void testValidatorSayHiFail(RestTemplate template, String cseUrlPrefix) {
boolean isExcep = false;
try {
@@ -318,10 +324,11 @@ 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(
- "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=",
- e.getErrorData().toString().substring(0,
- "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=".length()));
+ "[ConstraintViolationImpl{interpolatedMessage=",
+ data.get("message").toString().substring(0,
+ "[ConstraintViolationImpl{interpolatedMessage=".length()));
}
TestMgr.check(true, isExcep);
}
@@ -333,6 +340,7 @@ public class JaxrsClient {
TestMgr.check("world sayhi", responseEntity.getBody());
}
+ @SuppressWarnings({"unckecked", "rawtypes"})
private static void testValidatorExchangeFail(RestTemplate template, String cseUrlPrefix) {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", MediaType.APPLICATION_JSON);
@@ -351,10 +359,11 @@ 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(
- "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=",
- e.getErrorData().toString().substring(0,
- "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=".length()));
+ "[ConstraintViolationImpl{interpolatedMessage",
+ data.get("message").toString().substring(0,
+ "[ConstraintViolationImpl{interpolatedMessage".length()));
}
TestMgr.check(true, isExcep);
}
diff --git a/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml b/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml
index fcca77c..66eb476 100644
--- a/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml
+++ b/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml
@@ -197,3 +197,4 @@ definitions:
properties:
name:
type: string
+ x-java-class: "org.apache.servicecomb.demo.compute.Person"
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 a555fc9..d9bd62c 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
@@ -325,6 +325,9 @@ public class SpringmvcClient {
result = template.getForObject(cseUrlPrefix + "/query3?a=30&b=2", String.class);
TestMgr.check("Hello 302", result);
+ result = template.getForObject(cseUrlPrefix + "/query3?a=30", String.class);
+ TestMgr.check("Hello 30null", result);
+
//input values
headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java
index 8698585..f8251f9 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java
@@ -328,9 +328,6 @@ public class OperationGenerator {
case "number":
defaultValue = "0.0";
break;
- case "string":
- defaultValue = "";
- break;
case "boolean":
defaultValue = "false";
break;
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java
index 856e3f0..5c53375 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java
@@ -64,8 +64,9 @@ public class ResponsesMeta {
}
Integer statusCode = Integer.parseInt(entry.getKey());
- ResponseMeta responseMeta = responseMap.computeIfAbsent(statusCode, k -> new ResponseMeta());
- responseMeta.init(swaggerToClassGenerator, entry.getValue());
+ ResponseMeta codeMeta = new ResponseMeta();
+ codeMeta.init(swaggerToClassGenerator, entry.getValue());
+ ResponseMeta responseMeta = responseMap.put(statusCode, codeMeta);
}
if (defaultResponse == null) {
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java
index 6b03522..6955040 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.swagger.invocation.response;
import org.apache.servicecomb.swagger.converter.SwaggerToClassGenerator;
import org.apache.servicecomb.swagger.generator.core.SwaggerGenerator;
import org.apache.servicecomb.swagger.generator.core.unittest.UnitTestSwaggerUtils;
-import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
import org.junit.Assert;
import org.junit.Test;
@@ -55,10 +54,13 @@ public class TestResponsesMeta {
meta.init(swaggerToClassGenerator, operation, int.class);
ResponseMeta resp = meta.findResponseMeta(200);
- Assert.assertEquals(int.class, resp.getJavaType().getRawClass());
+ // Response is based on swagger type and is Integer type.
+ Assert.assertEquals(Integer.class, resp.getJavaType().getRawClass());
resp = meta.findResponseMeta(201);
- Assert.assertEquals(int.class, resp.getJavaType().getRawClass());
+ // Response is based on swagger type and is Integer type. For this test case there is one problem need to discuss.
+ // If SUCCESS family, do we should use OK response type?
+ Assert.assertEquals(Integer.class, resp.getJavaType().getRawClass());
resp = meta.findResponseMeta(400);
Assert.assertEquals(String.class, resp.getJavaType().getRawClass());
@@ -68,6 +70,7 @@ public class TestResponsesMeta {
Assert.assertEquals(Integer.class, resp.getHeaders().get("h1").getRawClass());
resp = meta.findResponseMeta(500);
- Assert.assertEquals(CommonExceptionData.class, resp.getJavaType().getRawClass());
+ // changed to Object for new version to keep user defined error data not lose and can be parsed.
+ Assert.assertEquals(Object.class, resp.getJavaType().getRawClass());
}
}