diff --git a/.idea/modules.xml b/.idea/modules.xml
index df2780c199..5517a9dc4a 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -6,6 +6,7 @@
+
@@ -21,6 +22,7 @@
+
diff --git a/build.gradle b/build.gradle
index 5a00ee8697..b2215b4c97 100644
--- a/build.gradle
+++ b/build.gradle
@@ -158,11 +158,10 @@ tasks.withType(CreateStartScripts) {
}
}
-task integrationTest(type: Test) {
+task integrationTest(type: Test, dependsOn: [':node:integrationTest',':client:integrationTest']) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
-test.finalizedBy(integrationTest)
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
diff --git a/client/build.gradle b/client/build.gradle
index 57ad2c4316..24cb5042d6 100644
--- a/client/build.gradle
+++ b/client/build.gradle
@@ -19,9 +19,19 @@ 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')
+ }
+ }
test {
resources {
srcDir "../config/test"
@@ -50,6 +60,14 @@ dependencies {
testCompile "org.assertj:assertj-core:${assertj_version}"
testCompile project(':test-utils')
+
+ // Integration test helpers
+ integrationTestCompile 'junit:junit:4.12'
}
quasarScan.dependsOn('classes', ':core:classes', ':contracts:classes')
+
+task integrationTest(type: Test) {
+ testClassesDir = sourceSets.integrationTest.output.classesDir
+ classpath = sourceSets.integrationTest.runtimeClasspath
+}
\ No newline at end of file
diff --git a/client/src/test/kotlin/com/r3corda/client/WalletMonitorClientTests.kt b/client/src/integration-test/kotlin/com/r3corda/client/WalletMonitorClientTests.kt
similarity index 100%
rename from client/src/test/kotlin/com/r3corda/client/WalletMonitorClientTests.kt
rename to client/src/integration-test/kotlin/com/r3corda/client/WalletMonitorClientTests.kt
diff --git a/node/build.gradle b/node/build.gradle
index 0a99bcdd5a..bba3a47451 100644
--- a/node/build.gradle
+++ b/node/build.gradle
@@ -19,9 +19,19 @@ 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')
+ }
+ }
test {
resources {
srcDir "../config/test"
@@ -119,6 +129,14 @@ dependencies {
// SQL connection pooling library
compile "com.zaxxer:HikariCP:2.4.7"
+
+ // Integration test helpers
+ integrationTestCompile 'junit:junit:4.12'
}
quasarScan.dependsOn('classes', ':core:classes', ':contracts:classes')
+
+task integrationTest(type: Test) {
+ testClassesDir = sourceSets.integrationTest.output.classesDir
+ classpath = sourceSets.integrationTest.runtimeClasspath
+}
\ No newline at end of file
diff --git a/node/src/test/kotlin/com/r3corda/node/driver/DriverTests.kt b/node/src/integration-test/kotlin/com/r3corda/node/driver/DriverTests.kt
similarity index 100%
rename from node/src/test/kotlin/com/r3corda/node/driver/DriverTests.kt
rename to node/src/integration-test/kotlin/com/r3corda/node/driver/DriverTests.kt
diff --git a/node/src/main/kotlin/com/r3corda/node/services/messaging/ArtemisMessagingComponent.kt b/node/src/main/kotlin/com/r3corda/node/services/messaging/ArtemisMessagingComponent.kt
index dda497d869..b57a0b6478 100644
--- a/node/src/main/kotlin/com/r3corda/node/services/messaging/ArtemisMessagingComponent.kt
+++ b/node/src/main/kotlin/com/r3corda/node/services/messaging/ArtemisMessagingComponent.kt
@@ -1,5 +1,6 @@
package com.r3corda.node.services.messaging
+import com.google.common.annotations.VisibleForTesting
import com.google.common.net.HostAndPort
import com.r3corda.core.crypto.X509Utilities
import com.r3corda.core.crypto.parsePublicKeyBase58
@@ -40,7 +41,8 @@ abstract class ArtemisMessagingComponent(val directory: Path, val config: NodeCo
* N.B. Marked as JvmStatic to allow use in the inherited classes.
*/
@JvmStatic
- internal fun toHostAndPort(target: MessageRecipients): HostAndPort {
+ @VisibleForTesting
+ fun toHostAndPort(target: MessageRecipients): HostAndPort {
val addr = target as? ArtemisMessagingComponent.ArtemisAddress ?: throw IllegalArgumentException("Not an Artemis address")
return addr.hostAndPort
}