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

Reply via email to