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/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 ae436493..078fd3d3 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,18 +31,8 @@ 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 { - implementation(projects.rsocketTransportTests) - implementation(projects.rsocketTransportKtorWebsocketClient) - 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) 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-tests/build.gradle.kts similarity index 50% rename from rsocket-transports/ktor-websocket-client/src/jsTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/client/ClientWebSocketTransportTest.kt rename to rsocket-transports/ktor-websocket-tests/build.gradle.kts index 67f71ba9..41ae0109 100644 --- a/rsocket-transports/ktor-websocket-client/src/jsTest/kotlin/io/rsocket/kotlin/transport/ktor/websocket/client/ClientWebSocketTransportTest.kt +++ b/rsocket-transports/ktor-websocket-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,12 +14,23 @@ * limitations under the License. */ -package io.rsocket.kotlin.transport.ktor.websocket.client +import rsocketbuild.* -//class ClientWebSocketTransportTest : TransportTest() { -// override suspend fun before() { -// client = connectClient( -// WebSocketClientTransport(Js, port = 9000, context = testContext, pool = InUseTrackingPool) -// ) -// } -//} +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")