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/10/23 08:22:49 UTC

[incubator-servicecomb-java-chassis] 07/08: [SCB-837] make http2 production ready: add it-test and optimize detials

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 4ae248801e9e6012f34b76959b5c5bd30c8286d9
Author: heyile <he...@huawei.com>
AuthorDate: Thu Oct 18 19:07:40 2018 +0800

    [SCB-837] make http2 production ready: add it-test and optimize detials
---
 .../vertx/metrics/DefaultHttpClientMetrics.java    |  6 ------
 .../org/apache/servicecomb/it/ConsumerMain.java    | 20 ++++++++++++++++++
 .../org/apache/servicecomb/it/deploy/Deploys.java  | 24 ++++++++++++++++++++++
 .../servicecomb/it/deploy/MicroserviceDeploy.java  |  7 +++++--
 .../transport/rest/client/RestTransportClient.java |  3 +--
 .../rest/client/TransportClientConfig.java         | 13 ++++++++----
 6 files changed, 59 insertions(+), 14 deletions(-)

diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/metrics/DefaultHttpClientMetrics.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/metrics/DefaultHttpClientMetrics.java
index c184072..d8d5286 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/metrics/DefaultHttpClientMetrics.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/metrics/DefaultHttpClientMetrics.java
@@ -19,8 +19,6 @@ package org.apache.servicecomb.foundation.vertx.metrics;
 import org.apache.servicecomb.foundation.vertx.metrics.metric.DefaultClientEndpointMetric;
 import org.apache.servicecomb.foundation.vertx.metrics.metric.DefaultClientEndpointMetricManager;
 import org.apache.servicecomb.foundation.vertx.metrics.metric.DefaultHttpSocketMetric;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import io.vertx.core.http.HttpClient;
 import io.vertx.core.http.HttpClientOptions;
