diff --git a/tempest-testing-internal/src/main/kotlin/app/cash/tempest/testing/internal/DefaultTestDynamoDbClient.kt b/tempest-testing-internal/src/main/kotlin/app/cash/tempest/testing/internal/DefaultTestDynamoDbClient.kt index 9a3681d4d..3fdc09390 100644 --- a/tempest-testing-internal/src/main/kotlin/app/cash/tempest/testing/internal/DefaultTestDynamoDbClient.kt +++ b/tempest-testing-internal/src/main/kotlin/app/cash/tempest/testing/internal/DefaultTestDynamoDbClient.kt @@ -24,11 +24,12 @@ class DefaultTestDynamoDbClient( override val tables: List, private val port: Int, ) : AbstractIdleService(), TestDynamoDbClient { - // TODO: Is there a better way of doing this than making a network connection? + // Lazy so that hostName is resolved after the DynamoDB Local server is started, + // not at construction time when the placeholder ServerSocket is still holding the port. private val hostName by lazy { hostName(port) } - override val dynamoDb = buildDynamoDb(hostName, port) - override val dynamoDbStreams = buildDynamoDbStreams(hostName, port) + override val dynamoDb by lazy { buildDynamoDb(hostName, port) } + override val dynamoDbStreams by lazy { buildDynamoDbStreams(hostName, port) } override fun startUp() { reset() diff --git a/tempest2-testing-internal/src/main/kotlin/app/cash/tempest2/testing/internal/DefaultTestDynamoDbClient.kt b/tempest2-testing-internal/src/main/kotlin/app/cash/tempest2/testing/internal/DefaultTestDynamoDbClient.kt index 525394755..cc187aaab 100644 --- a/tempest2-testing-internal/src/main/kotlin/app/cash/tempest2/testing/internal/DefaultTestDynamoDbClient.kt +++ b/tempest2-testing-internal/src/main/kotlin/app/cash/tempest2/testing/internal/DefaultTestDynamoDbClient.kt @@ -25,13 +25,14 @@ class DefaultTestDynamoDbClient( override val tables: List, private val port: Int, ) : AbstractIdleService(), TestDynamoDbClient { - // TODO: Is there a better way of doing this than making a network connection? + // Lazy so that hostName is resolved after the DynamoDB Local server is started, + // not at construction time when the placeholder ServerSocket is still holding the port. private val hostName by lazy { hostName(port) } - override val dynamoDb = buildDynamoDb(hostName, port) - override val asyncDynamoDb = buildAsyncDynamoDb(hostName, port) - override val dynamoDbStreams = buildDynamoDbStreams(hostName, port) - override val asyncDynamoDbStreams = buildAsyncDynamoDbStreams(hostName, port) + override val dynamoDb by lazy { buildDynamoDb(hostName, port) } + override val asyncDynamoDb by lazy { buildAsyncDynamoDb(hostName, port) } + override val dynamoDbStreams by lazy { buildDynamoDbStreams(hostName, port) } + override val asyncDynamoDbStreams by lazy { buildAsyncDynamoDbStreams(hostName, port) } override fun startUp() { reset()