From dce41636bd5b009d35245f8891bd7634e0d15bc7 Mon Sep 17 00:00:00 2001 From: Nana-EC <56320167+Nana-EC@users.noreply.github.com> Date: Thu, 8 Jul 2021 14:47:01 -0500 Subject: [PATCH] Add resilience and account checksum support (#2253) Acceptance tests occasionally get tripped up on receipt issues. e.g. `AbstractNetworkClient Executed transaction 0.0.950-gdccm@1625765044.706778777 with 1 signatures` Additionally the SDK has support for checksum but the Mirrornode does not Add receipt status exception to retry list Add support for removing checksum from transaction id prior to calling mirror node Signed-off-by: Nana-EC --- .../test/e2e/acceptance/config/ClientConfiguration.java | 4 +++- .../acceptance/response/NetworkTransactionResponse.java | 7 +++++++ .../mirror/test/e2e/acceptance/steps/ScheduleFeature.java | 2 +- .../mirror/test/e2e/acceptance/steps/TokenFeature.java | 4 ++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/config/ClientConfiguration.java b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/config/ClientConfiguration.java index a82f2a14e00..368a1c40a64 100644 --- a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/config/ClientConfiguration.java +++ b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/config/ClientConfiguration.java @@ -47,6 +47,7 @@ import reactor.netty.tcp.TcpClient; import com.hedera.hashgraph.sdk.PrecheckStatusException; +import com.hedera.hashgraph.sdk.ReceiptStatusException; @Configuration @RequiredArgsConstructor @@ -63,7 +64,8 @@ RetryTemplate retryTemplate() { Map retryableExceptionMap = Map.of( PrecheckStatusException.class, true, TimeoutException.class, true, - RuntimeException.class, true); // make configurable + RuntimeException.class, true, + ReceiptStatusException.class, true); // make configurable SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy( acceptanceTestProperties.getMaxRetries(), retryableExceptionMap, diff --git a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/response/NetworkTransactionResponse.java b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/response/NetworkTransactionResponse.java index 2b18bbe165b..3cd9d642b57 100644 --- a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/response/NetworkTransactionResponse.java +++ b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/response/NetworkTransactionResponse.java @@ -36,6 +36,13 @@ public String getTransactionIdString() { .getEpochSecond() + "-" + getPaddedNanos(); } + // interim function until mirror node supports checksum + public String getTransactionIdStringNoCheckSum() { + String accountIdString = transactionId.accountId.toString().split("-")[0]; + return accountIdString + "-" + transactionId.validStart + .getEpochSecond() + "-" + getPaddedNanos(); + } + public String getValidStartString() { // left pad nanos with zeros where applicable diff --git a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/ScheduleFeature.java b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/ScheduleFeature.java index 6193962807a..e6e7b5ab8a3 100644 --- a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/ScheduleFeature.java +++ b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/ScheduleFeature.java @@ -305,7 +305,7 @@ public void verifyPartialScheduleFromNetwork() throws Exception { @Then("the mirror node REST API should return status {int} for the schedule transaction") public void verifyMirrorAPIResponses(int status) { log.info("Verify schedule transaction"); - String transactionId = networkTransactionResponse.getTransactionIdString(); + String transactionId = networkTransactionResponse.getTransactionIdStringNoCheckSum(); MirrorTransactionsResponse mirrorTransactionsResponse = mirrorClient.getTransactions(transactionId); MirrorTransaction mirrorTransaction = verifyMirrorTransactionsResponse(mirrorTransactionsResponse, status); diff --git a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/TokenFeature.java b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/TokenFeature.java index be62a9bf612..3d5166dd61b 100644 --- a/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/TokenFeature.java +++ b/hedera-mirror-test/src/test/java/com/hedera/mirror/test/e2e/acceptance/steps/TokenFeature.java @@ -329,7 +329,7 @@ private void transferTokens(TokenId tokenId, int amount, ExpandedAccountId sende } private MirrorTransaction verifyTransactions(int status) { - String transactionId = networkTransactionResponse.getTransactionIdString(); + String transactionId = networkTransactionResponse.getTransactionIdStringNoCheckSum(); MirrorTransactionsResponse mirrorTransactionsResponse = mirrorClient.getTransactions(transactionId); List transactions = mirrorTransactionsResponse.getTransactions(); @@ -357,7 +357,7 @@ private MirrorTokenResponse verifyToken() { } private void verifyTokenTransfers() { - String transactionId = networkTransactionResponse.getTransactionIdString(); + String transactionId = networkTransactionResponse.getTransactionIdStringNoCheckSum(); MirrorTransactionsResponse mirrorTransactionsResponse = mirrorClient.getTransactions(transactionId); List transactions = mirrorTransactionsResponse.getTransactions();