Skip to content

Commit 4f03e95

Browse files
Fixed failing integration tests.
1 parent c5a83a6 commit 4f03e95

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

onixlabs-corda-identity-framework-integration/src/test/kotlin/io/onixlabs/corda/identityframework/integration/AttestationIntegrationTests.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,14 @@ class AttestationIntegrationTests : IntegrationTest() {
6868
} ?: fail("Failed to find amended attestation.")
6969

7070
// Publish the amended attestation
71-
nodeA.attestationService.publishAttestation(
71+
val tx = nodeA.attestationService.publishAttestation(
7272
attestation = amendedAttestation,
7373
observers = setOf(partyB)
7474
).returnValue.getOrThrow()
7575

7676
// Find the published attestation
7777
listOf(nodeA, nodeB, nodeC).forEach {
78+
it.waitForTransaction(tx.id)
7879
it.rpc.vaultServiceFor<Attestation<CordaClaim<String>>>().singleOrNull {
7980
expression(AttestationSchema.AttestationEntity::pointerStateRef equalTo issuedClaim.ref.toString())
8081
} ?: fail("Failed to find published attestation.")

onixlabs-corda-identity-framework-integration/src/test/kotlin/io/onixlabs/corda/identityframework/integration/ClaimIntegrationTests.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,14 @@ class ClaimIntegrationTests : IntegrationTest() {
5353
} ?: fail("Failed to find amended claim.")
5454

5555
// Publish the amended claim
56-
nodeA.claimService.publishClaim(
56+
val tx = nodeA.claimService.publishClaim(
5757
claim = amendedClaim,
5858
observers = setOf(partyB, partyC)
5959
).returnValue.getOrThrow()
6060

6161
// Find the published claim
6262
listOf(nodeA, nodeB, nodeC).forEach {
63+
it.waitForTransaction(tx.id)
6364
it.rpc.vaultServiceFor<CordaClaim<String>>().singleOrNull {
6465
linearIds(ID)
6566
} ?: fail("Failed to find sent claim.")

onixlabs-corda-identity-framework-integration/src/test/kotlin/io/onixlabs/corda/identityframework/integration/Extensions.NodeHandle.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,20 @@
1616

1717
package io.onixlabs.corda.identityframework.integration
1818

19+
import net.corda.core.crypto.SecureHash
1920
import net.corda.testing.driver.NodeHandle
2021

2122
val NodeHandle.claimService: ClaimService get() = ClaimService(rpc)
22-
val NodeHandle.attestationService: AttestationService get() = AttestationService(rpc)
23+
val NodeHandle.attestationService: AttestationService get() = AttestationService(rpc)
24+
25+
/**
26+
* Sometimes, integration tests cause race conditions, whereby a vault query begins executing before the database
27+
* has persisted new states, thus causing the tests to fail. This function, albeit hacky ensures that a transaction
28+
* has been recorded before performing vault queries, thus reducing the likeliness of a test failure due to a race
29+
* condition.
30+
*/
31+
fun NodeHandle.waitForTransaction(id: SecureHash, millisecondsToSleep: Long = 100) {
32+
while (id !in rpc.stateMachineRecordedTransactionMappingSnapshot().map { it.transactionId }) {
33+
Thread.sleep(millisecondsToSleep)
34+
}
35+
}

0 commit comments

Comments
 (0)