You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/21 15:57:51 UTC

[dubbo] branch 3.0 updated: [3.0] Enhance FailbackClusterInvoker unit test (#8861)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 3590f3d  [3.0] Enhance FailbackClusterInvoker unit test (#8861)
3590f3d is described below

commit 3590f3d16fe55bd15686dd9a5d3a05d56fcd359d
Author: Wang Chengming <63...@qq.com>
AuthorDate: Tue Sep 21 23:57:43 2021 +0800

    [3.0] Enhance FailbackClusterInvoker unit test (#8861)
    
    * 1.add some FailbackClusterInvoker unit test
    2.pretty code
    
    * 1.add some FailbackClusterInvoker unit test
    2.pretty code
    
    * 1.add some FailbackClusterInvoker unit test
    2.pretty code
---
 .../cluster/support/FailbackClusterInvoker.java    | 15 ++++----
 .../support/FailbackClusterInvokerTest.java        | 40 +++++++++++++++++-----
 2 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvoker.java
index 46fdddd..e934383 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvoker.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvoker.java
@@ -80,9 +80,9 @@ public class FailbackClusterInvoker<T> extends AbstractClusterInvoker<T> {
             synchronized (this) {
                 if (failTimer == null) {
                     failTimer = new HashedWheelTimer(
-                            new NamedThreadFactory("failback-cluster-timer", true),
-                            1,
-                            TimeUnit.SECONDS, 32, failbackTasks);
+                        new NamedThreadFactory("failback-cluster-timer", true),
+                        1,
+                        TimeUnit.SECONDS, 32, failbackTasks);
                 }
             }
         }
@@ -90,7 +90,7 @@ public class FailbackClusterInvoker<T> extends AbstractClusterInvoker<T> {
         try {
             failTimer.newTimeout(retryTimerTask, RETRY_FAILED_PERIOD, TimeUnit.SECONDS);
         } catch (Throwable e) {
-            logger.error("Failback background works error,invocation->" + invocation + ", exception: " + e.getMessage());
+            logger.error("Failback background works error, invocation->" + invocation + ", exception: " + e.getMessage());
         }
     }
 
@@ -106,7 +106,7 @@ public class FailbackClusterInvoker<T> extends AbstractClusterInvoker<T> {
             return invokeWithContextAsync(invoker, invocation, consumerUrl);
         } catch (Throwable e) {
             logger.error("Failback to invoke method " + invocation.getMethodName() + ", wait for retry in background. Ignored exception: "
-                    + e.getMessage() + ", ", e);
+                + e.getMessage() + ", ", e);
             if (retries > 0) {
                 addFailed(loadbalance, invocation, invokers, invoker, consumerUrl);
             }
@@ -135,13 +135,14 @@ public class FailbackClusterInvoker<T> extends AbstractClusterInvoker<T> {
         private int retryTimes = 0;
         private URL consumerUrl;
 
-        RetryTimerTask(LoadBalance loadbalance, Invocation invocation, List<Invoker<T>> invokers, Invoker<T> lastInvoker, int retries, long tick, URL consumerUrl) {
+        RetryTimerTask(LoadBalance loadbalance, Invocation invocation, List<Invoker<T>> invokers, Invoker<T> lastInvoker,
+                       int retries, long tick, URL consumerUrl) {
             this.loadbalance = loadbalance;
             this.invocation = invocation;
             this.invokers = invokers;
             this.retries = retries;
             this.tick = tick;
-            this.lastInvoker=lastInvoker;
+            this.lastInvoker = lastInvoker;
             this.consumerUrl = consumerUrl;
         }
 
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
index 032c1c7..64b3086 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
@@ -54,7 +54,7 @@ import static org.mockito.Mockito.mock;
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
 public class FailbackClusterInvokerTest {
 
-    List<Invoker<FailbackClusterInvokerTest>> invokers = new ArrayList<Invoker<FailbackClusterInvokerTest>>();
+    List<Invoker<FailbackClusterInvokerTest>> invokers = new ArrayList<>();
     URL url = URL.valueOf("test://test:11/test?retries=2&failbacktasks=2");
     Invoker<FailbackClusterInvokerTest> invoker = mock(Invoker.class);
     RpcInvocation invocation = new RpcInvocation();
@@ -101,11 +101,36 @@ public class FailbackClusterInvokerTest {
     }
 
     @Test
+    public void testInvokeWithIllegalRetriesParam() {
+        URL url = URL.valueOf("test://test:11/test?retries=-1&failbacktasks=2");
+        Directory<FailbackClusterInvokerTest> dic = mock(Directory.class);
+        given(dic.getUrl()).willReturn(url);
+        given(dic.getConsumerUrl()).willReturn(url);
+        given(dic.getInterface()).willReturn(FailbackClusterInvokerTest.class);
+        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<>(dic);
+        invoker.invoke(invocation);
+        Assertions.assertNull(RpcContext.getServiceContext().getInvoker());
+        DubboAppender.clear();
+    }
+
+    @Test
+    public void testInvokeWithIllegalFailbacktasksParam() {
+        URL url = URL.valueOf("test://test:11/test?retries=2&failbacktasks=-1");
+        Directory<FailbackClusterInvokerTest> dic = mock(Directory.class);
+        given(dic.getUrl()).willReturn(url);
+        given(dic.getConsumerUrl()).willReturn(url);
+        given(dic.getInterface()).willReturn(FailbackClusterInvokerTest.class);
+        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<>(dic);
+        invoker.invoke(invocation);
+        Assertions.assertNull(RpcContext.getServiceContext().getInvoker());
+        DubboAppender.clear();
+    }
+
+    @Test
     @Order(1)
     public void testInvokeException() {
         resetInvokerToException();
-        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<FailbackClusterInvokerTest>(
-                dic);
+        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<>(dic);
         invoker.invoke(invocation);
         Assertions.assertNull(RpcContext.getServiceContext().getInvoker());
         DubboAppender.clear();
@@ -117,8 +142,7 @@ public class FailbackClusterInvokerTest {
 
         resetInvokerToNoException();
 
-        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<FailbackClusterInvokerTest>(
-                dic);
+        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<>(dic);
         Result ret = invoker.invoke(invocation);
         Assertions.assertSame(result, ret);
     }
@@ -139,8 +163,7 @@ public class FailbackClusterInvokerTest {
 
         resetInvokerToNoException();
 
-        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<FailbackClusterInvokerTest>(
-                dic);
+        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<>(dic);
         LogUtil.start();
         DubboAppender.clear();
         invoker.invoke(invocation);
@@ -156,8 +179,7 @@ public class FailbackClusterInvokerTest {
 
         resetInvokerToException();
 
-        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<FailbackClusterInvokerTest>(
-                dic);
+        FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<>(dic);
         LogUtil.start();
         DubboAppender.clear();
         invoker.invoke(invocation);