Merge branch 'lalib-gh-1720'
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2013-2015 the original author or authors.
|
||||
* Copyright 2013-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -33,6 +33,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static com.netflix.hystrix.HystrixCommandProperties.ExecutionIsolationStrategy.SEMAPHORE;
|
||||
|
||||
@@ -40,6 +41,7 @@ import static com.netflix.hystrix.HystrixCommandProperties.ExecutionIsolationStr
|
||||
* @author Spencer Gibb
|
||||
* @author Dave Syer
|
||||
* @author Mathias Düsterhöft
|
||||
* @author Bilal Alp
|
||||
*/
|
||||
@Data
|
||||
@ConfigurationProperties("zuul")
|
||||
@@ -326,6 +328,14 @@ public class ZuulProperties {
|
||||
* The maximum number of connections that can be used by a single route.
|
||||
*/
|
||||
private int maxPerRouteConnections = 20;
|
||||
/**
|
||||
* The lifetime for the connection pool.
|
||||
*/
|
||||
private long timeToLive = -1;
|
||||
/**
|
||||
* The time unit for timeToLive.
|
||||
*/
|
||||
private TimeUnit timeUnit = TimeUnit.MILLISECONDS;
|
||||
}
|
||||
|
||||
@Data
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2013-2015 the original author or authors.
|
||||
* Copyright 2013-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -92,6 +92,7 @@ import static org.springframework.cloud.netflix.zuul.filters.support.FilterConst
|
||||
*
|
||||
* @author Spencer Gibb
|
||||
* @author Dave Syer
|
||||
* @author Bilal Alp
|
||||
*/
|
||||
public class SimpleHostRoutingFilter extends ZuulFilter {
|
||||
|
||||
@@ -235,7 +236,8 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
|
||||
}
|
||||
final Registry<ConnectionSocketFactory> registry = registryBuilder.build();
|
||||
|
||||
this.connectionManager = new PoolingHttpClientConnectionManager(registry);
|
||||
this.connectionManager = new PoolingHttpClientConnectionManager(registry, null, null, null,
|
||||
hostProperties.getTimeToLive(), hostProperties.getTimeUnit());
|
||||
this.connectionManager
|
||||
.setMaxTotal(this.hostProperties.getMaxTotalConnections());
|
||||
this.connectionManager.setDefaultMaxPerRoute(
|
||||
|
||||
@@ -19,8 +19,10 @@ package org.springframework.cloud.netflix.zuul.filters.route;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -49,6 +51,7 @@ import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
@@ -87,11 +90,25 @@ public class SimpleHostRoutingFilterTests {
|
||||
|
||||
@Test
|
||||
public void connectionPropertiesAreApplied() {
|
||||
addEnvironment(this.context, "zuul.host.maxTotalConnections=100", "zuul.host.maxPerRouteConnections=10");
|
||||
addEnvironment(this.context, "zuul.host.maxTotalConnections=100",
|
||||
"zuul.host.maxPerRouteConnections=10", "zuul.host.timeToLive=5",
|
||||
"zuul.host.timeUnit=SECONDS");
|
||||
setupContext();
|
||||
PoolingHttpClientConnectionManager connMgr = getFilter().newConnectionManager();
|
||||
assertEquals(100, connMgr.getMaxTotal());
|
||||
assertEquals(10, connMgr.getDefaultMaxPerRoute());
|
||||
Object pool = getField(connMgr, "pool");
|
||||
Long timeToLive = getField(pool, "timeToLive");
|
||||
TimeUnit timeUnit = getField(pool, "tunit");
|
||||
assertEquals(new Long(5), timeToLive);
|
||||
assertEquals(TimeUnit.SECONDS, timeUnit);
|
||||
}
|
||||
|
||||
protected <T> T getField(Object target, String name) {
|
||||
Field field = ReflectionUtils.findField(target.getClass(), name);
|
||||
ReflectionUtils.makeAccessible(field);
|
||||
Object value = ReflectionUtils.getField(field, target);
|
||||
return (T)value;
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user