@@ -37,8 +35,6 @@ import io.vertx.core.spi.metrics.HttpClientMetrics;
 public class DefaultHttpClientMetrics implements
     HttpClientMetrics<DefaultHttpSocketMetric, Object, DefaultHttpSocketMetric, DefaultClientEndpointMetric, Object> {
 
-  private static final Logger LOGGER = LoggerFactory.getLogger(DefaultHttpClientMetrics.class);
-
   private final DefaultClientEndpointMetricManager clientEndpointMetricManager;
 
   private final HttpClient client;
@@ -147,8 +143,6 @@ public class DefaultHttpClientMetrics implements
     DefaultClientEndpointMetric clientEndpointMetric = this.clientEndpointMetricManager
         .getClientEndpointMetric(remoteAddress);
     if (clientEndpointMetric == null) {
-      LOGGER.warn("can not find endpointMetric directly by remoteAddress {}, try again with remoteName {}",
-          remoteAddress, remoteName);
       SocketAddressImpl address = new SocketAddressImpl(remoteAddress.port(), remoteName);
       clientEndpointMetric = this.clientEndpointMetricManager.getClientEndpointMetric(address);
     }
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
index 1004eef..25f9e95 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java
@@ -107,6 +107,8 @@ public class ConsumerMain {
 
     testSpringBoot2Standalone();
     testSpringBoot2Servlet();
+    //http2
+    testHttp2Standalone();
 
     deploys.getEdge().stop();
   }
@@ -147,6 +149,24 @@ public class ConsumerMain {
     deploys.getBaseProducer().stop();
   }
 
+  private static void testHttp2Standalone() throws Throwable {
+    deploys.getBaseHttp2Producer().ensureReady();
+
+    ITJUnitUtils.addProducer("it-producer");
+
+    runShareTestCases();
+
+    // currently not support update 3rd url, so only test once
+    ITJUnitUtils.run(Test3rdPartyInvocation.class);
+
+    //as setMaxInitialLineLength() is not work for http2, do not need
+    // ITJUnitUtils.runWithRest(TestRestServerConfig.class)
+    ITJUnitUtils.run(TestRestServerConfigEdge.class);
+
+    ITJUnitUtils.popProducer();
+    deploys.getBaseHttp2Producer().stop();
+  }
+
   private static void testSpringBoot2Standalone() throws Throwable {
     deploys.getSpringBoot2StandaloneProducer().ensureReady();
 
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/Deploys.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/Deploys.java
index fff46f5..4ba0e89 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/Deploys.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/Deploys.java
@@ -38,6 +38,8 @@ public class Deploys {
 
   private MicroserviceDeploy baseProducer;
 
+  private MicroserviceDeploy baseHttp2Producer;
+
   private MicroserviceDeploy springBoot2StandaloneProducer;
 
   private MicroserviceDeploy springBoot2ServletProducer;
@@ -60,6 +62,10 @@ public class Deploys {
     return baseProducer;
   }
 
+  public MicroserviceDeploy getBaseHttp2Producer() {
+    return baseHttp2Producer;
+  }
+
   public MicroserviceDeploy getSpringBoot2StandaloneProducer() {
     return springBoot2StandaloneProducer;
   }
@@ -75,6 +81,7 @@ public class Deploys {
     serviceCenter = new ServiceCenterDeploy();
     initEdge();
     initBaseProducer();
+    initBaseHttp2Producer();
     initSpringBoot2StandaloneProducer();
     initSpringBoot2ServletProducer();
 //    initZuul();
@@ -187,6 +194,23 @@ public class Deploys {
     baseProducer = new MicroserviceDeploy(definition);
   }
 
+
+  private void initBaseHttp2Producer() {
+    MicroserviceDeployDefinition definition = new MicroserviceDeployDefinition();
+    definition.setDeployName("baseHttp2Producer");
+    definition.setCmd("it-producer");
+    definition.setArgs(new String[] {});
+    definition.setArgs(new String[] {"-Dservicecomb.rest.address=0.0.0.0:0?protocol=http2",
+        "-Dservicecomb.highway.address=0.0.0.0:0?protocol=http2"});
+    definition.setAppId("integration-test");
+    definition.setMicroserviceName("it-producer");
+    definition.setVersion(DEFAULT_MICROSERVICE_VERSION);
+
+    initDeployDefinition(definition);
+
+    baseHttp2Producer = new MicroserviceDeploy(definition);
+  }
+
   private void initSpringBoot2ServletProducer() {
     MicroserviceDeployDefinition definition = new MicroserviceDeployDefinition();
     definition.setDeployName("springBoot2ServletProducer");
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java
index 2892c51..4561e81 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/MicroserviceDeploy.java
@@ -37,13 +37,16 @@ public class MicroserviceDeploy extends NormalDeploy {
 
   @Override
   protected String[] createCmds() {
-    return new String[] {"java", "-jar", deployDefinition.getCmd()};
+    // must set jar at the end of the cmds
+    return new String[] {"java", "-jar"};
   }
 
   @Override
   protected String[] addArgs(String[] cmds) {
+    // add jar
     return ArrayUtils.addAll(super.addArgs(cmds),
-        "-DselfController=" + RegistryUtils.getMicroserviceInstance().getInstanceId());
+            "-DselfController=" + RegistryUtils.getMicroserviceInstance().getInstanceId(),
+        deployDefinition.getCmd());
   }
 
   public void ensureReady() throws Throwable {
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClient.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClient.java
index 133c180..533179a 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClient.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClient.java
@@ -87,8 +87,7 @@ public class RestTransportClient {
 
   private static HttpClientOptions createHttp2ClientOptions() {
     HttpClientOptions httpClientOptions = new HttpClientOptions();
-    httpClientOptions.setMaxPoolSize(TransportClientConfig.getConnectionMaxPoolSize())
-        .setUseAlpn(TransportClientConfig.getUseAlpn())
+    httpClientOptions.setUseAlpn(TransportClientConfig.getUseAlpn())
         .setHttp2ClearTextUpgrade(false)
         .setProtocolVersion(HttpVersion.HTTP_2)
         .setIdleTimeout(TransportClientConfig.getHttp2ConnectionIdleTimeoutInSeconds())
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
index 1efd952..fcc6195 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/TransportClientConfig.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.transport.rest.client;
 import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.core.http.HttpClientOptions;
+import io.vertx.core.net.TCPSSLOptions;
 
 public final class TransportClientConfig {
   private static Class<? extends RestTransportClient> restTransportClientCls = RestTransportClient.class;
@@ -53,10 +54,11 @@ public final class TransportClientConfig {
 
   public static int getHttp2ConnectionIdleTimeoutInSeconds() {
     return DynamicPropertyFactory.getInstance()
-        .getIntProperty("servicecomb.rest.client.http2.idleTimeoutInSeconds", 0)
+        .getIntProperty("servicecomb.rest.client.http2.idleTimeoutInSeconds", TCPSSLOptions.DEFAULT_IDLE_TIMEOUT)
         .get();
   }
 
+
   public static boolean getUseAlpn() {
     return DynamicPropertyFactory.getInstance()
         .getBooleanProperty("servicecomb.rest.client.http2.useAlpnEnabled", true)
@@ -64,7 +66,8 @@ public final class TransportClientConfig {
   }
 
   public static int getConnectionMaxPoolSize() {
-    return DynamicPropertyFactory.getInstance().getIntProperty("servicecomb.rest.client.connection.maxPoolSize", 5)
+    return DynamicPropertyFactory.getInstance()
+        .getIntProperty("servicecomb.rest.client.connection.maxPoolSize", HttpClientOptions.DEFAULT_MAX_POOL_SIZE)
         .get();
   }
 
@@ -75,14 +78,16 @@ public final class TransportClientConfig {
   }
 
   public static boolean getConnectionKeepAlive() {
-    return DynamicPropertyFactory.getInstance().getBooleanProperty("servicecomb.rest.client.connection.keepAlive", true)
+    return DynamicPropertyFactory.getInstance()
+        .getBooleanProperty("servicecomb.rest.client.connection.keepAlive", HttpClientOptions.DEFAULT_KEEP_ALIVE)
         .get();
   }
 
 
   public static boolean getConnectionCompression() {
     return DynamicPropertyFactory.getInstance()
-        .getBooleanProperty("servicecomb.rest.client.connection.compression", false)
+        .getBooleanProperty("servicecomb.rest.client.connection.compression",
+            HttpClientOptions.DEFAULT_TRY_USE_COMPRESSION)
         .get();
   }
 }