diff --git a/src/main/java/com/aliyun/tea/okhttp/OkHttpClientBuilder.java b/src/main/java/com/aliyun/tea/okhttp/OkHttpClientBuilder.java index dfdd5d7..0284cbc 100644 --- a/src/main/java/com/aliyun/tea/okhttp/OkHttpClientBuilder.java +++ b/src/main/java/com/aliyun/tea/okhttp/OkHttpClientBuilder.java @@ -59,7 +59,11 @@ public OkHttpClientBuilder connectionPool(Map map) { } catch (Exception e) { maxIdleConnections = 5; } - ConnectionPool connectionPool = new ConnectionPool(maxIdleConnections, 10000L, TimeUnit.MILLISECONDS); + long keepAliveDuration = 10000L; + if (map.containsKey("keepAliveDuration") && null != map.get("keepAliveDuration")) { + keepAliveDuration = Long.parseLong(String.valueOf(map.get("keepAliveDuration"))); + } + ConnectionPool connectionPool = new ConnectionPool(maxIdleConnections, keepAliveDuration, TimeUnit.MILLISECONDS); this.builder.connectionPool(connectionPool); return this; } diff --git a/src/test/java/com/aliyun/tea/okhttp/OkHttpClientBuilderTest.java b/src/test/java/com/aliyun/tea/okhttp/OkHttpClientBuilderTest.java index af440e8..4a8350e 100644 --- a/src/test/java/com/aliyun/tea/okhttp/OkHttpClientBuilderTest.java +++ b/src/test/java/com/aliyun/tea/okhttp/OkHttpClientBuilderTest.java @@ -40,6 +40,37 @@ public void connectionPoolTest() { map.put("maxIdleConns", 666); clientBuilder.connectionPool(map); Mockito.verify(clientBuilder, Mockito.times(2)).connectionPool(map); + + map.put("keepAliveDuration", null); + clientBuilder.connectionPool(map); + + map.put("keepAliveDuration", ""); + try { + clientBuilder.connectionPool(map); + Assert.fail(); + } catch (NumberFormatException e) { + Assert.assertTrue(e.getMessage().contains("For input string: \"\"")); + } + + map.put("keepAliveDuration", "str"); + try { + clientBuilder.connectionPool(map); + Assert.fail(); + } catch (Exception e) { + Assert.assertTrue(e.getMessage().contains("For input string: \"str\"")); + } + + map.put("keepAliveDuration", 0); + try { + clientBuilder.connectionPool(map); + Assert.fail(); + } catch (IllegalArgumentException e) { + Assert.assertTrue(e.getMessage().contains("keepAliveDuration <= 0: 0")); + } + + map.put("keepAliveDuration", 100L); + clientBuilder.connectionPool(map); + Mockito.verify(clientBuilder, Mockito.times(7)).connectionPool(map); } @Test