Skip to content

Commit 4226096

Browse files
committed
Update Mokksy, set test timeout, set workflow timeout
1 parent de4c903 commit 4226096

File tree

5 files changed

+17
-7
lines changed

5 files changed

+17
-7
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616
validate-pr:
1717
runs-on: macos-latest-xlarge
1818
name: Validate PR
19+
timeout-minutes: 20
1920
env:
2021
JAVA_OPTS: "-Xmx8g -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dkotlin.daemon.jvm.options=-Xmx6g"
2122
steps:

gradle/libs.versions.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ logging = "7.0.13"
1818
slf4j = "2.0.17"
1919
kotest = "6.0.3"
2020
awaitility = "4.3.0"
21-
mokksy = "0.5.1"
21+
mokksy = "0.6.1"
2222

2323
# Samples
2424
mcp-kotlin = "0.7.2"
@@ -46,6 +46,7 @@ ktor-bom = { group = "io.ktor", name = "ktor-bom", version.ref = "ktor" }
4646
ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" }
4747
ktor-client-logging = { group = "io.ktor", name = "ktor-client-logging"}
4848
ktor-client-apache5 = { group = "io.ktor", name = "ktor-client-apache5" }
49+
ktor-client-okhttp = { group = "io.ktor", name = "ktor-client-okhttp" }
4950
ktor-server-sse = { group = "io.ktor", name = "ktor-server-sse", version.ref = "ktor" }
5051
ktor-server-websockets = { group = "io.ktor", name = "ktor-server-websockets", version.ref = "ktor" }
5152
ktor-server-core = { group = "io.ktor", name = "ktor-server-core", version.ref = "ktor" }
@@ -57,7 +58,7 @@ kotest-assertions-json = { group = "io.kotest", name = "kotest-assertions-json",
5758
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" }
5859
ktor-client-mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" }
5960
ktor-server-test-host = { group = "io.ktor", name = "ktor-server-test-host", version.ref = "ktor" }
60-
mokksy = { group = "me.kpavlov.mokksy", name = "mokksy", version.ref = "mokksy" }
61+
mokksy = { group = "dev.mokksy", name = "mokksy", version.ref = "mokksy" }
6162
slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }
6263

6364
# Samples

kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTest.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package io.modelcontextprotocol.kotlin.sdk.client
22

3+
import dev.mokksy.mokksy.Mokksy
4+
import dev.mokksy.mokksy.StubConfiguration
35
import io.kotest.matchers.collections.shouldContain
46
import io.ktor.client.HttpClient
57
import io.ktor.client.engine.apache5.Apache5
8+
import io.ktor.client.plugins.logging.LogLevel
9+
import io.ktor.client.plugins.logging.Logging
610
import io.ktor.client.plugins.sse.SSE
711
import io.ktor.http.HttpStatusCode
812
import io.ktor.sse.ServerSentEvent
@@ -16,8 +20,6 @@ import kotlinx.coroutines.runBlocking
1620
import kotlinx.serialization.json.buildJsonObject
1721
import kotlinx.serialization.json.put
1822
import kotlinx.serialization.json.putJsonObject
19-
import me.kpavlov.mokksy.MokksyServer
20-
import me.kpavlov.mokksy.StubConfiguration
2123
import org.junit.jupiter.api.AfterAll
2224
import org.junit.jupiter.api.TestInstance
2325
import java.util.UUID
@@ -28,7 +30,7 @@ import kotlin.time.Duration.Companion.milliseconds
2830
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
2931
class StreamableHttpClientTest {
3032

31-
private val mokksy = MokksyServer(verbose = true)
33+
private val mokksy = Mokksy(verbose = true)
3234

3335
@AfterTest
3436
fun afterEach() {
@@ -90,7 +92,7 @@ class StreamableHttpClientTest {
9092
mokksy.get(name = "MCP GETs", requestType = Any::class) {
9193
path("/mcp")
9294
containsHeader("Mcp-Session-Id", sessionId)
93-
containsHeader("Connection", "keep-alive")
95+
containsHeader("Accept", "text/event-stream,text/event-stream") // todo: why 2 times?
9496
containsHeader("Cache-Control", "no-store")
9597
} respondsWithSseStream {
9698
headers += "Mcp-Session-Id" to sessionId
@@ -122,6 +124,9 @@ class StreamableHttpClientTest {
122124
url = "http://localhost:${mokksy.port()}/mcp",
123125
client = HttpClient(Apache5) {
124126
install(SSE)
127+
install(Logging) {
128+
level = LogLevel.ALL
129+
}
125130
},
126131
),
127132
)
@@ -172,6 +177,8 @@ class StreamableHttpClientTest {
172177

173178
val listToolsResult = client.listTools()
174179

180+
println("$listToolsResult")
181+
175182
listToolsResult.tools shouldContain Tool(
176183
name = "get_weather",
177184
title = "Weather Information Provider",

kotlin-sdk-client/src/jvmTest/resources/junit-platform.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ junit.jupiter.execution.parallel.enabled=true
33
junit.jupiter.execution.parallel.config.strategy=dynamic
44
junit.jupiter.execution.parallel.mode.default=concurrent
55
junit.jupiter.execution.parallel.mode.classes.default=concurrent
6+
junit.jupiter.execution.timeout.default=90s

kotlin-sdk-client/src/jvmTest/resources/simplelogger.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ org.slf4j.simpleLogger.showShortLogName=false
1111
# Log level for specific packages or classes
1212
org.slf4j.simpleLogger.log.io.ktor.server=DEBUG
1313
org.slf4j.simpleLogger.log.io.modelcontextprotocol=TRACE
14-
org.slf4j.simpleLogger.log.me.kpavlov=DEBUG
14+
org.slf4j.simpleLogger.log.dev.mokksy=DEBUG

0 commit comments

Comments
 (0)