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
The following commit(s) were added to refs/heads/master by this push:
new 1de639651 improve/refactor test case structure (#4202)
1de639651 is described below
commit 1de639651284a73ab8730860c8477710576f9521
Author: liubao68 <[email protected]>
AuthorDate: Fri Jan 26 11:44:48 2024 +0800
improve/refactor test case structure (#4202)
---
.../servicecomb/demo/pojo/client/PojoClient.java | 133 --------------
.../servicecomb/demo/pojo/client/TestTestImpl.java | 196 +++++++++++++++++++++
.../servicecomb/demo/pojo/server/TestImpl.java | 5 +
.../org/apache/servicecomb/demo/server/Test.java | 2 +
4 files changed, 203 insertions(+), 133 deletions(-)
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 01be34c2a..03fafced0 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
@@ -18,7 +18,6 @@
package org.apache.servicecomb.demo.pojo.client;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -33,7 +32,6 @@ import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
import org.apache.servicecomb.demo.DemoConst;
import org.apache.servicecomb.demo.TestMgr;
import org.apache.servicecomb.demo.server.Test;
-import org.apache.servicecomb.demo.server.TestRequest;
import org.apache.servicecomb.demo.server.User;
import org.apache.servicecomb.demo.smartcare.Application;
import org.apache.servicecomb.demo.smartcare.Group;
@@ -43,7 +41,6 @@ import
org.apache.servicecomb.foundation.vertx.client.http.HttpClients;
import org.apache.servicecomb.provider.pojo.RpcReference;
import org.apache.servicecomb.swagger.invocation.context.ContextUtils;
import org.apache.servicecomb.swagger.invocation.context.InvocationContext;
-import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.WebApplicationType;
@@ -56,8 +53,6 @@ import org.springframework.context.annotation.ImportResource;
public class PojoClient {
private static final Logger LOGGER =
LoggerFactory.getLogger(PojoClient.class);
- public static final byte[] buffer = new byte[1024];
-
// reference a not exist a microservice, and never use it
// this should not cause problems
@RpcReference(microserviceName = "notExist")
@@ -70,10 +65,6 @@ public class PojoClient {
private static SmartCare smartcare;
- static {
- Arrays.fill(buffer, (byte) 1);
- }
-
public static void setTestFromXml(Test testFromXml) {
PojoClient.testFromXml = testFromXml;
}
@@ -120,14 +111,6 @@ public class PojoClient {
testContextClassLoaderIsNull();
testNull(testFromXml);
- testNull(test);
-
- // This test case shows destroy of WeightedResponseTimeRule timer task.
after test finished will not print:
- // "Weight adjusting job started" and thread
"NFLoadBalancer-serverWeightTimer-unknown" destroyed.
-
InMemoryDynamicPropertiesSource.update("servicecomb.loadbalance.strategy.name",
"WeightedResponse");
- testStringArray(test);
-
InMemoryDynamicPropertiesSource.update("servicecomb.loadbalance.strategy.name",
"RoundRobin");
- testStringArray(test);
boolean checkerDestroyed = true;
// Timer cancel may not destroy thread very fast so check for 3 times.
@@ -143,28 +126,13 @@ public class PojoClient {
}
TestMgr.check(checkerDestroyed, true);
- testChinese(test);
- testStringHaveSpace(test);
- testWrapParam(test);
- testSplitParam(test);
- testInputArray(test);
-
- testException(test);
-
testSmartCare(smartcare);
testCommonInvoke(transport);
if ("rest".equals(transport)) {
testTraceIdOnNotSetBefore();
- testNullRest(test);
- testExceptionRest(test);
- testEmptyRest(test);
- } else if ("highway".equals(transport)) {
- testNullHighway(test);
- testEmptyHighway(test);
}
-
testTraceIdOnContextContainsTraceId();
}
}
@@ -216,58 +184,6 @@ public class PojoClient {
smartCare.delApplication("app0"));
}
- private static void testExceptionRest(Test test) {
- 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 testException(Test test) {
- 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) {
- String result = test.addString(new String[] {"a", "b"});
- LOGGER.info("input array result:{}", result);
- TestMgr.check("[a, b]", result);
- }
-
- private static void testSplitParam(Test test) {
- User result = test.splitParam(1, new User());
- LOGGER.info("split param result:{}", result);
- TestMgr.check("User [name=nameA, users count:0, age=100, index=1]",
result);
- }
-
@SuppressWarnings("rawtypes")
private static void testCommonInvoke(String transport) {
Map<String, Object> arguments = new HashMap<>();
@@ -293,58 +209,9 @@ public class PojoClient {
TestMgr.check("User [name=nameA, users count:0, age=100, index=3]",
result);
}
- private static void testEmptyHighway(Test test) {
- TestMgr.check("code is ''", test.getTestString(""));
- }
-
- private static void testEmptyRest(Test test) {
- TestMgr.check("code is ''", test.getTestString(""));
- }
-
- private static void testNullRest(Test test) {
- TestMgr.check(null, test.wrapParam(null));
- }
-
- private static void testNullHighway(Test test) {
- TestMgr.check("nameA", test.wrapParam(null).getName());
- }
-
private static void testNull(Test test) {
TestMgr.check("code is 'null'", test.getTestString(null));
TestMgr.check(null, test.postTestStatic(2));
TestMgr.check(null, test.patchTestStatic(2));
}
-
- private static void testChinese(Test test) {
- TestMgr.check("code is '测试'", test.getTestString("测试"));
-
- User user = new User();
- user.setName("名字");
- User result = test.splitParam(1, user);
- TestMgr.check("名字, users count:0", result.getName());
- }
-
- private static void testStringHaveSpace(Test test) {
- TestMgr.check("code is 'a b'", test.getTestString("a b"));
- }
-
- private static void testStringArray(Test test) {
- // TestMgr.check("arr is '[a, , b]'", test.testStringArray(new
String[] {"a", null, "b"}));
- TestMgr.check("arr is '[a, b]'", test.testStringArray(new String[] {"a",
"b"}));
- }
-
- private static void testWrapParam(Test test) {
- User user = new User();
-
- TestRequest request = new TestRequest();
- request.setUser(user);
- request.setIndex(0);
- request.setData(buffer);
- request.getUsers().add(user);
-
- User result = test.wrapParam(request);
- LOGGER.info("wrap param result:{}", result);
-
- TestMgr.check("User [name=nameA, users count:1, age=100, index=0]",
result);
- }
}
diff --git
a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestTestImpl.java
b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestTestImpl.java
new file mode 100644
index 000000000..8b8fabde0
--- /dev/null
+++
b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestTestImpl.java
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.demo.pojo.client;
+
+import java.util.Arrays;
+
+import org.apache.servicecomb.config.InMemoryDynamicPropertiesSource;
+import org.apache.servicecomb.demo.CategorizedTestCase;
+import org.apache.servicecomb.demo.TestMgr;
+import org.apache.servicecomb.demo.server.Test;
+import org.apache.servicecomb.demo.server.TestRequest;
+import org.apache.servicecomb.demo.server.User;
+import org.apache.servicecomb.provider.pojo.RpcReference;
+import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TestTestImpl implements CategorizedTestCase {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(TestTestImpl.class);
+
+ private static final byte[] buffer = new byte[1024];
+
+ static {
+ Arrays.fill(buffer, (byte) 1);
+ }
+
+ @RpcReference(microserviceName = "pojo", schemaId = "server")
+ private Test test;
+
+ @Override
+ public void testAllTransport() throws Exception {
+ testNull(test);
+
+ // This test case shows destroy of WeightedResponseTimeRule timer task.
after test finished will not print:
+ // "Weight adjusting job started" and thread
"NFLoadBalancer-serverWeightTimer-unknown" destroyed.
+
InMemoryDynamicPropertiesSource.update("servicecomb.loadbalance.strategy.name",
"WeightedResponse");
+ testStringArray(test);
+
InMemoryDynamicPropertiesSource.update("servicecomb.loadbalance.strategy.name",
"RoundRobin");
+ testStringArray(test);
+
+ testChinese(test);
+ testStringHaveSpace(test);
+ testWrapParam(test);
+
+ testSplitParam(test);
+ testInputArray(test);
+
+ testException(test);
+
+ testIntArray(test);
+ }
+
+ @Override
+ public void testRestTransport() throws Exception {
+ testNullRest(test);
+ testExceptionRest(test);
+ testEmptyRest(test);
+ }
+
+ @Override
+ public void testHighwayTransport() throws Exception {
+ testNullHighway(test);
+ testEmptyHighway(test);
+ }
+
+ private static void testIntArray(Test test) {
+ int[] request = new int[] {5, 11, 4};
+ int[] result = test.testIntArray(request);
+ TestMgr.check(request.length, result.length);
+ TestMgr.check(request[1], result[1]);
+ }
+
+ private static void testEmptyHighway(Test test) {
+ TestMgr.check("code is ''", test.getTestString(""));
+ }
+
+ private static void testEmptyRest(Test test) {
+ TestMgr.check("code is ''", test.getTestString(""));
+ }
+
+ private static void testNullRest(Test test) {
+ TestMgr.check(null, test.wrapParam(null));
+ }
+
+ private static void testNullHighway(Test test) {
+ TestMgr.check("nameA", test.wrapParam(null).getName());
+ }
+
+ private static void testNull(Test test) {
+ TestMgr.check("code is 'null'", test.getTestString(null));
+ TestMgr.check(null, test.postTestStatic(2));
+ TestMgr.check(null, test.patchTestStatic(2));
+ }
+
+ private static void testChinese(Test test) {
+ TestMgr.check("code is '测试'", test.getTestString("测试"));
+
+ User user = new User();
+ user.setName("名字");
+ User result = test.splitParam(1, user);
+ TestMgr.check("名字, users count:0", result.getName());
+ }
+
+ private static void testStringHaveSpace(Test test) {
+ TestMgr.check("code is 'a b'", test.getTestString("a b"));
+ }
+
+ private static void testStringArray(Test test) {
+ // TestMgr.check("arr is '[a, , b]'", test.testStringArray(new
String[] {"a", null, "b"}));
+ TestMgr.check("arr is '[a, b]'", test.testStringArray(new String[] {"a",
"b"}));
+ }
+
+ private static void testWrapParam(Test test) {
+ User user = new User();
+
+ TestRequest request = new TestRequest();
+ request.setUser(user);
+ request.setIndex(0);
+ request.setData(buffer);
+ request.getUsers().add(user);
+
+ User result = test.wrapParam(request);
+ LOGGER.info("wrap param result:{}", result);
+
+ TestMgr.check("User [name=nameA, users count:1, age=100, index=0]",
result);
+ }
+
+
+ private static void testExceptionRest(Test test) {
+ 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 testException(Test test) {
+ 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) {
+ String result = test.addString(new String[] {"a", "b"});
+ LOGGER.info("input array result:{}", result);
+ TestMgr.check("[a, b]", result);
+ }
+
+ private static void testSplitParam(Test test) {
+ User result = test.splitParam(1, new User());
+ LOGGER.info("split param result:{}", result);
+ TestMgr.check("User [name=nameA, users count:0, age=100, index=1]",
result);
+ }
+}
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 87ffd0e7c..230dfd804 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
@@ -105,4 +105,9 @@ public class TestImpl implements Test {
public String testTraceId() {
return
ContextUtils.getInvocationContext().getContext(CoreConst.TRACE_ID_NAME);
}
+
+ @Override
+ public int[] testIntArray(int[] request) {
+ return request;
+ }
}
diff --git
a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/Test.java
b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/Test.java
index 0afa62a64..0369d5760 100644
---
a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/Test.java
+++
b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/server/Test.java
@@ -35,4 +35,6 @@ public interface Test {
String addString(String[] strArr);
String testTraceId();
+
+ int[] testIntArray(int[] request);
}