From 151aff59fbd862c6f3552efe8b653a0c9b60abdb Mon Sep 17 00:00:00 2001 From: Oleg Yukhnevich Date: Mon, 3 Feb 2025 08:43:25 +0200 Subject: [PATCH 1/3] Cleanup ktor deps --- gradle/libs.versions.toml | 7 ----- .../ktor-websocket-server/build.gradle.kts | 8 ++--- .../server/WebSocketTransportTests.kt | 30 ------------------- 3 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 rsocket-transports/ktor-websocket-server/src/jvmTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTests.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7b20bd66..3cf17bb2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,21 +31,14 @@ kotlinx-coroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutine kotlinx-benchmark = { module = "org.jetbrains.kotlinx:kotlinx-benchmark-runtime", version.ref = "kotlinx-benchmark" } -ktor-io = { module = "io.ktor:ktor-io", version.ref = "ktor" } -ktor-utils = { module = "io.ktor:ktor-utils", version.ref = "ktor" } ktor-network = { module = "io.ktor:ktor-network", version.ref = "ktor" } ktor-websockets = { module = "io.ktor:ktor-websockets", version.ref = "ktor" } ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-websockets = { module = "io.ktor:ktor-client-websockets", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } -ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } -ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" } ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" } -ktor-server-host-common = { module = "io.ktor:ktor-server-host-common", version.ref = "ktor" } ktor-server-websockets = { module = "io.ktor:ktor-server-websockets", version.ref = "ktor" } ktor-server-cio = { module = "io.ktor:ktor-server-cio", version.ref = "ktor" } -ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } -ktor-server-jetty = { module = "io.ktor:ktor-server-jetty", version.ref = "ktor" } netty-handler = { module = "io.netty:netty-handler", version.ref = "netty" } netty-codec-http = { module = "io.netty:netty-codec-http", version.ref = "netty" } diff --git a/rsocket-transports/ktor-websocket-server/build.gradle.kts b/rsocket-transports/ktor-websocket-server/build.gradle.kts index ae436493..2e79b411 100644 --- a/rsocket-transports/ktor-websocket-server/build.gradle.kts +++ b/rsocket-transports/ktor-websocket-server/build.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the original author or authors. + * Copyright 2015-2025 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. @@ -31,7 +31,7 @@ kotlin { implementation(projects.rsocketTransportKtorWebsocketInternal) implementation(projects.rsocketInternalIo) api(projects.rsocketCore) - api(libs.ktor.server.host.common) + api(libs.ktor.server.core) api(libs.ktor.server.websockets) } commonTest.dependencies { @@ -40,9 +40,5 @@ kotlin { implementation(libs.ktor.client.cio) implementation(libs.ktor.server.cio) } - jvmTest.dependencies { - implementation(libs.ktor.client.okhttp) - implementation(libs.ktor.server.netty) - } } } diff --git a/rsocket-transports/ktor-websocket-server/src/jvmTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTests.kt b/rsocket-transports/ktor-websocket-server/src/jvmTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTests.kt deleted file mode 100644 index 315b6773..00000000 --- a/rsocket-transports/ktor-websocket-server/src/jvmTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTests.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015-2024 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.rsocket.kotlin.transport.ktor.websocket.server - -import io.ktor.client.engine.okhttp.* -import io.ktor.server.netty.* -import io.ktor.client.engine.cio.CIO as ClientCIO -import io.ktor.server.cio.CIO as ServerCIO - -class OkHttpClientWebSocketTransportTest : WebSocketTransportTest(OkHttp, ServerCIO) - -class NettyServerWebSocketTransportTest : WebSocketTransportTest(ClientCIO, Netty) - -class OkHttpClientKtorWebSocketTransportTest : KtorWebSocketTransportTest(OkHttp, ServerCIO) - -class NettyServerKtorWebSocketTransportTest : KtorWebSocketTransportTest(ClientCIO, Netty) From ecfeb078162a8b91a019cd8a782b55500757ef57 Mon Sep 17 00:00:00 2001 From: Oleg Yukhnevich Date: Sun, 9 Feb 2025 12:01:47 +0200 Subject: [PATCH 2/3] drop old client tests --- .../client/ClientWebSocketTransportTest.kt | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 rsocket-transports/ktor-websocket-client/src/jsTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/client/ClientWebSocketTransportTest.kt diff --git a/rsocket-transports/ktor-websocket-client/src/jsTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/client/ClientWebSocketTransportTest.kt b/rsocket-transports/ktor-websocket-client/src/jsTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/client/ClientWebSocketTransportTest.kt deleted file mode 100644 index 67f71ba9..00000000 --- a/rsocket-transports/ktor-websocket-client/src/jsTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/client/ClientWebSocketTransportTest.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-2024 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.rsocket.kotlin.transport.ktor.websocket.client - -//class ClientWebSocketTransportTest : TransportTest() { -// override suspend fun before() { -// client = connectClient( -// WebSocketClientTransport(Js, port = 9000, context = testContext, pool = InUseTrackingPool) -// ) -// } -//} From 06539d0f396fd4972fb76b07f24cad756c9050e9 Mon Sep 17 00:00:00 2001 From: Oleg Yukhnevich Date: Sun, 9 Feb 2025 12:05:02 +0200 Subject: [PATCH 3/3] extract websocket tests in separate module --- .../ktor-server-rsocket/build.gradle.kts | 8 +---- .../ktor-tests/build.gradle.kts | 24 +++++++++---- .../ktor/tests}/WebSocketConnectionTest.kt | 4 +-- .../ktor-websocket-server/build.gradle.kts | 6 ---- .../ktor-websocket-tests/build.gradle.kts | 36 +++++++++++++++++++ .../tests}/WebSocketTransportTest.kt | 27 ++++++-------- settings.gradle.kts | 4 ++- 7 files changed, 71 insertions(+), 38 deletions(-) rename rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/CIOWebSocketTransportTest.kt => ktor-plugins/ktor-tests/build.gradle.kts (53%) rename ktor-plugins/{ktor-server-rsocket/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server => ktor-tests/src/commonTest/kotlin/io/rsocket/kotlin/ktor/tests}/WebSocketConnectionTest.kt (96%) create mode 100644 rsocket-transports/ktor-websocket-tests/build.gradle.kts rename rsocket-transports/{ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server => ktor-websocket-tests/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/tests}/WebSocketTransportTest.kt (61%) diff --git a/ktor-plugins/ktor-server-rsocket/build.gradle.kts b/ktor-plugins/ktor-server-rsocket/build.gradle.kts index 7ebb510e..0348e3db 100644 --- a/ktor-plugins/ktor-server-rsocket/build.gradle.kts +++ b/ktor-plugins/ktor-server-rsocket/build.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the original author or authors. + * Copyright 2015-2025 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. @@ -32,11 +32,5 @@ kotlin { api(projects.rsocketCore) api(libs.ktor.server.websockets) } - commonTest.dependencies { - implementation(projects.ktorClientRsocket) - implementation(projects.rsocketTest) - implementation(libs.ktor.client.cio) - implementation(libs.ktor.server.cio) - } } } diff --git a/rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/CIOWebSocketTransportTest.kt b/ktor-plugins/ktor-tests/build.gradle.kts similarity index 53% rename from rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/CIOWebSocketTransportTest.kt rename to ktor-plugins/ktor-tests/build.gradle.kts index 82b880da..64ca7d45 100644 --- a/rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/CIOWebSocketTransportTest.kt +++ b/ktor-plugins/ktor-tests/build.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the original author or authors. + * Copyright 2015-2025 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. @@ -14,11 +14,23 @@ * limitations under the License. */ -package io.rsocket.kotlin.transport.ktor.websocket.server +import rsocketbuild.* -import io.ktor.client.engine.cio.CIO as ClientCIO -import io.ktor.server.cio.CIO as ServerCIO +plugins { + id("rsocketbuild.multiplatform-base") +} -class CIOWebSocketTransportTest : WebSocketTransportTest(ClientCIO, ServerCIO) +kotlin { + jvmTarget() + nixTargets() -class CIOKtorWebSocketTransportTest : KtorWebSocketTransportTest(ClientCIO, ServerCIO) + sourceSets { + commonTest.dependencies { + implementation(projects.ktorClientRsocket) + implementation(projects.ktorServerRsocket) + implementation(projects.rsocketTest) + implementation(libs.ktor.client.cio) + implementation(libs.ktor.server.cio) + } + } +} diff --git a/ktor-plugins/ktor-server-rsocket/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketConnectionTest.kt b/ktor-plugins/ktor-tests/src/commonTest/kotlin/io/rsocket/kotlin/ktor/tests/WebSocketConnectionTest.kt similarity index 96% rename from ktor-plugins/ktor-server-rsocket/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketConnectionTest.kt rename to ktor-plugins/ktor-tests/src/commonTest/kotlin/io/rsocket/kotlin/ktor/tests/WebSocketConnectionTest.kt index f6554720..dac3ae3a 100644 --- a/ktor-plugins/ktor-server-rsocket/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketConnectionTest.kt +++ b/ktor-plugins/ktor-tests/src/commonTest/kotlin/io/rsocket/kotlin/ktor/tests/WebSocketConnectionTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the original author or authors. + * Copyright 2015-2025 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.rsocket.kotlin.transport.ktor.websocket.server +package io.rsocket.kotlin.ktor.tests import io.ktor.client.* import io.ktor.server.application.* diff --git a/rsocket-transports/ktor-websocket-server/build.gradle.kts b/rsocket-transports/ktor-websocket-server/build.gradle.kts index 2e79b411..078fd3d3 100644 --- a/rsocket-transports/ktor-websocket-server/build.gradle.kts +++ b/rsocket-transports/ktor-websocket-server/build.gradle.kts @@ -34,11 +34,5 @@ kotlin { api(libs.ktor.server.core) api(libs.ktor.server.websockets) } - commonTest.dependencies { - implementation(projects.rsocketTransportTests) - implementation(projects.rsocketTransportKtorWebsocketClient) - implementation(libs.ktor.client.cio) - implementation(libs.ktor.server.cio) - } } } diff --git a/rsocket-transports/ktor-websocket-tests/build.gradle.kts b/rsocket-transports/ktor-websocket-tests/build.gradle.kts new file mode 100644 index 00000000..41ae0109 --- /dev/null +++ b/rsocket-transports/ktor-websocket-tests/build.gradle.kts @@ -0,0 +1,36 @@ +/* + * Copyright 2015-2025 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import rsocketbuild.* + +plugins { + id("rsocketbuild.multiplatform-base") +} + +kotlin { + jvmTarget() + nixTargets() + + sourceSets { + commonTest.dependencies { + implementation(projects.rsocketTransportTests) + implementation(projects.rsocketTransportKtorWebsocketClient) + implementation(projects.rsocketTransportKtorWebsocketServer) + implementation(libs.ktor.client.cio) + implementation(libs.ktor.server.cio) + } + } +} diff --git a/rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTest.kt b/rsocket-transports/ktor-websocket-tests/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/tests/WebSocketTransportTest.kt similarity index 61% rename from rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTest.kt rename to rsocket-transports/ktor-websocket-tests/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/tests/WebSocketTransportTest.kt index a0a3f06a..670965ad 100644 --- a/rsocket-transports/ktor-websocket-server/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/server/WebSocketTransportTest.kt +++ b/rsocket-transports/ktor-websocket-tests/src/commonTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/tests/WebSocketTransportTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the original author or authors. + * Copyright 2015-2025 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. @@ -14,43 +14,38 @@ * limitations under the License. */ -package io.rsocket.kotlin.transport.ktor.websocket.server +package io.rsocket.kotlin.transport.ktor.websocket.tests -import io.ktor.client.engine.* -import io.ktor.server.engine.* import io.rsocket.kotlin.transport.ktor.websocket.client.* +import io.rsocket.kotlin.transport.ktor.websocket.server.* import io.rsocket.kotlin.transport.tests.* +import io.ktor.client.engine.cio.CIO as ClientCIO +import io.ktor.server.cio.CIO as ServerCIO @Suppress("DEPRECATION_ERROR") -abstract class WebSocketTransportTest( - private val clientEngine: HttpClientEngineFactory<*>, - private val serverEngine: ApplicationEngineFactory<*, *>, -) : TransportTest() { +class WebSocketTransportTest : TransportTest() { override suspend fun before() { val embeddedServer = startServer( - WebSocketServerTransport(serverEngine, port = 0) + WebSocketServerTransport(ServerCIO, port = 0) ) val connector = embeddedServer.engine.resolvedConnectors().single() client = connectClient( - WebSocketClientTransport(clientEngine, port = connector.port, context = testContext) + WebSocketClientTransport(ClientCIO, port = connector.port, context = testContext) ) } } -abstract class KtorWebSocketTransportTest( - private val clientEngine: HttpClientEngineFactory<*>, - private val serverEngine: ApplicationEngineFactory<*, *>, -) : TransportTest() { +class KtorWebSocketTransportTest : TransportTest() { override suspend fun before() { val server = startServer( KtorWebSocketServerTransport(testContext) { - httpEngine(serverEngine) + httpEngine(ServerCIO) }.target(port = 0) ) val port = server.connectors.single().port client = connectClient( KtorWebSocketClientTransport(testContext) { - httpEngine(clientEngine) + httpEngine(ClientCIO) }.target(port = port) ) } diff --git a/settings.gradle.kts b/settings.gradle.kts index e278615f..da110e84 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the original author or authors. + * Copyright 2015-2025 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. @@ -41,6 +41,7 @@ projects("rsocket-kotlin") { module("ktor-websocket-internal") module("ktor-websocket-client") module("ktor-websocket-server") + module("ktor-websocket-tests") module("netty-internal") module("netty-tcp") @@ -52,6 +53,7 @@ projects("rsocket-kotlin") { folder("ktor-plugins", null) { module("ktor-client-rsocket") module("ktor-server-rsocket") + module("ktor-tests") // for migration from old names module("rsocket-ktor-client") module("rsocket-ktor-server")