From f378f0eba67e5b900ed7c3e1df99a28b572119d5 Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Mon, 18 Mar 2019 17:25:01 +0000 Subject: [PATCH] BUILD: Try to fix flaky FailNodeOnNotMigratedAttachmentContractsTableNameTests. * Ensure that this test stops nodes that it starts. * Also ensure that random ephemeral ports can be reused. --- ...gratedAttachmentContractsTableNameTests.kt | 19 +++++++++---------- .../testing/driver/internal/DriverInternal.kt | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt b/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt index 7c2a988c53..7b88f4c5c1 100644 --- a/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt +++ b/node/src/integration-test/kotlin/net/corda/node/persistence/FailNodeOnNotMigratedAttachmentContractsTableNameTests.kt @@ -14,7 +14,6 @@ import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver import net.corda.testing.driver.internal.RandomFree import net.corda.testing.node.User -import org.assertj.core.api.Assertions import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.Test import java.nio.file.Path @@ -36,19 +35,19 @@ class FailNodeOnNotMigratedAttachmentContractsTableNameTests { val user = User("mark", "dadada", setOf(Permissions.startFlow(), Permissions.invokeRpc("vaultQuery"))) val message = Message("Hello world!") val baseDir: Path = driver(DriverParameters(startNodesInProcess = true, portAllocation = RandomFree, extraCordappPackagesToScan = listOf(MessageState::class.packageName))) { - // Just start a node to make this test less flaky. - startNode(rpcUsers = listOf(user)).getOrThrow() - - val (nodeName, baseDir) = { + val (nodeName, baseDir) = run { defaultNotaryNode.getOrThrow() val nodeHandle = startNode(rpcUsers = listOf(user)).getOrThrow() - val nodeName = nodeHandle.nodeInfo.singleIdentity().name - CordaRPCClient(nodeHandle.rpcAddress).start(user.username, user.password).use { - it.proxy.startFlow(::SendMessageFlow, message, defaultNotaryIdentity).returnValue.getOrThrow() + val nodeName = try { + CordaRPCClient(nodeHandle.rpcAddress).start(user.username, user.password).use { + it.proxy.startFlow(::SendMessageFlow, message, defaultNotaryIdentity).returnValue.getOrThrow() + } + nodeHandle.nodeInfo.singleIdentity().name + } finally { + nodeHandle.stop() } - nodeHandle.stop() Pair(nodeName, nodeHandle.baseDirectory) - }() + } // replace the correct table name with one from the former release DriverManager.getConnection("jdbc:h2:file://$baseDir/persistence", "sa", "").use { diff --git a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt index 20623ef743..30e5cae3d0 100644 --- a/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt +++ b/testing/node-driver/src/main/kotlin/net/corda/testing/driver/internal/DriverInternal.kt @@ -81,6 +81,7 @@ val InProcess.internalServices: StartedNodeServices get() = services as StartedN object RandomFree : PortAllocation() { override fun nextPort(): Int { return ServerSocket().use { + it.reuseAddress = true it.bind(InetSocketAddress(0)) it.localPort }