diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 85a974b2fe..f89d9257e9 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -79,6 +79,7 @@
+
diff --git a/client/jfx/src/integration-test/kotlin/net/corda/client/jfx/NodeMonitorModelTest.kt b/client/jfx/src/integration-test/kotlin/net/corda/client/jfx/NodeMonitorModelTest.kt
index 5f22eadbd4..678f4b3a50 100644
--- a/client/jfx/src/integration-test/kotlin/net/corda/client/jfx/NodeMonitorModelTest.kt
+++ b/client/jfx/src/integration-test/kotlin/net/corda/client/jfx/NodeMonitorModelTest.kt
@@ -28,11 +28,11 @@ import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.CashExitFlow
import net.corda.flows.CashIssueFlow
import net.corda.flows.CashPaymentFlow
-import net.corda.node.driver.driver
import net.corda.node.services.network.NetworkMapService
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
+import net.corda.testing.driver.driver
import net.corda.testing.expect
import net.corda.testing.expectEvents
import net.corda.testing.node.DriverBasedTest
@@ -123,14 +123,14 @@ class NodeMonitorModelTest : DriverBasedTest() {
vaultUpdates.expectEvents(isStrict = false) {
sequence(
// SNAPSHOT
- expect { output: Vault.Update ->
- require(output.consumed.isEmpty()) { output.consumed.size }
- require(output.produced.isEmpty()) { output.produced.size }
+ expect { (consumed, produced) ->
+ require(consumed.isEmpty()) { consumed.size }
+ require(produced.isEmpty()) { produced.size }
},
// ISSUE
- expect { output: Vault.Update ->
- require(output.consumed.isEmpty()) { output.consumed.size }
- require(output.produced.size == 1) { output.produced.size }
+ expect { (consumed, produced) ->
+ require(consumed.isEmpty()) { consumed.size }
+ require(produced.size == 1) { produced.size }
}
)
}
@@ -207,19 +207,19 @@ class NodeMonitorModelTest : DriverBasedTest() {
vaultUpdates.expectEvents {
sequence(
// SNAPSHOT
- expect { output: Vault.Update ->
- require(output.consumed.isEmpty()) { output.consumed.size }
- require(output.produced.isEmpty()) { output.produced.size }
+ expect { (consumed, produced) ->
+ require(consumed.isEmpty()) { consumed.size }
+ require(produced.isEmpty()) { produced.size }
},
// ISSUE
- expect { update ->
- require(update.consumed.isEmpty()) { update.consumed.size }
- require(update.produced.size == 1) { update.produced.size }
+ expect { (consumed, produced) ->
+ require(consumed.isEmpty()) { consumed.size }
+ require(produced.size == 1) { produced.size }
},
// MOVE
- expect { update ->
- require(update.consumed.size == 1) { update.consumed.size }
- require(update.produced.isEmpty()) { update.produced.size }
+ expect { (consumed, produced) ->
+ require(consumed.size == 1) { consumed.size }
+ require(produced.isEmpty()) { produced.size }
}
)
}
@@ -227,14 +227,14 @@ class NodeMonitorModelTest : DriverBasedTest() {
stateMachineTransactionMapping.expectEvents {
sequence(
// ISSUE
- expect { mapping ->
- require(mapping.stateMachineRunId == issueSmId)
- require(mapping.transactionId == issueTx!!.id)
+ expect { (stateMachineRunId, transactionId) ->
+ require(stateMachineRunId == issueSmId)
+ require(transactionId == issueTx!!.id)
},
// MOVE
- expect { mapping ->
- require(mapping.stateMachineRunId == moveSmId)
- require(mapping.transactionId == moveTx!!.id)
+ expect { (stateMachineRunId, transactionId) ->
+ require(stateMachineRunId == moveSmId)
+ require(transactionId == moveTx!!.id)
}
)
}
diff --git a/client/rpc/src/integration-test/kotlin/net/corda/client/rpc/RPCStabilityTests.kt b/client/rpc/src/integration-test/kotlin/net/corda/client/rpc/RPCStabilityTests.kt
index 84eaae1c86..83d5965028 100644
--- a/client/rpc/src/integration-test/kotlin/net/corda/client/rpc/RPCStabilityTests.kt
+++ b/client/rpc/src/integration-test/kotlin/net/corda/client/rpc/RPCStabilityTests.kt
@@ -12,7 +12,7 @@ import net.corda.client.rpc.internal.RPCClient
import net.corda.client.rpc.internal.RPCClientConfiguration
import net.corda.core.*
import net.corda.core.messaging.RPCOps
-import net.corda.node.driver.poll
+import net.corda.testing.driver.poll
import net.corda.node.services.messaging.RPCServerConfiguration
import net.corda.nodeapi.RPCApi
import net.corda.nodeapi.RPCKryo
diff --git a/client/rpc/src/test/kotlin/net/corda/client/rpc/RPCPerformanceTests.kt b/client/rpc/src/test/kotlin/net/corda/client/rpc/RPCPerformanceTests.kt
index 8d1fdcb65b..8366391462 100644
--- a/client/rpc/src/test/kotlin/net/corda/client/rpc/RPCPerformanceTests.kt
+++ b/client/rpc/src/test/kotlin/net/corda/client/rpc/RPCPerformanceTests.kt
@@ -11,9 +11,9 @@ import net.corda.core.minutes
import net.corda.core.seconds
import net.corda.core.utilities.Rate
import net.corda.core.utilities.div
-import net.corda.node.driver.ShutdownManager
import net.corda.node.services.messaging.RPCServerConfiguration
import net.corda.testing.RPCDriverExposedDSLInterface
+import net.corda.testing.driver.ShutdownManager
import net.corda.testing.measure
import net.corda.testing.rpcDriver
import org.junit.Ignore
@@ -83,12 +83,13 @@ class RPCPerformanceTests : AbstractRPCTest() {
val averageIndividualMs: Double,
val Mbps: Double
)
+
@Test
fun `measure Megabytes per second for simple RPCs`() {
warmup()
val inputOutputSizes = listOf(1024, 4096, 100 * 1024)
val overallTraffic = 512 * 1024 * 1024L
- measure(inputOutputSizes, (1..5)) { inputOutputSize, N ->
+ measure(inputOutputSizes, (1..5)) { inputOutputSize, _ ->
rpcDriver {
val proxy = testProxy(
RPCClientConfiguration.default.copy(
diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst
index a7afd59e23..9a5ef0fce9 100644
--- a/docs/source/changelog.rst
+++ b/docs/source/changelog.rst
@@ -10,6 +10,8 @@ UNRELEASED
* A new RPC has been added to support fuzzy matching of X.500 names, for instance, to translate from user input to
an unambiguous identity by searching the network map.
+* The node driver has moved to net.corda.testing.driver in the test-utils module
+
Milestone 12
------------
diff --git a/docs/source/example-code/build.gradle b/docs/source/example-code/build.gradle
index 579c4e5193..ed5c41ba90 100644
--- a/docs/source/example-code/build.gradle
+++ b/docs/source/example-code/build.gradle
@@ -35,8 +35,7 @@ compileTestJava.dependsOn tasks.getByPath(':node:capsule:buildCordaJAR')
dependencies {
compile project(':core')
compile project(':client:jfx')
- compile project(':node')
- testCompile project(':test-utils')
+ compile project(':test-utils')
testCompile project(':verifier')
compile "org.graphstream:gs-core:1.3"
diff --git a/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt
index c6c8afb8f8..af5ff519cd 100644
--- a/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt
+++ b/docs/source/example-code/src/integration-test/kotlin/net/corda/docs/IntegrationTestingTutorial.kt
@@ -14,7 +14,7 @@ import net.corda.core.utilities.BOB
import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.CashIssueFlow
import net.corda.flows.CashPaymentFlow
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.ValidatingNotaryService
import net.corda.nodeapi.User
diff --git a/docs/source/example-code/src/main/kotlin/net/corda/docs/ClientRpcTutorial.kt b/docs/source/example-code/src/main/kotlin/net/corda/docs/ClientRpcTutorial.kt
index b232f9fd6e..dd870c27d0 100644
--- a/docs/source/example-code/src/main/kotlin/net/corda/docs/ClientRpcTutorial.kt
+++ b/docs/source/example-code/src/main/kotlin/net/corda/docs/ClientRpcTutorial.kt
@@ -17,10 +17,10 @@ import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.CashExitFlow
import net.corda.flows.CashIssueFlow
import net.corda.flows.CashPaymentFlow
-import net.corda.node.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.ValidatingNotaryService
import net.corda.nodeapi.User
+import net.corda.testing.driver.driver
import org.graphstream.graph.Edge
import org.graphstream.graph.Node
import org.graphstream.graph.implementations.MultiGraph
diff --git a/node/build.gradle b/node/build.gradle
index 0f26faf62c..d53d3c908c 100644
--- a/node/build.gradle
+++ b/node/build.gradle
@@ -183,6 +183,7 @@ dependencies {
// Integration test helpers
integrationTestCompile "junit:junit:$junit_version"
+ integrationTestCompile "org.assertj:assertj-core:${assertj_version}"
// Smoke tests do NOT have any Node code on the classpath!
smokeTestCompile project(':smoke-test-utils')
diff --git a/node/src/integration-test/kotlin/net/corda/node/BootTests.kt b/node/src/integration-test/kotlin/net/corda/node/BootTests.kt
index 30f1cf38a5..59c3b688ba 100644
--- a/node/src/integration-test/kotlin/net/corda/node/BootTests.kt
+++ b/node/src/integration-test/kotlin/net/corda/node/BootTests.kt
@@ -7,7 +7,7 @@ import net.corda.core.flows.StartableByRPC
import net.corda.core.getOrThrow
import net.corda.core.messaging.startFlow
import net.corda.core.utilities.ALICE
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.nodeapi.User
import org.assertj.core.api.Assertions.assertThat
diff --git a/node/src/integration-test/kotlin/net/corda/node/CordappScanningDriverTest.kt b/node/src/integration-test/kotlin/net/corda/node/CordappScanningDriverTest.kt
new file mode 100644
index 0000000000..1e933ddaf5
--- /dev/null
+++ b/node/src/integration-test/kotlin/net/corda/node/CordappScanningDriverTest.kt
@@ -0,0 +1,54 @@
+package net.corda.node
+
+import co.paralleluniverse.fibers.Suspendable
+import com.google.common.util.concurrent.Futures
+import net.corda.core.flows.FlowLogic
+import net.corda.core.flows.InitiatedBy
+import net.corda.core.flows.InitiatingFlow
+import net.corda.core.flows.StartableByRPC
+import net.corda.core.getOrThrow
+import net.corda.core.identity.Party
+import net.corda.core.messaging.startFlow
+import net.corda.core.utilities.ALICE
+import net.corda.core.utilities.BOB
+import net.corda.core.utilities.unwrap
+import net.corda.node.services.startFlowPermission
+import net.corda.nodeapi.User
+import net.corda.testing.driver.driver
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.Test
+
+class CordappScanningDriverTest {
+ @Test
+ fun `sub-classed initiated flow pointing to the same initiating flow as its super-class`() {
+ val user = User("u", "p", setOf(startFlowPermission()))
+ // The driver will automatically pick up the annotated flows below
+ driver {
+ val (alice, bob) = Futures.allAsList(
+ startNode(ALICE.name, rpcUsers = listOf(user)),
+ startNode(BOB.name)).getOrThrow()
+ val initiatedFlowClass = alice.rpcClientToNode()
+ .start(user.username, user.password)
+ .proxy
+ .startFlow(::ReceiveFlow, bob.nodeInfo.legalIdentity)
+ .returnValue
+ assertThat(initiatedFlowClass.getOrThrow()).isEqualTo(SendSubClassFlow::class.java.name)
+ }
+ }
+
+ @StartableByRPC
+ @InitiatingFlow
+ class ReceiveFlow(val otherParty: Party) :FlowLogic() {
+ @Suspendable
+ override fun call(): String = receive(otherParty).unwrap { it }
+ }
+
+ @InitiatedBy(ReceiveFlow::class)
+ open class SendClassFlow(val otherParty: Party) : FlowLogic() {
+ @Suspendable
+ override fun call() = send(otherParty, javaClass.name)
+ }
+
+ @InitiatedBy(ReceiveFlow::class)
+ class SendSubClassFlow(otherParty: Party) : SendClassFlow(otherParty)
+}
diff --git a/node/src/integration-test/kotlin/net/corda/node/NodeStartupPerformanceTests.kt b/node/src/integration-test/kotlin/net/corda/node/NodeStartupPerformanceTests.kt
index 0c4d48600b..a6aef9b4fd 100644
--- a/node/src/integration-test/kotlin/net/corda/node/NodeStartupPerformanceTests.kt
+++ b/node/src/integration-test/kotlin/net/corda/node/NodeStartupPerformanceTests.kt
@@ -1,8 +1,8 @@
package net.corda.node
import com.google.common.base.Stopwatch
-import net.corda.node.driver.NetworkMapStartStrategy
-import net.corda.node.driver.driver
+import net.corda.testing.driver.NetworkMapStartStrategy
+import net.corda.testing.driver.driver
import org.junit.Ignore
import org.junit.Test
import java.util.*
diff --git a/node/src/integration-test/kotlin/net/corda/node/services/DistributedServiceTests.kt b/node/src/integration-test/kotlin/net/corda/node/services/DistributedServiceTests.kt
index 0766ba08e0..62f8b1fc04 100644
--- a/node/src/integration-test/kotlin/net/corda/node/services/DistributedServiceTests.kt
+++ b/node/src/integration-test/kotlin/net/corda/node/services/DistributedServiceTests.kt
@@ -14,8 +14,8 @@ import net.corda.core.utilities.ALICE
import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.CashIssueFlow
import net.corda.flows.CashPaymentFlow
-import net.corda.node.driver.NodeHandle
-import net.corda.node.driver.driver
+import net.corda.testing.driver.NodeHandle
+import net.corda.testing.driver.driver
import net.corda.node.services.transactions.RaftValidatingNotaryService
import net.corda.nodeapi.User
import net.corda.testing.expect
diff --git a/node/src/smoke-test/kotlin/net/corda/node/CordappScanningNodeProcessTest.kt b/node/src/smoke-test/kotlin/net/corda/node/CordappScanningNodeProcessTest.kt
new file mode 100644
index 0000000000..1aaeb038ef
--- /dev/null
+++ b/node/src/smoke-test/kotlin/net/corda/node/CordappScanningNodeProcessTest.kt
@@ -0,0 +1,52 @@
+package net.corda.node
+
+import net.corda.core.copyToDirectory
+import net.corda.core.createDirectories
+import net.corda.core.div
+import net.corda.core.utilities.ALICE
+import net.corda.nodeapi.User
+import net.corda.smoketesting.NodeConfig
+import net.corda.smoketesting.NodeProcess
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.Test
+import java.nio.file.Paths
+import java.util.concurrent.atomic.AtomicInteger
+
+class CordappScanningNodeProcessTest {
+ private companion object {
+ val user = User("user1", "test", permissions = setOf("ALL"))
+ val port = AtomicInteger(15100)
+ }
+
+ private val factory = NodeProcess.Factory()
+
+ private val aliceConfig = NodeConfig(
+ party = ALICE,
+ p2pPort = port.andIncrement,
+ rpcPort = port.andIncrement,
+ webPort = port.andIncrement,
+ extraServices = emptyList(),
+ users = listOf(user)
+ )
+
+ @Test
+ fun `CorDapp jar in plugins directory is scanned`() {
+ // If the CorDapp jar does't exist then run the smokeTestClasses gradle task
+ val cordappJar = Paths.get(javaClass.getResource("/trader-demo.jar").toURI())
+ val pluginsDir = (factory.baseDirectory(aliceConfig) / "plugins").createDirectories()
+ cordappJar.copyToDirectory(pluginsDir)
+
+ factory.create(aliceConfig).use {
+ it.connect().use {
+ // If the CorDapp wasn't scanned then SellerFlow won't have been picked up as an RPC flow
+ assertThat(it.proxy.registeredFlows()).contains("net.corda.traderdemo.flow.SellerFlow")
+ }
+ }
+ }
+
+ @Test
+ fun `empty plugins directory`() {
+ (factory.baseDirectory(aliceConfig) / "plugins").createDirectories()
+ factory.create(aliceConfig).close()
+ }
+}
diff --git a/node/src/smoke-test/kotlin/net/corda/node/CordappScanningTest.kt b/node/src/smoke-test/kotlin/net/corda/node/CordappScanningTest.kt
deleted file mode 100644
index 41f95a52e1..0000000000
--- a/node/src/smoke-test/kotlin/net/corda/node/CordappScanningTest.kt
+++ /dev/null
@@ -1,99 +0,0 @@
-package net.corda.node
-
-import co.paralleluniverse.fibers.Suspendable
-import com.google.common.util.concurrent.Futures
-import net.corda.core.copyToDirectory
-import net.corda.core.createDirectories
-import net.corda.core.div
-import net.corda.core.flows.FlowLogic
-import net.corda.core.flows.InitiatedBy
-import net.corda.core.flows.InitiatingFlow
-import net.corda.core.flows.StartableByRPC
-import net.corda.core.getOrThrow
-import net.corda.core.identity.Party
-import net.corda.core.messaging.startFlow
-import net.corda.core.utilities.ALICE
-import net.corda.core.utilities.BOB
-import net.corda.core.utilities.unwrap
-import net.corda.node.driver.driver
-import net.corda.node.services.startFlowPermission
-import net.corda.nodeapi.User
-import net.corda.smoketesting.NodeConfig
-import net.corda.smoketesting.NodeProcess
-import org.assertj.core.api.Assertions.assertThat
-import org.junit.Test
-import java.nio.file.Paths
-import java.util.concurrent.atomic.AtomicInteger
-
-class CordappScanningTest {
- private companion object {
- val user = User("user1", "test", permissions = setOf("ALL"))
- val port = AtomicInteger(15100)
- }
-
- private val factory = NodeProcess.Factory()
-
- private val aliceConfig = NodeConfig(
- party = ALICE,
- p2pPort = port.andIncrement,
- rpcPort = port.andIncrement,
- webPort = port.andIncrement,
- extraServices = emptyList(),
- users = listOf(user)
- )
-
- @Test
- fun `CorDapp jar in plugins directory is scanned`() {
- // If the CorDapp jar does't exist then run the smokeTestClasses gradle task
- val cordappJar = Paths.get(javaClass.getResource("/trader-demo.jar").toURI())
- val pluginsDir = (factory.baseDirectory(aliceConfig) / "plugins").createDirectories()
- cordappJar.copyToDirectory(pluginsDir)
-
- factory.create(aliceConfig).use {
- it.connect().use {
- // If the CorDapp wasn't scanned then SellerFlow won't have been picked up as an RPC flow
- assertThat(it.proxy.registeredFlows()).contains("net.corda.traderdemo.flow.SellerFlow")
- }
- }
- }
-
- @Test
- fun `empty plugins directory`() {
- (factory.baseDirectory(aliceConfig) / "plugins").createDirectories()
- factory.create(aliceConfig).close()
- }
-
- @Test
- fun `sub-classed initiated flow pointing to the same initiating flow as its super-class`() {
- val user = User("u", "p", setOf(startFlowPermission()))
- // We don't use the factory for this test because we want the node to pick up the annotated flows below. The driver
- // will do just that.
- driver {
- val (alice, bob) = Futures.allAsList(
- startNode(ALICE.name, rpcUsers = listOf(user)),
- startNode(BOB.name)).getOrThrow()
- val initiatedFlowClass = alice.rpcClientToNode()
- .start(user.username, user.password)
- .proxy
- .startFlow(::ReceiveFlow, bob.nodeInfo.legalIdentity)
- .returnValue
- assertThat(initiatedFlowClass.getOrThrow()).isEqualTo(SendSubClassFlow::class.java.name)
- }
- }
-
- @StartableByRPC
- @InitiatingFlow
- class ReceiveFlow(val otherParty: Party) : FlowLogic() {
- @Suspendable
- override fun call(): String = receive(otherParty).unwrap { it }
- }
-
- @InitiatedBy(ReceiveFlow::class)
- open class SendClassFlow(val otherParty: Party) : FlowLogic() {
- @Suspendable
- override fun call() = send(otherParty, javaClass.name)
- }
-
- @InitiatedBy(ReceiveFlow::class)
- class SendSubClassFlow(otherParty: Party) : SendClassFlow(otherParty)
-}
diff --git a/samples/attachment-demo/src/integration-test/kotlin/net/corda/attachmentdemo/AttachmentDemoTest.kt b/samples/attachment-demo/src/integration-test/kotlin/net/corda/attachmentdemo/AttachmentDemoTest.kt
index 0b9ca23c58..61f57c93b0 100644
--- a/samples/attachment-demo/src/integration-test/kotlin/net/corda/attachmentdemo/AttachmentDemoTest.kt
+++ b/samples/attachment-demo/src/integration-test/kotlin/net/corda/attachmentdemo/AttachmentDemoTest.kt
@@ -6,7 +6,7 @@ import net.corda.core.node.services.ServiceInfo
import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_NOTARY
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
diff --git a/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/AttachmentDemo.kt b/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/AttachmentDemo.kt
index f653e2b4c3..739bebc8f8 100644
--- a/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/AttachmentDemo.kt
+++ b/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/AttachmentDemo.kt
@@ -8,19 +8,19 @@ import net.corda.core.contracts.Contract
import net.corda.core.contracts.ContractState
import net.corda.core.contracts.TransactionForContract
import net.corda.core.contracts.TransactionType
-import net.corda.core.identity.Party
import net.corda.core.crypto.SecureHash
import net.corda.core.flows.FlowLogic
import net.corda.core.flows.StartableByRPC
import net.corda.core.getOrThrow
import net.corda.core.identity.AbstractParty
+import net.corda.core.identity.Party
import net.corda.core.messaging.CordaRPCOps
import net.corda.core.messaging.startTrackedFlow
import net.corda.core.sizedInputStreamAndHash
import net.corda.core.transactions.SignedTransaction
import net.corda.core.utilities.*
import net.corda.flows.FinalityFlow
-import net.corda.node.driver.poll
+import net.corda.testing.driver.poll
import java.io.InputStream
import java.net.HttpURLConnection
import java.net.URL
diff --git a/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/Main.kt b/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/Main.kt
index 9e7485eda3..bfd97e359a 100644
--- a/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/Main.kt
+++ b/samples/attachment-demo/src/main/kotlin/net/corda/attachmentdemo/Main.kt
@@ -5,9 +5,9 @@ import net.corda.core.node.services.ServiceInfo
import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_NOTARY
-import net.corda.node.driver.driver
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
+import net.corda.testing.driver.driver
/**
* This file is exclusively for being able to run your nodes through an IDE (as opposed to running deployNodes)
diff --git a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt
index dbd82ff985..2887b84435 100644
--- a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt
+++ b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaHttpAPITest.kt
@@ -5,7 +5,7 @@ import net.corda.bank.api.BankOfCordaClientApi
import net.corda.bank.api.BankOfCordaWebApi.IssueRequestParams
import net.corda.core.getOrThrow
import net.corda.core.node.services.ServiceInfo
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.testing.BOC
import org.junit.Test
diff --git a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaRPCClientTest.kt b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaRPCClientTest.kt
index 6a41c6546e..7609ce2bb9 100644
--- a/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaRPCClientTest.kt
+++ b/samples/bank-of-corda-demo/src/integration-test/kotlin/net/corda/bank/BankOfCordaRPCClientTest.kt
@@ -6,7 +6,7 @@ import net.corda.core.getOrThrow
import net.corda.core.messaging.startFlow
import net.corda.core.node.services.ServiceInfo
import net.corda.flows.IssuerFlow.IssuanceRequester
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
diff --git a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt
index e2608737e9..ce73534001 100644
--- a/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt
+++ b/samples/bank-of-corda-demo/src/main/kotlin/net/corda/bank/BankOfCordaDriver.kt
@@ -12,7 +12,7 @@ import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.CashExitFlow
import net.corda.flows.CashPaymentFlow
import net.corda.flows.IssuerFlow
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
diff --git a/samples/irs-demo/src/integration-test/kotlin/net/corda/irs/IRSDemoTest.kt b/samples/irs-demo/src/integration-test/kotlin/net/corda/irs/IRSDemoTest.kt
index 337311b1dc..cfe87d5761 100644
--- a/samples/irs-demo/src/integration-test/kotlin/net/corda/irs/IRSDemoTest.kt
+++ b/samples/irs-demo/src/integration-test/kotlin/net/corda/irs/IRSDemoTest.kt
@@ -13,7 +13,7 @@ import net.corda.irs.contract.InterestRateSwap
import net.corda.irs.utilities.postJson
import net.corda.irs.utilities.putJson
import net.corda.irs.utilities.uploadFile
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.config.FullNodeConfiguration
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
diff --git a/samples/irs-demo/src/main/kotlin/net/corda/irs/Main.kt b/samples/irs-demo/src/main/kotlin/net/corda/irs/Main.kt
index 7233173531..c229067712 100644
--- a/samples/irs-demo/src/main/kotlin/net/corda/irs/Main.kt
+++ b/samples/irs-demo/src/main/kotlin/net/corda/irs/Main.kt
@@ -7,8 +7,8 @@ import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.irs.api.NodeInterestRates
-import net.corda.node.driver.driver
import net.corda.node.services.transactions.SimpleNotaryService
+import net.corda.testing.driver.driver
/**
* This file is exclusively for being able to run your nodes through an IDE (as opposed to running deployNodes)
diff --git a/samples/notary-demo/src/main/kotlin/net/corda/demorun/DemoRunner.kt b/samples/notary-demo/src/main/kotlin/net/corda/demorun/DemoRunner.kt
index 9f67b21a0e..2521dbee01 100644
--- a/samples/notary-demo/src/main/kotlin/net/corda/demorun/DemoRunner.kt
+++ b/samples/notary-demo/src/main/kotlin/net/corda/demorun/DemoRunner.kt
@@ -1,10 +1,10 @@
package net.corda.demorun
-import net.corda.node.driver.NetworkMapStartStrategy
-import net.corda.node.driver.PortAllocation
-import net.corda.node.driver.driver
import net.corda.cordform.CordformDefinition
import net.corda.cordform.CordformNode
+import net.corda.testing.driver.NetworkMapStartStrategy
+import net.corda.testing.driver.PortAllocation
+import net.corda.testing.driver.driver
fun CordformDefinition.clean() {
System.err.println("Deleting: $driverDirectory")
diff --git a/samples/raft-notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt b/samples/raft-notary-demo/src/main/kotlin/net/corda/notarydemo/RaftNotaryCordform.kt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/samples/simm-valuation-demo/build.gradle b/samples/simm-valuation-demo/build.gradle
index 6aa9ee1434..7a82f32234 100644
--- a/samples/simm-valuation-demo/build.gradle
+++ b/samples/simm-valuation-demo/build.gradle
@@ -34,10 +34,9 @@ dependencies {
compile project(path: ":node:capsule", configuration: 'runtimeArtifacts')
compile project(path: ":webserver:webcapsule", configuration: 'runtimeArtifacts')
compile project(':core')
- compile project(':node')
compile project(':webserver')
compile project(':finance')
- testCompile project(':test-utils')
+ compile project(':test-utils')
// Javax is required for webapis
compile "org.glassfish.jersey.core:jersey-server:${jersey_version}"
diff --git a/samples/simm-valuation-demo/src/integration-test/kotlin/net/corda/vega/SimmValuationTest.kt b/samples/simm-valuation-demo/src/integration-test/kotlin/net/corda/vega/SimmValuationTest.kt
index f5f7bf8b36..171d373603 100644
--- a/samples/simm-valuation-demo/src/integration-test/kotlin/net/corda/vega/SimmValuationTest.kt
+++ b/samples/simm-valuation-demo/src/integration-test/kotlin/net/corda/vega/SimmValuationTest.kt
@@ -7,7 +7,7 @@ import net.corda.core.node.services.ServiceInfo
import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_NOTARY
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.testing.IntegrationTestCategory
import net.corda.testing.http.HttpApi
diff --git a/samples/simm-valuation-demo/src/main/kotlin/net/corda/vega/Main.kt b/samples/simm-valuation-demo/src/main/kotlin/net/corda/vega/Main.kt
index b774b782d4..869aecb4f9 100644
--- a/samples/simm-valuation-demo/src/main/kotlin/net/corda/vega/Main.kt
+++ b/samples/simm-valuation-demo/src/main/kotlin/net/corda/vega/Main.kt
@@ -7,7 +7,7 @@ import net.corda.core.node.services.ServiceInfo
import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_BANK_C
-import net.corda.node.driver.driver
+import net.corda.testing.driver.driver
import net.corda.node.services.transactions.SimpleNotaryService
/**
diff --git a/samples/trader-demo/src/integration-test/kotlin/net/corda/traderdemo/TraderDemoTest.kt b/samples/trader-demo/src/integration-test/kotlin/net/corda/traderdemo/TraderDemoTest.kt
index 348163a7bb..cc575dd8b1 100644
--- a/samples/trader-demo/src/integration-test/kotlin/net/corda/traderdemo/TraderDemoTest.kt
+++ b/samples/trader-demo/src/integration-test/kotlin/net/corda/traderdemo/TraderDemoTest.kt
@@ -10,7 +10,7 @@ import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.IssuerFlow
-import net.corda.node.driver.poll
+import net.corda.testing.driver.poll
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
diff --git a/samples/trader-demo/src/main/kotlin/net/corda/traderdemo/Main.kt b/samples/trader-demo/src/main/kotlin/net/corda/traderdemo/Main.kt
index 1660ae7bfa..5a0dc449c8 100644
--- a/samples/trader-demo/src/main/kotlin/net/corda/traderdemo/Main.kt
+++ b/samples/trader-demo/src/main/kotlin/net/corda/traderdemo/Main.kt
@@ -6,11 +6,11 @@ import net.corda.core.utilities.DUMMY_BANK_A
import net.corda.core.utilities.DUMMY_BANK_B
import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.IssuerFlow
-import net.corda.node.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
import net.corda.testing.BOC
+import net.corda.testing.driver.driver
/**
* This file is exclusively for being able to run your nodes through an IDE (as opposed to running deployNodes)
diff --git a/test-utils/build.gradle b/test-utils/build.gradle
index 0add7883d3..3c5e40f6fe 100644
--- a/test-utils/build.gradle
+++ b/test-utils/build.gradle
@@ -8,6 +8,22 @@ description 'Testing utilities for Corda'
configurations {
// we don't want isolated.jar in classPath, since we want to test jar being dynamically loaded as an attachment
runtime.exclude module: 'isolated'
+
+ integrationTestCompile.extendsFrom testCompile
+ integrationTestRuntime.extendsFrom testRuntime
+}
+
+sourceSets {
+ integrationTest {
+ kotlin {
+ compileClasspath += main.output + test.output
+ runtimeClasspath += main.output + test.output
+ srcDir file('src/integration-test/kotlin')
+ }
+ resources {
+ srcDir file('src/integration-test/resources')
+ }
+ }
}
dependencies {
@@ -32,6 +48,15 @@ dependencies {
// OkHTTP: Simple HTTP library.
compile "com.squareup.okhttp3:okhttp:$okhttp_version"
+
+ // Integration test helpers
+ integrationTestCompile "org.assertj:assertj-core:${assertj_version}"
+ integrationTestCompile "junit:junit:$junit_version"
+}
+
+task integrationTest(type: Test) {
+ testClassesDir = sourceSets.integrationTest.output.classesDir
+ classpath = sourceSets.integrationTest.runtimeClasspath
}
jar {
diff --git a/node/src/integration-test/kotlin/net/corda/node/driver/DriverTests.kt b/test-utils/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt
similarity index 98%
rename from node/src/integration-test/kotlin/net/corda/node/driver/DriverTests.kt
rename to test-utils/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt
index cd39098c83..c1c88866dc 100644
--- a/node/src/integration-test/kotlin/net/corda/node/driver/DriverTests.kt
+++ b/test-utils/src/integration-test/kotlin/net/corda/testing/driver/DriverTests.kt
@@ -1,4 +1,4 @@
-package net.corda.node.driver
+package net.corda.testing.driver
import com.google.common.util.concurrent.ListenableFuture
import net.corda.core.div
diff --git a/test-utils/src/main/kotlin/net/corda/testing/RPCDriver.kt b/test-utils/src/main/kotlin/net/corda/testing/RPCDriver.kt
index bbba3de89b..06c186ef5b 100644
--- a/test-utils/src/main/kotlin/net/corda/testing/RPCDriver.kt
+++ b/test-utils/src/main/kotlin/net/corda/testing/RPCDriver.kt
@@ -13,7 +13,6 @@ import net.corda.core.map
import net.corda.core.messaging.RPCOps
import net.corda.core.random63BitValue
import net.corda.core.utilities.ProcessUtilities
-import net.corda.node.driver.*
import net.corda.node.services.RPCUserService
import net.corda.node.services.messaging.ArtemisMessagingServer
import net.corda.node.services.messaging.RPCServer
@@ -22,6 +21,7 @@ import net.corda.nodeapi.ArtemisTcpTransport
import net.corda.nodeapi.ConnectionDirection
import net.corda.nodeapi.RPCApi
import net.corda.nodeapi.User
+import net.corda.testing.driver.*
import org.apache.activemq.artemis.api.core.SimpleString
import org.apache.activemq.artemis.api.core.TransportConfiguration
import org.apache.activemq.artemis.api.core.client.ActiveMQClient
diff --git a/node/src/main/kotlin/net/corda/node/driver/Driver.kt b/test-utils/src/main/kotlin/net/corda/testing/driver/Driver.kt
similarity index 99%
rename from node/src/main/kotlin/net/corda/node/driver/Driver.kt
rename to test-utils/src/main/kotlin/net/corda/testing/driver/Driver.kt
index d1f37bddfa..1f2b0c970c 100644
--- a/node/src/main/kotlin/net/corda/node/driver/Driver.kt
+++ b/test-utils/src/main/kotlin/net/corda/testing/driver/Driver.kt
@@ -1,6 +1,6 @@
@file:JvmName("Driver")
-package net.corda.node.driver
+package net.corda.testing.driver
import com.google.common.net.HostAndPort
import com.google.common.util.concurrent.*
@@ -14,7 +14,6 @@ import net.corda.core.crypto.X509Utilities
import net.corda.core.crypto.appendToCommonName
import net.corda.core.crypto.commonName
import net.corda.core.identity.Party
-import net.corda.core.identity.PartyAndCertificate
import net.corda.core.messaging.CordaRPCOps
import net.corda.core.node.NodeInfo
import net.corda.core.node.services.ServiceInfo
diff --git a/node/src/main/kotlin/net/corda/node/driver/NetworkMapStartStrategy.kt b/test-utils/src/main/kotlin/net/corda/testing/driver/NetworkMapStartStrategy.kt
similarity index 95%
rename from node/src/main/kotlin/net/corda/node/driver/NetworkMapStartStrategy.kt
rename to test-utils/src/main/kotlin/net/corda/testing/driver/NetworkMapStartStrategy.kt
index 218dfe5716..93a42686d4 100644
--- a/node/src/main/kotlin/net/corda/node/driver/NetworkMapStartStrategy.kt
+++ b/test-utils/src/main/kotlin/net/corda/testing/driver/NetworkMapStartStrategy.kt
@@ -1,4 +1,4 @@
-package net.corda.node.driver
+package net.corda.testing.driver
import com.google.common.net.HostAndPort
import net.corda.core.utilities.DUMMY_MAP
diff --git a/test-utils/src/main/kotlin/net/corda/testing/node/DriverBasedTest.kt b/test-utils/src/main/kotlin/net/corda/testing/node/DriverBasedTest.kt
index c2fe6d2048..6c9219dfb4 100644
--- a/test-utils/src/main/kotlin/net/corda/testing/node/DriverBasedTest.kt
+++ b/test-utils/src/main/kotlin/net/corda/testing/node/DriverBasedTest.kt
@@ -2,7 +2,7 @@ package net.corda.testing.node
import com.google.common.util.concurrent.SettableFuture
import net.corda.core.getOrThrow
-import net.corda.node.driver.DriverDSLExposedInterface
+import net.corda.testing.driver.DriverDSLExposedInterface
import org.junit.After
import org.junit.Before
import java.util.concurrent.CountDownLatch
diff --git a/test-utils/src/main/kotlin/net/corda/testing/node/NodeBasedTest.kt b/test-utils/src/main/kotlin/net/corda/testing/node/NodeBasedTest.kt
index 39da9a3a81..d5c934f05a 100644
--- a/test-utils/src/main/kotlin/net/corda/testing/node/NodeBasedTest.kt
+++ b/test-utils/src/main/kotlin/net/corda/testing/node/NodeBasedTest.kt
@@ -11,7 +11,6 @@ import net.corda.core.node.services.ServiceType
import net.corda.core.utilities.DUMMY_CA
import net.corda.core.utilities.DUMMY_MAP
import net.corda.core.utilities.WHITESPACE
-import net.corda.node.driver.addressMustNotBeBoundFuture
import net.corda.node.internal.Node
import net.corda.node.services.config.ConfigHelper
import net.corda.node.services.config.FullNodeConfiguration
@@ -22,6 +21,7 @@ import net.corda.node.utilities.ServiceIdentityGenerator
import net.corda.nodeapi.User
import net.corda.nodeapi.config.parseAs
import net.corda.testing.MOCK_VERSION_INFO
+import net.corda.testing.driver.addressMustNotBeBoundFuture
import net.corda.testing.getFreeLocalPorts
import org.apache.logging.log4j.Level
import org.bouncycastle.asn1.x500.X500Name
diff --git a/tools/explorer/build.gradle b/tools/explorer/build.gradle
index f3609ec2db..db26ec9f42 100644
--- a/tools/explorer/build.gradle
+++ b/tools/explorer/build.gradle
@@ -30,7 +30,7 @@ dependencies {
compile project(':core')
compile project(':client:jfx')
compile project(':client:mock')
- compile project(':node')
+ compile project(':test-utils')
compile project(':finance')
// Capsule is a library for building independently executable fat JARs.
diff --git a/tools/explorer/src/main/kotlin/net/corda/explorer/Main.kt b/tools/explorer/src/main/kotlin/net/corda/explorer/Main.kt
index 652f9a6aad..878ce3faa4 100644
--- a/tools/explorer/src/main/kotlin/net/corda/explorer/Main.kt
+++ b/tools/explorer/src/main/kotlin/net/corda/explorer/Main.kt
@@ -39,8 +39,8 @@ import net.corda.flows.CashFlowCommand
import net.corda.flows.CashIssueFlow
import net.corda.flows.CashPaymentFlow
import net.corda.flows.IssuerFlow.IssuanceRequester
-import net.corda.node.driver.PortAllocation
-import net.corda.node.driver.driver
+import net.corda.testing.driver.PortAllocation
+import net.corda.testing.driver.driver
import net.corda.node.services.startFlowPermission
import net.corda.node.services.transactions.SimpleNotaryService
import net.corda.nodeapi.User
diff --git a/tools/loadtest/build.gradle b/tools/loadtest/build.gradle
index 0539d7e2de..e824da01df 100644
--- a/tools/loadtest/build.gradle
+++ b/tools/loadtest/build.gradle
@@ -6,7 +6,7 @@ mainClassName = 'net.corda.loadtest.MainKt'
dependencies {
compile project(':client:mock')
compile project(':client:rpc')
- compile project(':node')
+ compile project(':test-utils')
// https://mvnrepository.com/artifact/com.jcraft/jsch
compile group: 'com.jcraft', name: 'jsch', version: '0.1.54'
diff --git a/tools/loadtest/src/main/kotlin/net/corda/loadtest/ConnectionManager.kt b/tools/loadtest/src/main/kotlin/net/corda/loadtest/ConnectionManager.kt
index bf46ebff5b..5e52deeb3b 100644
--- a/tools/loadtest/src/main/kotlin/net/corda/loadtest/ConnectionManager.kt
+++ b/tools/loadtest/src/main/kotlin/net/corda/loadtest/ConnectionManager.kt
@@ -8,7 +8,7 @@ import com.jcraft.jsch.agentproxy.usocket.JNAUSocketFactory
import net.corda.client.rpc.CordaRPCClient
import net.corda.client.rpc.CordaRPCConnection
import net.corda.core.messaging.CordaRPCOps
-import net.corda.node.driver.PortAllocation
+import net.corda.testing.driver.PortAllocation
import org.slf4j.LoggerFactory
import java.io.ByteArrayOutputStream
import java.io.Closeable
diff --git a/tools/loadtest/src/main/kotlin/net/corda/loadtest/LoadTest.kt b/tools/loadtest/src/main/kotlin/net/corda/loadtest/LoadTest.kt
index 9c96f46f70..1b1d386938 100644
--- a/tools/loadtest/src/main/kotlin/net/corda/loadtest/LoadTest.kt
+++ b/tools/loadtest/src/main/kotlin/net/corda/loadtest/LoadTest.kt
@@ -3,7 +3,7 @@ package net.corda.loadtest
import net.corda.client.mock.Generator
import net.corda.client.rpc.notUsed
import net.corda.core.crypto.toBase58String
-import net.corda.node.driver.PortAllocation
+import net.corda.testing.driver.PortAllocation
import net.corda.node.services.network.NetworkMapService
import org.slf4j.LoggerFactory
import java.util.*
diff --git a/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierDriver.kt b/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierDriver.kt
index 5c255c0cfe..7713b6b745 100644
--- a/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierDriver.kt
+++ b/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierDriver.kt
@@ -15,7 +15,6 @@ import net.corda.core.random63BitValue
import net.corda.core.transactions.LedgerTransaction
import net.corda.core.utilities.ProcessUtilities
import net.corda.core.utilities.loggerFor
-import net.corda.node.driver.*
import net.corda.node.services.config.configureDevKeyAndTrustStores
import net.corda.nodeapi.ArtemisMessagingComponent.Companion.NODE_USER
import net.corda.nodeapi.ArtemisTcpTransport
@@ -23,6 +22,7 @@ import net.corda.nodeapi.ConnectionDirection
import net.corda.nodeapi.VerifierApi
import net.corda.nodeapi.config.NodeSSLConfiguration
import net.corda.nodeapi.config.SSLConfiguration
+import net.corda.testing.driver.*
import org.apache.activemq.artemis.api.core.SimpleString
import org.apache.activemq.artemis.api.core.client.ActiveMQClient
import org.apache.activemq.artemis.api.core.client.ClientProducer
diff --git a/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierTests.kt b/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierTests.kt
index 7000c6b7c1..3ab800aaae 100644
--- a/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierTests.kt
+++ b/verifier/src/integration-test/kotlin/net/corda/verifier/VerifierTests.kt
@@ -13,7 +13,7 @@ import net.corda.core.utilities.ALICE
import net.corda.core.utilities.DUMMY_NOTARY
import net.corda.flows.CashIssueFlow
import net.corda.flows.CashPaymentFlow
-import net.corda.node.driver.NetworkMapStartStrategy
+import net.corda.testing.driver.NetworkMapStartStrategy
import net.corda.node.services.config.VerifierType
import net.corda.node.services.transactions.ValidatingNotaryService
import org.junit.Test
diff --git a/webserver/build.gradle b/webserver/build.gradle
index 7fe68cfbe2..dc2e70e676 100644
--- a/webserver/build.gradle
+++ b/webserver/build.gradle
@@ -33,7 +33,6 @@ dependencies {
compile project(':finance')
compile project(':client:rpc')
compile project(':client:jackson')
- testCompile project(':node')
// Web stuff: for HTTP[S] servlets
compile "org.eclipse.jetty:jetty-servlet:$jetty_version"
@@ -58,6 +57,7 @@ dependencies {
// For rendering the index page.
compile "org.jetbrains.kotlinx:kotlinx-html-jvm:0.6.3"
+ testCompile project(':test-utils')
testCompile "junit:junit:$junit_version"
}
diff --git a/webserver/src/integration-test/kotlin/net/corda/webserver/WebserverDriverTests.kt b/webserver/src/integration-test/kotlin/net/corda/webserver/WebserverDriverTests.kt
index 7dad7ecae1..dbbab3e2df 100644
--- a/webserver/src/integration-test/kotlin/net/corda/webserver/WebserverDriverTests.kt
+++ b/webserver/src/integration-test/kotlin/net/corda/webserver/WebserverDriverTests.kt
@@ -3,16 +3,17 @@ package net.corda.webserver
import com.google.common.net.HostAndPort
import net.corda.core.getOrThrow
import net.corda.core.utilities.DUMMY_BANK_A
-import net.corda.node.driver.WebserverHandle
-import net.corda.node.driver.addressMustBeBound
-import net.corda.node.driver.addressMustNotBeBound
-import net.corda.node.driver.driver
+import net.corda.testing.driver.WebserverHandle
+import net.corda.testing.driver.addressMustBeBound
+import net.corda.testing.driver.addressMustNotBeBound
+import net.corda.testing.driver.driver
import org.junit.Test
import java.util.concurrent.Executors
+import java.util.concurrent.ScheduledExecutorService
class DriverTests {
companion object {
- val executorService = Executors.newScheduledThreadPool(2)
+ val executorService: ScheduledExecutorService = Executors.newScheduledThreadPool(2)
fun webserverMustBeUp(webserverHandle: WebserverHandle) {
addressMustBeBound(executorService, webserverHandle.listenAddress, webserverHandle.process)