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/07 12:48:25 UTC

[incubator-servicecomb-java-chassis] 03/03: [SCB-799] fix ut problem

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 76adae9f783f83318fed16372e13ec8819947ea8
Author: wujimin <wu...@huawei.com>
AuthorDate: Fri Aug 3 15:01:28 2018 +0800

    [SCB-799] fix ut problem
---
 .../vertx/client/TestClientPoolManager.java        |  9 ++-
 .../client/http/TestHttpClientPoolFactory.java     |  7 +-
 .../client/tcp/TestTcpClientConnectionPool.java    |  4 +-
 .../servicecomb/faultinjection/AbortFaultTest.java | 66 +++++++++++------
 .../servicecomb/faultinjection/DelayFaultTest.java | 85 ++++++++++++++--------
 .../java/org/apache/servicecomb/qps/Config.java    |  4 +-
 .../org/apache/servicecomb/qps/TestConfig.java     |  2 +
 7 files changed, 116 insertions(+), 61 deletions(-)

diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/TestClientPoolManager.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/TestClientPoolManager.java
index 4548e5b..6709ca5 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/TestClientPoolManager.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/TestClientPoolManager.java
@@ -51,6 +51,7 @@ public class TestClientPoolManager {
 
   Map<String, Object> contextMap = new HashMap<>();
 
+  @Mocked
   Context context;
 
   @Before
@@ -58,7 +59,7 @@ public class TestClientPoolManager {
     poolMgr = new ClientPoolManager<>(vertx, factory);
     id = Deencapsulation.getField(poolMgr, "id");
     pools = Deencapsulation.getField(poolMgr, "pools");
-    context = new MockUp<Context>() {
+    new MockUp<Context>(context) {
       @Mock
       void put(String key, Object value) {
         contextMap.put(key, value);
@@ -79,7 +80,7 @@ public class TestClientPoolManager {
       boolean isEventLoopContext() {
         return true;
       }
-    }.getMockInstance();
+    };
   }
 
   @Test
@@ -198,7 +199,7 @@ public class TestClientPoolManager {
   }
 
   @Test
-  public void findByContext_otherVertx(@Mocked Vertx otherVertx, @Mocked Context otherContext) {
+  public void findByContext_otherVertx(@Mocked VertxImpl otherVertx, @Mocked Context otherContext) {
     HttpClientWithContext pool = new HttpClientWithContext(null, null);
     pools.add(pool);
 
@@ -215,7 +216,7 @@ public class TestClientPoolManager {
   }
 
   @Test
-  public void findByContext_woker(@Mocked Context workerContext) {
+  public void findByContext_worker(@Mocked Context workerContext) {
     HttpClientWithContext pool = new HttpClientWithContext(null, null);
     pools.add(pool);
 
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/http/TestHttpClientPoolFactory.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/http/TestHttpClientPoolFactory.java
index 08b9a32..669d1da 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/http/TestHttpClientPoolFactory.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/http/TestHttpClientPoolFactory.java
@@ -19,11 +19,11 @@ package org.apache.servicecomb.foundation.vertx.client.http;
 import org.junit.Assert;
 import org.junit.Test;
 
-import io.vertx.core.Context;
-import io.vertx.core.Vertx;
 import io.vertx.core.http.HttpClient;
 import io.vertx.core.http.HttpClientOptions;
+import io.vertx.core.impl.ContextImpl;
 import io.vertx.core.impl.VertxImpl;
+import io.vertx.core.impl.VertxInternal;
 import mockit.Expectations;
 import mockit.Mocked;
 
@@ -33,7 +33,8 @@ public class TestHttpClientPoolFactory {
   HttpClientPoolFactory factory = new HttpClientPoolFactory(httpClientOptions);
 
   @Test
-  public void createClientPool(@Mocked Vertx vertx, @Mocked Context context, @Mocked HttpClient httpClient) {
+  public void createClientPool(@Mocked VertxInternal vertx, @Mocked ContextImpl context,
+      @Mocked HttpClient httpClient) {
     new Expectations(VertxImpl.class) {
       {
         context.owner();
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/tcp/TestTcpClientConnectionPool.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/tcp/TestTcpClientConnectionPool.java
index b81e2c4..2ca9736 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/tcp/TestTcpClientConnectionPool.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/client/tcp/TestTcpClientConnectionPool.java
@@ -21,12 +21,12 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import io.vertx.core.Context;
+import io.vertx.core.impl.ContextImpl;
 import mockit.Mocked;
 
 public class TestTcpClientConnectionPool {
   @Mocked
-  Context context;
+  ContextImpl context;
 
   @Mocked
   NetClientWrapper netClientWrapper;
diff --git a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java
index ec4f3c1..851fb91 100644
--- a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java
+++ b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/AbortFaultTest.java
@@ -18,7 +18,10 @@
 package org.apache.servicecomb.faultinjection;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 import javax.xml.ws.Holder;
@@ -36,12 +39,19 @@ import org.mockito.Mockito;
 import com.netflix.config.DynamicProperty;
 
 import io.vertx.core.Vertx;
+import mockit.Deencapsulation;
 
 public class AbortFaultTest {
   private Invocation invocation;
 
+  @SuppressWarnings("unchecked")
   @Before
   public void before() {
+    ArchaiusUtils.resetConfig();
+    ((Map<String, String>) Deencapsulation.getField(FaultInjectionConfig.class, "cfgCallback")).clear();
+    ((Map<String, AtomicLong>) Deencapsulation.getField(FaultInjectionUtil.class, "requestCount")).clear();
+    ((Map<String, AtomicInteger>) Deencapsulation.getField(FaultInjectionUtil.class, "configCenterValue")).clear();
+
     invocation = Mockito.mock(Invocation.class);
     Transport transport = Mockito.mock(Transport.class);
     Mockito.when(invocation.getMicroserviceQualifiedName()).thenReturn("MicroserviceQualifiedName12");
@@ -54,17 +64,22 @@ public class AbortFaultTest {
 
   @After
   public void after() {
-    System.getProperties()
-        .remove("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent");
-    System.getProperties()
-        .remove("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus");
     ArchaiusUtils.resetConfig();
   }
 
   @Test
   public void injectFaultError() {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus", "421");
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "100");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus", "421");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "100");
+
+    assertEquals("421", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus")
+        .getString());
+    assertEquals("100", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
+        .getString());
 
     AbortFault abortFault = new AbortFault();
     FaultParam faultParam = new FaultParam(1);
@@ -75,12 +90,6 @@ public class AbortFaultTest {
     abortFault.injectFault(invocation, faultParam, response -> resultHolder.value = response.getResult());
 
     AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
-    assertEquals("421", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus")
-        .getString());
-    assertEquals("100", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
-        .getString());
     assertEquals(1, count.get());
     assertEquals(421, resultHolder.value.getStatusCode());
     assertEquals("aborted by fault inject", resultHolder.value.getReasonPhrase());
@@ -89,8 +98,16 @@ public class AbortFaultTest {
 
   @Test
   public void injectFaultNoError() {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus", "421");
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "0");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus", "421");
+    ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "0");
+
+    assertEquals("421", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus")
+        .getString());
+    assertEquals("0", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
+        .getString());
 
     AbortFault abortFault = new AbortFault();
     FaultParam faultParam = new FaultParam(1);
@@ -101,18 +118,19 @@ public class AbortFaultTest {
     abortFault.injectFault(invocation, faultParam, response -> resultHolder.value = response.getResult());
 
     AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
-    assertEquals("421", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus")
-        .getString());
-    assertEquals("0", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
-        .getString());
     assertEquals(1, count.get());
     assertEquals("success", resultHolder.value);
   }
 
   @Test
   public void injectFaultNoPercentageConfig() {
+    ArchaiusUtils
+        .updateProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", null);
+
+    assertNull(DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
+        .getString());
+
     AbortFault abortFault = new AbortFault();
     FaultParam faultParam = new FaultParam(1);
     Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
@@ -128,7 +146,13 @@ public class AbortFaultTest {
 
   @Test
   public void injectFaultNoErrorCodeConfig() {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "10");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent", "10");
+
+    assertEquals("10", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
+        .getString());
+
     AbortFault abortFault = new AbortFault();
     FaultParam faultParam = new FaultParam(10);
     Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
diff --git a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java
index 23521df..71c1782 100644
--- a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java
+++ b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/DelayFaultTest.java
@@ -18,9 +18,12 @@
 package org.apache.servicecomb.faultinjection;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 
+import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 import javax.xml.ws.Holder;
@@ -37,12 +40,19 @@ import org.mockito.Mockito;
 import com.netflix.config.DynamicProperty;
 
 import io.vertx.core.Vertx;
+import mockit.Deencapsulation;
 
 public class DelayFaultTest {
   private Invocation invocation;
 
+  @SuppressWarnings("unchecked")
   @Before
   public void before() {
+    ArchaiusUtils.resetConfig();
+    ((Map<String, String>) Deencapsulation.getField(FaultInjectionConfig.class, "cfgCallback")).clear();
+    ((Map<String, AtomicLong>) Deencapsulation.getField(FaultInjectionUtil.class, "requestCount")).clear();
+    ((Map<String, AtomicInteger>) Deencapsulation.getField(FaultInjectionUtil.class, "configCenterValue")).clear();
+
     invocation = Mockito.mock(Invocation.class);
     Transport transport = Mockito.mock(Transport.class);
     Mockito.when(invocation.getMicroserviceQualifiedName()).thenReturn("MicroserviceQualifiedName12");
@@ -55,17 +65,22 @@ public class DelayFaultTest {
 
   @After
   public void after() {
-    System.getProperties()
-        .remove("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay");
-    System.getProperties()
-        .remove("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent");
     ArchaiusUtils.resetConfig();
   }
 
   @Test
   public void injectFaultVertxDelay() throws InterruptedException {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "100");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "100");
+
+    assertEquals("10", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
+        .getString());
+    assertEquals("100", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
+        .getString());
 
     DelayFault delayFault = new DelayFault();
     FaultParam faultParam = new FaultParam(1);
@@ -81,20 +96,23 @@ public class DelayFaultTest {
 
     latch.await(10, TimeUnit.SECONDS);
     AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
-    assertEquals("10", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
-        .getString());
-    assertEquals("100", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
     assertEquals(1, count.get());
     assertEquals("success", resultHolder.value);
   }
 
   @Test
   public void injectFaultSystemDelay() throws InterruptedException {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "100");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "100");
+
+    assertEquals("10", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
+        .getString());
+    assertEquals("100", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
+        .getString());
 
     DelayFault delayFault = new DelayFault();
     FaultParam faultParam = new FaultParam(1);
@@ -108,20 +126,22 @@ public class DelayFaultTest {
 
     latch.await(10, TimeUnit.SECONDS);
     AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
-    assertEquals("10", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
-        .getString());
-    assertEquals("100", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
     assertEquals(1, count.get());
     assertEquals("success", resultHolder.value);
   }
 
   @Test
   public void injectFaultNotDelay() throws InterruptedException {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "0");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay", "10");
+    ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "0");
+
+    assertEquals("10", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
+        .getString());
+    assertEquals("0", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
+        .getString());
 
     DelayFault delayFault = new DelayFault();
     FaultParam faultParam = new FaultParam(1);
@@ -137,18 +157,19 @@ public class DelayFaultTest {
 
     latch.await(3, TimeUnit.SECONDS);
     AtomicLong count = FaultInjectionUtil.getOperMetTotalReq("restMicroserviceQualifiedName12");
-    assertEquals("10", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
-        .getString());
-    assertEquals("0", DynamicProperty
-        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
     assertEquals(1, count.get());
     assertEquals("success", resultHolder.value);
   }
 
   @Test
   public void injectFaultNoPercentageConfig() {
+    ArchaiusUtils
+        .updateProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", null);
+
+    assertNull(DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
+        .getString());
+
     DelayFault delayFault = new DelayFault();
     FaultParam faultParam = new FaultParam(1);
     Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
@@ -164,7 +185,13 @@ public class DelayFaultTest {
 
   @Test
   public void injectFaultNoDelayMsConfig() {
-    System.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "10");
+    ArchaiusUtils
+        .setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent", "10");
+
+    assertEquals("10", DynamicProperty
+        .getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
+        .getString());
+
     DelayFault delayFault = new DelayFault();
     FaultParam faultParam = new FaultParam(10);
     Vertx vertx = VertxUtils.getOrCreateVertxByName("faultinjectionTest", null);
diff --git a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
index 2bc37ac..2c6d69a 100644
--- a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
+++ b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
@@ -37,7 +37,7 @@ public final class Config {
 
   public static final String PROVIDER_ENABLED = "servicecomb.flowcontrol.Provider.qps.enabled";
 
-  public static final Config INSTANCE = new Config();
+  public static Config INSTANCE = new Config();
 
   private final DynamicBooleanProperty consumerEanbled =
       DynamicPropertyFactory.getInstance().getBooleanProperty(CONSUMER_ENABLED, true);
@@ -45,7 +45,7 @@ public final class Config {
   private final DynamicBooleanProperty providerEanbled =
       DynamicPropertyFactory.getInstance().getBooleanProperty(PROVIDER_ENABLED, true);
 
-  private Config() {
+  public Config() {
     consumerEanbled.addCallback(() -> {
       boolean newValue = consumerEanbled.get();
       LOGGER.info("{} changed from {} to {}", CONSUMER_ENABLED, consumerEanbled, newValue);
diff --git a/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java b/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java
index 15d1e29..3f1a7f6 100644
--- a/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java
+++ b/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java
@@ -40,6 +40,8 @@ public class TestConfig {
 
   @Test
   public void testEnabled() {
+    Config.INSTANCE = new Config();
+
     Assert.assertEquals(true, Config.INSTANCE.isProviderEnabled());
     ArchaiusUtils.updateProperty(Config.PROVIDER_ENABLED, false);
     Assert.assertEquals(false, Config.INSTANCE.isProviderEnabled());