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 }