From 3647a10aa5c5f1e00f7aa6cf075e505f18a2d478 Mon Sep 17 00:00:00 2001 From: Christian Sailer Date: Wed, 25 Jul 2018 18:09:04 +0100 Subject: [PATCH] notary healthcheck improvements (#1298) * Use correct asserts in unit tests * gradle tweaks * Remove unneeded imports * Minor code review changes * Use version var --- tools/notary-healthcheck/client/build.gradle | 8 ++--- .../notary-healthcheck/contract/build.gradle | 1 - tools/notary-healthcheck/cordapp/build.gradle | 3 +- .../notaryhealthcheck/TestNotaryTypes.kt | 18 +++++++----- .../TestCheckScheduleManagementFlow.kt | 24 ++++++++------- .../cordapp/TestScheduleCheckFlow.kt | 29 ++++++++++--------- 6 files changed, 43 insertions(+), 40 deletions(-) diff --git a/tools/notary-healthcheck/client/build.gradle b/tools/notary-healthcheck/client/build.gradle index c4775f22e2..303bc4d4fe 100644 --- a/tools/notary-healthcheck/client/build.gradle +++ b/tools/notary-healthcheck/client/build.gradle @@ -11,7 +11,6 @@ repositories { mavenCentral() jcenter() - maven { url 'https://jitpack.io' } mavenLocal() } @@ -29,9 +28,8 @@ mainClassName = 'net.corda.notaryhealthcheck.client.MainKt' dependencies { compile project(":client:rpc") - runtime project(":core") testCompile "junit:junit:$junit_version" - compile group: 'info.picocli', name: 'picocli', version: '3.0.1' + compile "info.picocli:picocli:$picocli_version" compile project(":tools:notary-healthcheck:cordapp") } @@ -43,7 +41,7 @@ jar { task buildClientJar(type: FatCapsule) { applicationClass mainClassName - archiveName "notaryhealthcheck-client-${corda_release_version}.jar" + baseName "notaryhealthcheck-client" applicationSource = jar } @@ -58,3 +56,5 @@ publish { disableDefaultJar = true name "corda-notary-healthcheck-client" } + +assemble.dependsOn buildClientJar \ No newline at end of file diff --git a/tools/notary-healthcheck/contract/build.gradle b/tools/notary-healthcheck/contract/build.gradle index e9545c120d..88b0f5815f 100644 --- a/tools/notary-healthcheck/contract/build.gradle +++ b/tools/notary-healthcheck/contract/build.gradle @@ -11,7 +11,6 @@ repositories { mavenCentral() jcenter() - maven { url 'https://jitpack.io' } mavenLocal() } diff --git a/tools/notary-healthcheck/cordapp/build.gradle b/tools/notary-healthcheck/cordapp/build.gradle index b1c3737906..e7094800b8 100644 --- a/tools/notary-healthcheck/cordapp/build.gradle +++ b/tools/notary-healthcheck/cordapp/build.gradle @@ -26,12 +26,11 @@ sourceSets { dependencies { cordaCompile project(":node") // Not node-api so we get metrics. - cordaCompile project(":tools:notary-healthcheck:contract") + cordapp project(":tools:notary-healthcheck:contract") testCompile project(":node-driver") } configurations { - testArtifacts.extendsFrom testRuntime integrationTestCompile.extendsFrom testCompile integrationTestRuntime.extendsFrom testRuntime } diff --git a/tools/notary-healthcheck/cordapp/src/integration-test/kotlin/net/corda/notaryhealthcheck/TestNotaryTypes.kt b/tools/notary-healthcheck/cordapp/src/integration-test/kotlin/net/corda/notaryhealthcheck/TestNotaryTypes.kt index 7354480594..2609a4af9b 100644 --- a/tools/notary-healthcheck/cordapp/src/integration-test/kotlin/net/corda/notaryhealthcheck/TestNotaryTypes.kt +++ b/tools/notary-healthcheck/cordapp/src/integration-test/kotlin/net/corda/notaryhealthcheck/TestNotaryTypes.kt @@ -28,6 +28,8 @@ import net.corda.testing.node.internal.DummyClusterSpec import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized +import kotlin.test.assertEquals +import kotlin.test.assertTrue @RunWith(Parameterized::class) class TestNotaryTypes(val validating: Boolean, @Suppress("UNUSED_PARAMETER") description: String) { @@ -54,14 +56,14 @@ class TestNotaryTypes(val validating: Boolean, @Suppress("UNUSED_PARAMETER") des nodeA.rpc.startFlow(::StartAllChecksFlow, 2, 5).returnValue.getOrThrow() Thread.sleep(5.seconds.toMillis()) val pendingStates = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = ScheduledCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(pendingStates.size == 4) + assertEquals(4, pendingStates.size) val successStates = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = SuccessfulCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(successStates.size > 7) { "Expecting at least 8 successful checks by now, got ${successStates.size}" } + assertTrue(successStates.size > 7, "Expecting at least 8 successful checks by now, got ${successStates.size}") val failStates = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = FailedCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(failStates.isEmpty()) { "Did not expect any checks to fail, got ${failStates.size}" } + assertTrue(failStates.isEmpty(), "Did not expect any checks to fail, got ${failStates.size}") nodeA.rpc.startFlow(::StopAllChecksFlow).returnValue.getOrThrow() val pendingStatesAfterClean = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = ScheduledCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(pendingStatesAfterClean.isEmpty()) { "Expected all pending states to be cleared, got ${pendingStatesAfterClean.size}" } + assertTrue(pendingStatesAfterClean.isEmpty(), "Expected all pending states to be cleared, got ${pendingStatesAfterClean.size}") } } @@ -80,14 +82,14 @@ class TestNotaryTypes(val validating: Boolean, @Suppress("UNUSED_PARAMETER") des nodeA.rpc.startFlow(::StartAllChecksFlow, 2, 5).returnValue.getOrThrow() Thread.sleep(5.seconds.toMillis()) val pendingStates = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = ScheduledCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(pendingStates.size == 1) + assertEquals(1, pendingStates.size) val successStates = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = SuccessfulCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(successStates.size > 1) { "Expecting at least 2 successful checks by now, got ${successStates.size}" } + assertTrue(successStates.size > 1, "Expecting at least 2 successful checks by now, got ${successStates.size}") val failStates = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = FailedCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(failStates.isEmpty()) { "Did not expect any checks to fail, got ${failStates.size}" } + assertTrue(failStates.isEmpty(), "Did not expect any checks to fail, got ${failStates.size}") nodeA.rpc.startFlow(::StopAllChecksFlow).returnValue.getOrThrow() val pendingStatesAfterClean = nodeA.rpc.vaultQueryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED), contractStateType = ScheduledCheckState::class.java, paging = PageSpecification(1, 100), sorting = Sort(columns = emptyList())).states - assert(pendingStatesAfterClean.isEmpty()) { "Expected all pending states to be cleared, got ${pendingStatesAfterClean.size}" } + assertTrue(pendingStatesAfterClean.isEmpty(), "Expected all pending states to be cleared, got ${pendingStatesAfterClean.size}") } } diff --git a/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestCheckScheduleManagementFlow.kt b/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestCheckScheduleManagementFlow.kt index bde8ecd46e..6ebfd3a589 100644 --- a/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestCheckScheduleManagementFlow.kt +++ b/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestCheckScheduleManagementFlow.kt @@ -36,6 +36,8 @@ import org.junit.Before import org.junit.Test import java.lang.Thread.sleep import java.time.Instant +import kotlin.test.assertEquals +import kotlin.test.assertTrue class TestCheckScheduleManagementFlow { private lateinit var mockNet: MockNetwork @@ -70,10 +72,10 @@ class TestCheckScheduleManagementFlow { Thread.sleep(4.seconds.toMillis()) nodeA.transaction { val successfulChecks = nodeA.services.vaultService.queryBy() - assert(successfulChecks.states.size > 4) { "Expected at least 3 successful checks per notary by now, got ${successfulChecks.states.size}" } + assertTrue { successfulChecks.states.size > 4 } val pendingChecks = nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) - assert(pendingChecks.states.size == 2) { "Expected exactly 2 pending (scheduled) checks, got ${pendingChecks.states.size}" } + assertEquals(2, pendingChecks.states.size, "Expected exactly 2 pending (scheduled) checks, got ${pendingChecks.states.size}") } nodeA.startFlow(StopCheckScheduleFlow(target)).get() @@ -81,7 +83,7 @@ class TestCheckScheduleManagementFlow { val pendingChecksAfterCleanUp = nodeA.transaction { nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) } - assert(pendingChecksAfterCleanUp.states.size == 1) { "Expected 1 pending check to be removed, got ${pendingChecksAfterCleanUp.states.size}" } + assertEquals(1, pendingChecksAfterCleanUp.states.size, "Expected 1 pending check to be removed, got ${pendingChecksAfterCleanUp.states.size}") } @@ -93,10 +95,10 @@ class TestCheckScheduleManagementFlow { Thread.sleep(4.seconds.toMillis()) nodeA.transaction { val successfulChecks = nodeA.services.vaultService.queryBy() - assert(successfulChecks.states.size > 3) { "Expected at least 2 successful checks per notary by now, got ${successfulChecks.states.size}" } + assertTrue(successfulChecks.states.size > 3, "Expected at least 2 successful checks per notary by now, got ${successfulChecks.states.size}") val pendingChecks = nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) - assert(pendingChecks.states.size == 2) { "Expected exactly 2 pending (scheduled) checks, got ${pendingChecks.states.size}" } + assertEquals(2, pendingChecks.states.size, "Expected exactly 2 pending (scheduled) checks, got ${pendingChecks.states.size}") } nodeA.startFlow(StopCheckScheduleFlow(target)).get() @@ -104,7 +106,7 @@ class TestCheckScheduleManagementFlow { val pendingChecksAfterCleanUp = nodeA.transaction { nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) } - assert(pendingChecksAfterCleanUp.states.isEmpty()) { "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}" } + assertTrue(pendingChecksAfterCleanUp.states.isEmpty(), "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}") } @Test @@ -113,13 +115,13 @@ class TestCheckScheduleManagementFlow { sleep(1.seconds.toMillis()) nodeA.transaction { val pendingChecks = nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) - assert(pendingChecks.states.size == 2) { "Expected exactly 2 pending (scheduled) checks, got ${pendingChecks.states.size}" } + assertEquals(2, pendingChecks.states.size, "Expected exactly 2 pending (scheduled) checks, got ${pendingChecks.states.size}") } nodeA.startFlow(StopAllChecksFlow()).getOrThrow() val pendingChecksAfterCleanUp = nodeA.transaction { nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) } - assert(pendingChecksAfterCleanUp.states.isEmpty()) { "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}" } + assertTrue(pendingChecksAfterCleanUp.states.isEmpty(), "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}") } @Test @@ -167,9 +169,9 @@ class TestCheckScheduleManagementFlow { } val targets = getTargets(networkMap) - assert(targets.size == 4) { "Expected 4 targets. got ${targets.size}" } - assert(notaries.all { it in targets.map { it.party } }) - assert(notary2Parties.all { it in targets.map { it.party } }) + assertEquals(4, targets.size, "Expected 4 targets. got ${targets.size}") + assertTrue(notaries.all { it in targets.map { it.party } }) + assertTrue(notary2Parties.all { it in targets.map { it.party } }) } } \ No newline at end of file diff --git a/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestScheduleCheckFlow.kt b/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestScheduleCheckFlow.kt index 4d96e64aae..e00e721fb7 100644 --- a/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestScheduleCheckFlow.kt +++ b/tools/notary-healthcheck/cordapp/src/test/kotlin/net/corda/notaryhealthcheck/cordapp/TestScheduleCheckFlow.kt @@ -24,6 +24,7 @@ import org.junit.Before import org.junit.Test import java.time.Instant import kotlin.test.assertEquals +import kotlin.test.assertTrue class TestScheduleCheckFlow { @@ -57,12 +58,12 @@ class TestScheduleCheckFlow { val successfulChecks = nodeA.services.vaultService.queryBy() val pendingChecks = nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) - assert(successfulChecks.states.size > 1) { "Expected at least 2 successful checks by now, got ${successfulChecks.states.size}" } + assertTrue(successfulChecks.states.size > 1, "Expected at least 2 successful checks by now, got ${successfulChecks.states.size}") // sort all successful states, get the second to last one and take it's finish time - that will be the last recorded success. The last one will be // handled the next time the scheduled state is run as it was started in the last run and finished after scheduling // the current pending state. val lastSuccessTime = successfulChecks.states.map { it.state.data.finishTime }.sorted().dropLast(1).last() - assert(pendingChecks.states.size == 1) { "Expected exactly 1 pending (scheduled check), got ${pendingChecks.states.size}" } + assertEquals(1, pendingChecks.states.size, "Expected exactly 1 pending (scheduled check), got ${pendingChecks.states.size}") assertEquals(lastSuccessTime, pendingChecks.states.first().state.data.lastSuccessTime) } @@ -71,7 +72,7 @@ class TestScheduleCheckFlow { val pendingChecksAfterCleanUp = nodeA.transaction { nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) } - assert(pendingChecksAfterCleanUp.states.isEmpty()) { "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}" } + assertTrue(pendingChecksAfterCleanUp.states.isEmpty(), "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}") } @@ -84,23 +85,23 @@ class TestScheduleCheckFlow { Thread.sleep(5.seconds.toMillis()) nodeA.transaction { val successfulChecks = nodeA.services.vaultService.queryBy() - assert(successfulChecks.states.isEmpty()) { "Not expecting any successful checks, got ${successfulChecks.states.size}" } + assertTrue(successfulChecks.states.isEmpty(), "Not expecting any successful checks, got ${successfulChecks.states.size}") val startedChecks = nodeA.services.vaultService.queryBy() - assert(startedChecks.states.size > 1) { "Expected at least 2 started/running checks by now, got ${startedChecks.states.size}" } + assertTrue(startedChecks.states.size > 1, "Expected at least 2 started/running checks by now, got ${startedChecks.states.size}") val abandonnedStates = nodeA.services.vaultService.queryBy() - assert(abandonnedStates.states.size > 1) { "Expected at least 1 abandonned check by now, got ${abandonnedStates.states.size}" } + assertTrue(abandonnedStates.states.size > 1, "Expected at least 1 abandonned check by now, got ${abandonnedStates.states.size}") val scheduledStates = nodeA.services.vaultService.queryBy() - assert(scheduledStates.states.size == 1) { "Expected exactly 1 pending (scheduled check), got ${scheduledStates.states.size}" } + assertEquals(1, scheduledStates.states.size, "Expected exactly 1 pending (scheduled check), got ${scheduledStates.states.size}") } nodeA.startFlow(StopAllChecksFlow()).get() val pendingChecksAfterCleanUp = nodeA.transaction { nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) } - assert(pendingChecksAfterCleanUp.states.isEmpty()) { "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}" } + assertTrue(pendingChecksAfterCleanUp.states.isEmpty(), "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}") } @Test @@ -114,23 +115,23 @@ class TestScheduleCheckFlow { nodeA.transaction { val successfulChecks = nodeA.services.vaultService.queryBy() - assert(successfulChecks.states.isEmpty()) { "Not expecting any successful checks, got ${successfulChecks.states.size}" } + assertTrue(successfulChecks.states.isEmpty(), "Not expecting any successful checks, got ${successfulChecks.states.size}") val failedStates = nodeA.services.vaultService.queryBy() - assert(failedStates.states.size > 1) { "Expected at least 2 failed checks by now, got ${failedStates.states.size}" } + assertTrue(failedStates.states.size > 1, "Expected at least 2 failed checks by now, got ${failedStates.states.size}") val abandonnedStates = nodeA.services.vaultService.queryBy() - assert(abandonnedStates.states.isEmpty()) { "Not expecting any abandonned checks, got ${abandonnedStates.states.size}" } + assertTrue(abandonnedStates.states.isEmpty(), "Not expecting any abandonned checks, got ${abandonnedStates.states.size}") val scheduledStates = nodeA.services.vaultService.queryBy() - assert(scheduledStates.states.size == 1) { "Expected exactly 1 pending (scheduled check), got ${scheduledStates.states.size}" } - assert(scheduledStates.states.first().state.data.lastSuccessTime == lastSuccessTime) + assertEquals(1, scheduledStates.states.size, "Expected exactly 1 pending (scheduled check), got ${scheduledStates.states.size}") + assertEquals(lastSuccessTime, scheduledStates.states.first().state.data.lastSuccessTime) } nodeA.startFlow(StopAllChecksFlow()) Thread.sleep(1.seconds.toMillis()) val pendingChecksAfterCleanUp = nodeA.transaction { nodeA.services.vaultService.queryBy(criteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED)) } - assert(pendingChecksAfterCleanUp.states.isEmpty()) { "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}" } + assertTrue(pendingChecksAfterCleanUp.states.isEmpty(), "Expected all pending checks to be removed, got ${pendingChecksAfterCleanUp.states.size}") } } \ No newline at end of file