From fac67308ab324e156c685af8b08bffe100ba10e2 Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Sat, 13 May 2023 14:14:16 +0100 Subject: [PATCH 1/3] Output failing calls --- .../src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt | 4 +++- .../okhttp3/internal/connection/RealConnectionPool.kt | 6 ++++++ .../java/okhttp3/internal/ws/WebSocketHttpTest.java | 7 ------- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt b/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt index 811b6e19645f..089141c2404e 100644 --- a/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt +++ b/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt @@ -191,7 +191,9 @@ class OkHttpClientTestRule : BeforeEachCallback, AfterEachCallback { } assertEquals(0, connectionPool.connectionCount()) { - "Still ${connectionPool.connectionCount()} connections open" + val call = connectionPool.delegate.calls + + "Still ${connectionPool.connectionCount()} connections open: $call" } } } diff --git a/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt b/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt index 99f1b7047a0c..2125be5a024e 100644 --- a/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt +++ b/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt @@ -20,6 +20,7 @@ import java.net.Socket import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.TimeUnit import okhttp3.Address +import okhttp3.Call import okhttp3.ConnectionListener import okhttp3.ConnectionPool import okhttp3.Route @@ -276,6 +277,11 @@ class RealConnectionPool( return references.size } + val calls: List + get() { + return connections.flatMap { it.calls.mapNotNull { it.get() } } + } + companion object { fun get(connectionPool: ConnectionPool): RealConnectionPool = connectionPool.delegate } diff --git a/okhttp/src/jvmTest/java/okhttp3/internal/ws/WebSocketHttpTest.java b/okhttp/src/jvmTest/java/okhttp3/internal/ws/WebSocketHttpTest.java index 3f7eef947bf3..9d8fa4c0a32a 100644 --- a/okhttp/src/jvmTest/java/okhttp3/internal/ws/WebSocketHttpTest.java +++ b/okhttp/src/jvmTest/java/okhttp3/internal/ws/WebSocketHttpTest.java @@ -909,11 +909,6 @@ private OkHttpClientTestRule configureClientTestRule() { /** https://github.com/square/okhttp/issues/7768 */ @Test public void reconnectingToNonWebSocket() throws InterruptedException { - // Async test is problematic - client = this.client.newBuilder() - .connectionPool(new ConnectionPool()) - .build(); - for (int i = 0; i < 30; i++) { webServer.enqueue(new MockResponse.Builder() .bodyDelay(100, TimeUnit.MILLISECONDS) @@ -950,8 +945,6 @@ public void onFailure(WebSocket webSocket, Throwable t, Response response) { for (WebSocket webSocket: webSockets) { webSocket.cancel(); } - client.dispatcher().cancelAll(); - client.connectionPool().evictAll(); } @Test public void compressedMessages() throws Exception { From 1f2f4d89366e842a0929f5c9101f28263814018e Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Sat, 13 May 2023 14:36:52 +0100 Subject: [PATCH 2/3] Output failing calls --- .../src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt b/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt index 089141c2404e..25c66fd35a2d 100644 --- a/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt +++ b/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt @@ -190,10 +190,11 @@ class OkHttpClientTestRule : BeforeEachCallback, AfterEachCallback { println("After delay: " + connectionPool.connectionCount()) } + connectionPool.evictAll() assertEquals(0, connectionPool.connectionCount()) { - val call = connectionPool.delegate.calls + val calls = connectionPool.delegate.calls - "Still ${connectionPool.connectionCount()} connections open: $call" + "Still ${connectionPool.connectionCount()} connections open, calls: $calls" } } } From a54045b4cbf3f1eb9b7fe66b19e99017931a7e6f Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Sun, 14 May 2023 08:54:20 +0100 Subject: [PATCH 3/3] Simplify --- .../src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt | 4 +--- .../okhttp3/internal/connection/RealConnectionPool.kt | 6 ------ 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt b/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt index 25c66fd35a2d..89ed00066a51 100644 --- a/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt +++ b/okhttp-testing-support/src/jvmMain/kotlin/okhttp3/OkHttpClientTestRule.kt @@ -192,9 +192,7 @@ class OkHttpClientTestRule : BeforeEachCallback, AfterEachCallback { connectionPool.evictAll() assertEquals(0, connectionPool.connectionCount()) { - val calls = connectionPool.delegate.calls - - "Still ${connectionPool.connectionCount()} connections open, calls: $calls" + "Still ${connectionPool.connectionCount()} connections open" } } } diff --git a/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt b/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt index 2125be5a024e..99f1b7047a0c 100644 --- a/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt +++ b/okhttp/src/jvmMain/kotlin/okhttp3/internal/connection/RealConnectionPool.kt @@ -20,7 +20,6 @@ import java.net.Socket import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.TimeUnit import okhttp3.Address -import okhttp3.Call import okhttp3.ConnectionListener import okhttp3.ConnectionPool import okhttp3.Route @@ -277,11 +276,6 @@ class RealConnectionPool( return references.size } - val calls: List - get() { - return connections.flatMap { it.calls.mapNotNull { it.get() } } - } - companion object { fun get(connectionPool: ConnectionPool): RealConnectionPool = connectionPool.delegate }