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