From 1a616b1063e244fe572c2f10bce7e6338d4b61b6 Mon Sep 17 00:00:00 2001 From: szymonsztuka Date: Tue, 1 May 2018 23:48:13 +0100 Subject: [PATCH] resolve merge conflicts - compilation error, fix integration tests in remote database mode --- .../net/corda/node/services/BFTNotaryServiceTests.kt | 10 +++++++--- .../kotlin/net/corda/node/services/BFTSMaRtTests.kt | 12 +++++++++++- .../services/transactions/MySQLUniquenessProvider.kt | 4 +++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/node/src/integration-test/kotlin/net/corda/node/services/BFTNotaryServiceTests.kt b/node/src/integration-test/kotlin/net/corda/node/services/BFTNotaryServiceTests.kt index 44e4237dd8..b0f6b7a4a2 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/BFTNotaryServiceTests.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/BFTNotaryServiceTests.kt @@ -41,7 +41,6 @@ import net.corda.testing.common.internal.testNetworkParameters import net.corda.testing.contracts.DummyContract import net.corda.testing.core.dummyCommand import net.corda.testing.core.singleIdentity -import net.corda.testing.driver.PortAllocation import net.corda.testing.node.TestClock import net.corda.testing.internal.IntegrationTest import net.corda.testing.internal.IntegrationTestSchemas @@ -55,7 +54,6 @@ import org.junit.Assert.assertThat import java.nio.file.Paths import java.time.Duration import java.time.Instant -import java.util.* import java.util.concurrent.ExecutionException import kotlin.test.assertEquals import kotlin.test.assertFailsWith @@ -75,6 +73,7 @@ class BFTNotaryServiceTests { @BeforeClass @JvmStatic fun before() { + IntegrationTest.globalSetUp() //Enterprise only - remote db setup mockNet = InternalMockNetwork(listOf("net.corda.testing.contracts")) val clusterSize = minClusterSize(1) val started = startBftClusterAndNode(clusterSize, mockNet) @@ -86,6 +85,7 @@ class BFTNotaryServiceTests { @JvmStatic fun stopNodes() { mockNet.stopNodes() + IntegrationTest.globalTearDown() //Enterprise only - remote db cleanup } fun startBftClusterAndNode(clusterSize: Int, mockNet: InternalMockNetwork, exposeRaces: Boolean = false): Pair> { @@ -113,17 +113,21 @@ class BFTNotaryServiceTests { networkParameters.install(mockNet.baseDirectory(node.id)) node.start() }.last() - return Pair(notaryIdentity, node) } } + + + @Test fun `detect double spend`() { node.run { val issueTx = signInitialTransaction(notary) { addOutputState(DummyContract.SingleOwnerState(owner = info.singleIdentity()), DummyContract.PROGRAM_ID, AlwaysAcceptAttachmentConstraint) } + //val latch = CountDownLatch(1) + //latch.await() database.transaction { services.recordTransactions(issueTx) } diff --git a/node/src/integration-test/kotlin/net/corda/node/services/BFTSMaRtTests.kt b/node/src/integration-test/kotlin/net/corda/node/services/BFTSMaRtTests.kt index 3f947a6d33..5fed0bea75 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/BFTSMaRtTests.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/BFTSMaRtTests.kt @@ -12,14 +12,24 @@ import net.corda.node.services.transactions.minClusterSize import net.corda.testing.contracts.DummyContract import net.corda.testing.core.dummyCommand import net.corda.testing.core.singleIdentity +import net.corda.testing.internal.IntegrationTest +import net.corda.testing.internal.IntegrationTestSchemas import net.corda.testing.node.internal.InternalMockNetwork import net.corda.testing.node.internal.InternalMockNetwork.MockNode import net.corda.testing.node.internal.startFlow import org.junit.After import org.junit.Before +import org.junit.ClassRule import org.junit.Test -class BFTSMaRtTests { +class BFTSMaRtTests : IntegrationTest() { + companion object { + @ClassRule + @JvmField + val databaseSchemas = IntegrationTestSchemas("node_0", "node_1", "node_2", "node_3", "node_4", "node_5", + "node_6", "node_7", "node_8", "node_9") + } + private lateinit var mockNet: InternalMockNetwork @Before diff --git a/node/src/main/kotlin/net/corda/node/services/transactions/MySQLUniquenessProvider.kt b/node/src/main/kotlin/net/corda/node/services/transactions/MySQLUniquenessProvider.kt index 7473b89778..79d9a2ed90 100644 --- a/node/src/main/kotlin/net/corda/node/services/transactions/MySQLUniquenessProvider.kt +++ b/node/src/main/kotlin/net/corda/node/services/transactions/MySQLUniquenessProvider.kt @@ -17,6 +17,7 @@ import com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource import net.corda.core.contracts.StateRef +import net.corda.core.contracts.TimeWindow import net.corda.core.crypto.SecureHash import net.corda.core.crypto.sha256 import net.corda.core.flows.NotarisationRequestSignature @@ -44,6 +45,7 @@ class MySQLUniquenessProvider( metrics: MetricRegistry, configuration: MySQLConfiguration ) : UniquenessProvider, SingletonSerializeAsToken() { + companion object { private val log = loggerFor() @@ -123,7 +125,7 @@ class MySQLUniquenessProvider( dataSource.close() } - override fun commit(states: List, txId: SecureHash, callerIdentity: Party, requestSignature: NotarisationRequestSignature) { + override fun commit(states: List, txId: SecureHash, callerIdentity: Party, requestSignature: NotarisationRequestSignature, timeWindow: TimeWindow?) { val s = Stopwatch.createStarted() try { runWithRetry(CommitAll(states, txId, callerIdentity, requestSignature))