From b6494fbcbc8d53a3270a87b74eb037a3959c6aee Mon Sep 17 00:00:00 2001 From: Jeffrey Tang Date: Mon, 25 Sep 2023 09:10:12 -0500 Subject: [PATCH 1/3] Save Signed-off-by: Jeffrey Tang --- .../AccountBalancesClientSaveLoadTest.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java b/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java index a39b6a4fbe82..f93162f7c057 100644 --- a/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java +++ b/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java @@ -42,7 +42,6 @@ import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.BUSY; import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.DUPLICATE_TRANSACTION; import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.INSUFFICIENT_TOKEN_BALANCE; -import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.INSUFFICIENT_TX_FEE; import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.INVALID_SIGNATURE; import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.OK; import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.PLATFORM_TRANSACTION_NOT_CREATED; @@ -75,8 +74,8 @@ public class AccountBalancesClientSaveLoadTest extends LoadTest { private static final Logger LOG = LogManager.getLogger(AccountBalancesClientSaveLoadTest.class); - static final int MAX_PENDING_OPS_FOR_SETUP = 10_000; - static final int TOTAL_ACCOUNT = 200_000; + static final int MAX_PENDING_OPS_FOR_SETUP = 1000; + static final int TOTAL_ACCOUNT = 20000; static final int ESTIMATED_TOKEN_CREATION_RATE = 50; static final int ESTIMATED_CRYPTO_CREATION_RATE = 500; static final long MIN_ACCOUNT_BALANCE = 1_000_000_000L; @@ -100,7 +99,7 @@ public class AccountBalancesClientSaveLoadTest extends LoadTest { List> tokenAcctAssociations = new ArrayList<>(); private final ResponseCodeEnum[] permissiblePrechecks = new ResponseCodeEnum[] { - OK, BUSY, DUPLICATE_TRANSACTION, PLATFORM_TRANSACTION_NOT_CREATED, ACCOUNT_ID_DOES_NOT_EXIST, ACCOUNT_DELETED + OK, BUSY, DUPLICATE_TRANSACTION, PLATFORM_TRANSACTION_NOT_CREATED, ACCOUNT_ID_DOES_NOT_EXIST, ACCOUNT_DELETED }; public static void main(String... args) { @@ -132,9 +131,7 @@ private HapiSpec runAccountBalancesClientSaveLoadTest() { fileUpdate(THROTTLE_DEFS).payingWith(GENESIS).contents(throttlesForJRS.toByteArray())) .when( sourcing(() -> runWithProvider(accountsCreate(settings)) - .lasting( - () -> totalAccounts / ESTIMATED_CRYPTO_CREATION_RATE + 10, - () -> TimeUnit.SECONDS) + .lasting(() -> totalAccounts / settings.getTps() + 30, () -> TimeUnit.SECONDS) .totalOpsToSumbit(() -> totalAccounts) .maxOpsPerSec(settings::getTps) .maxPendingOps(() -> MAX_PENDING_OPS_FOR_SETUP)), @@ -157,7 +154,7 @@ private HapiSpec runAccountBalancesClientSaveLoadTest() { .maxOpsPerSec(settings::getTps) .maxPendingOps(() -> MAX_PENDING_OPS_FOR_SETUP))) .then( - sleepFor(10L * SECOND), + sleepFor(30L * SECOND), withOpContext((spec, log) -> { if (settings.getBooleanProperty("clientToExportBalances", false)) { log.info("Now get all {} accounts created and save them", totalAccounts); @@ -169,8 +166,8 @@ private HapiSpec runAccountBalancesClientSaveLoadTest() { List ops = new ArrayList<>(); String acctName = null; for (int i = acctProcessed + 1; - i <= acctProcessed + batchSize && i <= totalAccounts; - i++) { + i <= acctProcessed + batchSize && i <= totalAccounts; + i++) { acctName = ACCT_NAME_PREFIX + i; // Make sure the named account was created before // query its balances. @@ -207,7 +204,7 @@ private Function accountsCreate(PerfTestLoadSettings setti LOG.info("Total accounts: {}", totalAccounts); LOG.info("Total tokens: {}", totalTestTokens); - AtomicInteger moreToCreate = new AtomicInteger(totalAccounts); + AtomicInteger moreToCreate = new AtomicInteger(1); return spec -> new OpProvider() { @Override @@ -219,8 +216,8 @@ public List suggestedInitializers() { @Override public Optional get() { int next; - next = moreToCreate.getAndDecrement(); - if (next <= 0) { + next = moreToCreate.getAndIncrement(); + if (next > totalAccounts) { return Optional.empty(); } @@ -228,10 +225,9 @@ public Optional get() { .balance((RANDOM.nextInt((int) ONE_HBAR) + MIN_ACCOUNT_BALANCE)) .key(GENESIS) .fee(ONE_HUNDRED_HBARS) - .withRecharging() .rechargeWindow(30) .hasRetryPrecheckFrom(NOISY_RETRY_PRECHECKS) - .hasPrecheckFrom(DUPLICATE_TRANSACTION, OK, INSUFFICIENT_TX_FEE) + .hasPrecheckFrom(DUPLICATE_TRANSACTION, OK) .hasKnownStatusFrom(SUCCESS, INVALID_SIGNATURE) .noLogging() .deferStatusResolution(); @@ -326,7 +322,7 @@ public Optional get() { String senderAcctName = ACCT_NAME_PREFIX + tokenAndSenderOrd; String receivedAcctName = ACCT_NAME_PREFIX + receiverOrd; var op = cryptoTransfer(moving(RANDOM.nextInt(MAX_TOKEN_TRANSFER) + 1L, tokenName) - .between(senderAcctName, receivedAcctName)) + .between(senderAcctName, receivedAcctName)) .hasKnownStatusFrom( OK, SUCCESS, From 8861b229c1e9d840bf2fa3b95f5085008883902b Mon Sep 17 00:00:00 2001 From: Jeffrey Tang Date: Mon, 25 Sep 2023 11:28:07 -0500 Subject: [PATCH 2/3] save Signed-off-by: Jeffrey Tang --- .../perf/crypto/CryptoTransferLoadTestWithInvalidAccounts.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/crypto/CryptoTransferLoadTestWithInvalidAccounts.java b/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/crypto/CryptoTransferLoadTestWithInvalidAccounts.java index 93da4e47a508..79ae2daa9003 100644 --- a/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/crypto/CryptoTransferLoadTestWithInvalidAccounts.java +++ b/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/crypto/CryptoTransferLoadTestWithInvalidAccounts.java @@ -60,7 +60,6 @@ protected HapiSpec runCryptoTransfers() { .fee(100_000_000L) .hasKnownStatusFrom(INVALID_ACCOUNT_ID) .hasRetryPrecheckFrom(BUSY, PLATFORM_TRANSACTION_NOT_CREATED) - .deferStatusResolution() }; return defaultHapiSpec("RunCryptoTransfers") From 002896b31d7e67eec0233a1348c4800e93ed0de7 Mon Sep 17 00:00:00 2001 From: Jeffrey Tang Date: Tue, 26 Sep 2023 22:36:50 -0500 Subject: [PATCH 3/3] save Signed-off-by: Jeffrey Tang --- .../suites/perf/AccountBalancesClientSaveLoadTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java b/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java index f93162f7c057..932393c4cb93 100644 --- a/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java +++ b/hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/perf/AccountBalancesClientSaveLoadTest.java @@ -99,7 +99,7 @@ public class AccountBalancesClientSaveLoadTest extends LoadTest { List> tokenAcctAssociations = new ArrayList<>(); private final ResponseCodeEnum[] permissiblePrechecks = new ResponseCodeEnum[] { - OK, BUSY, DUPLICATE_TRANSACTION, PLATFORM_TRANSACTION_NOT_CREATED, ACCOUNT_ID_DOES_NOT_EXIST, ACCOUNT_DELETED + OK, BUSY, DUPLICATE_TRANSACTION, PLATFORM_TRANSACTION_NOT_CREATED, ACCOUNT_ID_DOES_NOT_EXIST, ACCOUNT_DELETED }; public static void main(String... args) { @@ -166,8 +166,8 @@ private HapiSpec runAccountBalancesClientSaveLoadTest() { List ops = new ArrayList<>(); String acctName = null; for (int i = acctProcessed + 1; - i <= acctProcessed + batchSize && i <= totalAccounts; - i++) { + i <= acctProcessed + batchSize && i <= totalAccounts; + i++) { acctName = ACCT_NAME_PREFIX + i; // Make sure the named account was created before // query its balances. @@ -322,7 +322,7 @@ public Optional get() { String senderAcctName = ACCT_NAME_PREFIX + tokenAndSenderOrd; String receivedAcctName = ACCT_NAME_PREFIX + receiverOrd; var op = cryptoTransfer(moving(RANDOM.nextInt(MAX_TOKEN_TRANSFER) + 1L, tokenName) - .between(senderAcctName, receivedAcctName)) + .between(senderAcctName, receivedAcctName)) .hasKnownStatusFrom( OK, SUCCESS,