You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/01/08 07:34:26 UTC

[incubator-servicecomb-java-chassis] 03/03: [SCB-180] Hystrixcommand setter not set by dynamic configuration

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

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 485478edf7a24dc420cee2f95134aefb4aa70420
Author: donglzh168 <14...@qq.com>
AuthorDate: Sat Jan 6 17:14:29 2018 +0800

    [SCB-180] Hystrixcommand setter not set by dynamic configuration
---
 .../bizkeeper/TestBizkeeperHandler.java            | 60 +++++++++++++++++++++-
 .../servicecomb/bizkeeper/TestConfiguration.java   |  7 +++
 .../TestHystrixPropertiesStrategyExt.java          |  2 +
 3 files changed, 68 insertions(+), 1 deletion(-)

diff --git a/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestBizkeeperHandler.java b/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestBizkeeperHandler.java
index bf1c1ea..7b7a39a 100644
--- a/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestBizkeeperHandler.java
+++ b/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestBizkeeperHandler.java
@@ -22,6 +22,8 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
 
 import com.netflix.hystrix.HystrixCommandProperties;
 import com.netflix.hystrix.HystrixObservableCommand;
@@ -30,6 +32,7 @@ import com.netflix.hystrix.strategy.HystrixPlugins;
 import io.servicecomb.core.Invocation;
 import io.servicecomb.core.definition.OperationMeta;
 import io.servicecomb.swagger.invocation.AsyncResponse;
+import io.servicecomb.swagger.invocation.InvocationType;
 
 public class TestBizkeeperHandler extends BizkeeperHandler {
 
@@ -145,7 +148,62 @@ public class TestBizkeeperHandler extends BizkeeperHandler {
     System.setProperty("cse.fallbackpolicy.Group_Name.testHandleForceReturnnull.policy", "returnnull");
     bizkeeperHandler.handle(invocation, f -> {
       Assert.assertTrue(f.isSuccessed());
-      Assert.assertEquals(null, f.getResult());
+      Assert.assertNull(f.getResult());
+    });
+  }
+
+  @Test
+  public void testHandleInError() throws Exception {
+    Mockito.when(invocation.getMicroserviceName()).thenReturn("testHandleInError");
+    Mockito.when(invocation.getOperationMeta()).thenReturn(Mockito.mock(OperationMeta.class));
+    Mockito.when(invocation.getOperationMeta().getMicroserviceQualifiedName())
+        .thenReturn("testHandleInError");
+    FallbackPolicy policy = Mockito.mock(FallbackPolicy.class);
+    Mockito.when(policy.name()).thenReturn("throwException");
+    Mockito.when(policy.getFallbackResponse(Mockito.any(Invocation.class))).thenThrow(new RuntimeException());
+    FallbackPolicyManager.addPolicy(policy);
+    System.setProperty("cse.fallbackpolicy.groupname.testHandleInError.policy", "throwException");
+    Mockito.doAnswer(new Answer<Void>() {
+      @Override
+      public Void answer(InvocationOnMock invocation) {
+        AsyncResponse asyncRsp = invocation.getArgumentAt(0, AsyncResponse.class);
+        asyncRsp.fail(InvocationType.CONSUMER, new Exception("testHandleInError"));
+        return null;
+      }
+    }).when(invocation).next(Mockito.any(AsyncResponse.class));;
+    bizkeeperHandler.handle(invocation, f -> {
+      Assert.assertTrue(f.isFailed());
+    });
+  }
+
+  @Test
+  public void testHandlNextException() throws Exception {
+    Mockito.when(invocation.getMicroserviceName()).thenReturn("testHandlNextException");
+    Mockito.when(invocation.getOperationMeta()).thenReturn(Mockito.mock(OperationMeta.class));
+    Mockito.when(invocation.getOperationMeta().getMicroserviceQualifiedName())
+        .thenReturn("testHandlNextException");
+    Mockito.doThrow(new Exception("testHandlNextException")).when(invocation).next(Mockito.any(AsyncResponse.class));
+    bizkeeperHandler.handle(invocation, f -> {
+      Assert.assertTrue(f.isFailed());
+    });
+  }
+
+  @Test
+  public void testHandleSuccess() throws Exception {
+    Mockito.when(invocation.getMicroserviceName()).thenReturn("testHandleSuccess");
+    Mockito.when(invocation.getOperationMeta()).thenReturn(Mockito.mock(OperationMeta.class));
+    Mockito.when(invocation.getOperationMeta().getMicroserviceQualifiedName())
+        .thenReturn("testHandleSuccess");
+    Mockito.doAnswer(new Answer<Void>() {
+      @Override
+      public Void answer(InvocationOnMock invocation) {
+        AsyncResponse asyncRsp = invocation.getArgumentAt(0, AsyncResponse.class);
+        asyncRsp.success("");
+        return null;
+      }
+    }).when(invocation).next(Mockito.any(AsyncResponse.class));;
+    bizkeeperHandler.handle(invocation, f -> {
+      Assert.assertTrue(f.isSuccessed());
     });
   }
 }
diff --git a/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestConfiguration.java b/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestConfiguration.java
index e450614..aba9084 100644
--- a/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestConfiguration.java
+++ b/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestConfiguration.java
@@ -54,5 +54,12 @@ public class TestConfiguration {
     String str = c.getFallbackPolicyPolicy("groupname", test2, "testqualify");
     // no need to give default value now
     assertEquals(null, str);
+
+    assertFalse(c.isCircuitBreakerForceOpen("groupname", test2, "testqualify"));
+    assertFalse(c.isCircuitBreakerForceClosed("groupname", test2, "testqualify"));
+    assertEquals(15000, c.getCircuitBreakerSleepWindowInMilliseconds("groupname", test2, "testqualify"));
+    assertEquals(20, c.getCircuitBreakerRequestVolumeThreshold("groupname", test2, "testqualify"));
+    assertEquals(50, c.getCircuitBreakerErrorThresholdPercentage("groupname", test2, "testqualify"));
+    assertTrue(c.isFallbackEnabled("groupname", test2, "testqualify"));
   }
 }
diff --git a/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestHystrixPropertiesStrategyExt.java b/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestHystrixPropertiesStrategyExt.java
index b0cd624..1244ac1 100644
--- a/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestHystrixPropertiesStrategyExt.java
+++ b/handlers/handler-bizkeeper/src/test/java/io/servicecomb/bizkeeper/TestHystrixPropertiesStrategyExt.java
@@ -78,5 +78,7 @@ public class TestHystrixPropertiesStrategyExt {
     Assert.assertFalse(commandPro.executionTimeoutEnabled().get());
     Assert.assertEquals(Integer.valueOf(10), commandPro.fallbackIsolationSemaphoreMaxConcurrentRequests().get());
     Assert.assertTrue(commandPro.fallbackEnabled().get());
+    Assert.assertEquals(Integer.valueOf(100), commandPro.metricsRollingPercentileBucketSize().get());
+    Assert.assertFalse(commandPro.metricsRollingPercentileEnabled().get());
   }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.