From 711138b46919117424e81ce3b63f39d7faf95add Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Mon, 16 Mar 2026 12:10:35 +0100 Subject: [PATCH] Test TerminalError.metadata --- .github/workflows/integration.yaml | 2 +- .../dev/restate/sdk/testservices/FailingImpl.kt | 14 ++++++++------ .../restate/sdk/testservices/contracts/Failing.kt | 11 +++++++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index a5979e39..59ff1a1a 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -135,7 +135,7 @@ jobs: - name: Run test tool continue-on-error: ${{ inputs.continueOnError == 'true' }} - uses: restatedev/sdk-test-suite@v3.4 + uses: restatedev/sdk-test-suite@v4.0 with: envVars: ${{ inputs.envVars }} testArtifactOutput: ${{ inputs.testArtifactOutput != '' && inputs.testArtifactOutput || 'sdk-java-integration-test-report' }} diff --git a/test-services/src/main/kotlin/dev/restate/sdk/testservices/FailingImpl.kt b/test-services/src/main/kotlin/dev/restate/sdk/testservices/FailingImpl.kt index 0aa1224d..7e61f40b 100644 --- a/test-services/src/main/kotlin/dev/restate/sdk/testservices/FailingImpl.kt +++ b/test-services/src/main/kotlin/dev/restate/sdk/testservices/FailingImpl.kt @@ -25,18 +25,18 @@ class FailingImpl : Failing { private val eventualSuccessSideEffectCalls = AtomicInteger(0) private val eventualFailureSideEffectCalls = AtomicInteger(0) - override suspend fun terminallyFailingCall(errorMessage: String) { + override suspend fun terminallyFailingCall(failureToPropagate: Failing.FailureToPropagate) { LOG.info("Invoked fail") - throw TerminalException(errorMessage) + throw TerminalException(failureToPropagate.errorMessage, failureToPropagate.metadata) } override suspend fun callTerminallyFailingCall( - errorMessage: String, + failureToPropagate: Failing.FailureToPropagate, ): String { LOG.info("Invoked failAndHandle") - virtualObject(random().nextUUID().toString()).terminallyFailingCall(errorMessage) + virtualObject(random().nextUUID().toString()).terminallyFailingCall(failureToPropagate) throw IllegalStateException("This should be unreachable") } @@ -52,8 +52,10 @@ class FailingImpl : Failing { } } - override suspend fun terminallyFailingSideEffect(errorMessage: String) { - runBlock { throw TerminalException(errorMessage) } + override suspend fun terminallyFailingSideEffect(failureToPropagate: Failing.FailureToPropagate) { + runBlock { + throw TerminalException(failureToPropagate.errorMessage, failureToPropagate.metadata) + } throw IllegalStateException("Should not be reached.") } diff --git a/test-services/src/main/kotlin/dev/restate/sdk/testservices/contracts/Failing.kt b/test-services/src/main/kotlin/dev/restate/sdk/testservices/contracts/Failing.kt index 4d5d1a92..7a967140 100644 --- a/test-services/src/main/kotlin/dev/restate/sdk/testservices/contracts/Failing.kt +++ b/test-services/src/main/kotlin/dev/restate/sdk/testservices/contracts/Failing.kt @@ -9,18 +9,21 @@ package dev.restate.sdk.testservices.contracts import dev.restate.sdk.annotation.* -import dev.restate.sdk.kotlin.* +import kotlinx.serialization.Serializable @VirtualObject @Name("Failing") interface Failing { - @Handler suspend fun terminallyFailingCall(errorMessage: String) + @Serializable + data class FailureToPropagate(val errorMessage: String, val metadata: Map? = null) - @Handler suspend fun callTerminallyFailingCall(errorMessage: String): String + @Handler suspend fun terminallyFailingCall(failureToPropagate: FailureToPropagate) + + @Handler suspend fun callTerminallyFailingCall(failureToPropagate: FailureToPropagate): String @Handler suspend fun failingCallWithEventualSuccess(): Int - @Handler suspend fun terminallyFailingSideEffect(errorMessage: String) + @Handler suspend fun terminallyFailingSideEffect(failureToPropagate: FailureToPropagate) /** * `minimumAttempts` should be used to check when to succeed. The retry policy should be