From 24b19dd96902c6e7f1d543117fbc23940dc18338 Mon Sep 17 00:00:00 2001 From: wenlinli <1574249665@qq.com> Date: Tue, 27 Feb 2024 17:42:58 +0800 Subject: [PATCH 1/2] fix PerformanceBalance async interface bug --- .../sdk/demo/perf/PerformanceBalance.java | 82 +++++++++++-------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java b/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java index 2b1647f..ef7f5d4 100644 --- a/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java +++ b/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java @@ -162,22 +162,26 @@ public static void start( // init eoa accounts, use async System.out.println("===2. init eoa accounts==="); for (int i = 0; i < userCount; i++) { + CompletableFuture retCodeCompletableFuture = new CompletableFuture<>(); balanceService.addBalanceAsync( cryptoSuites[i].getCryptoKeyPair().getAddress(), "100000000", Convert.Unit.WEI, - new PrecompiledCallback() { - @Override - public void onResponse(RetCode retCode) { - if (!(retCode.getCode() == 0)) { - System.out.println( - "init eoa account failed, status: " - + retCode.getCode() - + ", message: " - + retCode.getMessage()); - } - } + retCode -> { + retCodeCompletableFuture.complete(retCode); }); + try { + RetCode retCode = retCodeCompletableFuture.get(); + if (!(retCode.getCode() == 0)) { + System.out.println( + "init eoa account failed, status: " + + retCode.getCode() + + ", message: " + + retCode.getMessage()); + } + } catch (Exception e) { + e.printStackTrace(); + } } // start eoa transfer @@ -294,7 +298,7 @@ public void onResponse( List>> allFutures = new ArrayList<>(); - int batchSize = 100; + int batchSize = 10; int numTasks = userCount / batchSize; for (int i = 0; i < numTasks; i++) { @@ -337,22 +341,26 @@ public void onResponse( // init contract balance System.out.println("===2. init contract balance==="); for (int i = 0; i < userCount; i++) { + CompletableFuture retCodeCompletableFuture = new CompletableFuture<>(); balanceService.addBalanceAsync( contractsAddress.get(i), "100000000", Convert.Unit.WEI, - new PrecompiledCallback() { - @Override - public void onResponse(RetCode retCode) { - if (!(retCode.getCode() == 0)) { - System.out.println( - "init contract account failed, status: " - + retCode.getCode() - + ", message: " - + retCode.getMessage()); - } - } + retCode -> { + retCodeCompletableFuture.complete(retCode); }); + try { + RetCode retCode = retCodeCompletableFuture.get(); + if (!(retCode.getCode() == 0)) { + System.out.println( + "init contract account failed, status: " + + retCode.getCode() + + ", message: " + + retCode.getMessage()); + } + } catch (Exception e) { + e.printStackTrace(); + } } // start contract transfer @@ -464,26 +472,30 @@ public void onResponse( // init eoa accounts, use async System.out.println("===2. init eoa accounts==="); for (int i = 0; i < userCount; i++) { + CompletableFuture retCodeCompletableFuture = new CompletableFuture<>(); balanceService.addBalanceAsync( eoaCryptoSuites[i].getCryptoKeyPair().getAddress(), "100000000", Convert.Unit.WEI, - new PrecompiledCallback() { - @Override - public void onResponse(RetCode retCode) { - if (!(retCode.getCode() == 0)) { - System.out.println( - "init eoa account failed, status: " - + retCode.getCode() - + ", message: " - + retCode.getMessage()); - } - } + retCode -> { + retCodeCompletableFuture.complete(retCode); }); + try { + RetCode retCode = retCodeCompletableFuture.get(); + if (!(retCode.getCode() == 0)) { + System.out.println( + "init eoa account failed, status: " + + retCode.getCode() + + ", message: " + + retCode.getMessage()); + } + } catch (Exception e) { + e.printStackTrace(); + } } // PerformanceBalancePrecompiled Test - System.out.println("===2. PerformanceBalancePrecompiled Test==="); + System.out.println("===3. PerformanceBalancePrecompiled Test==="); Collector collector2 = new Collector(); collector2.setTotal(total); for (int i = 0; i < total; i++) { From 82c2b48272e20d0b44ab66b9f804983127f4cdb7 Mon Sep 17 00:00:00 2001 From: wenlinli <1574249665@qq.com> Date: Wed, 28 Feb 2024 11:52:50 +0800 Subject: [PATCH 2/2] Fix PerformanceBalance not suitable for SM model bug --- .../fisco/bcos/sdk/demo/perf/PerformanceBalance.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java b/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java index ef7f5d4..472e04a 100644 --- a/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java +++ b/src/main/java/org/fisco/bcos/sdk/demo/perf/PerformanceBalance.java @@ -25,7 +25,6 @@ import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; import org.fisco.bcos.sdk.v3.model.ConstantConfig; -import org.fisco.bcos.sdk.v3.model.CryptoType; import org.fisco.bcos.sdk.v3.model.RetCode; import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; @@ -115,7 +114,7 @@ public static void start( + committeePath); RateLimiter limiter = RateLimiter.create(qps); // get governor cryptoSuite - CryptoSuite cryptoSuite = new CryptoSuite(CryptoType.ECDSA_TYPE); + CryptoSuite cryptoSuite = new CryptoSuite(client.getCryptoType()); cryptoSuite.loadAccount("pem", committeePath, ""); CryptoKeyPair committee = cryptoSuite.getCryptoKeyPair(); BalanceService balanceService = new BalanceService(client, committee); @@ -157,7 +156,7 @@ public static void start( CryptoSuite[] cryptoSuites = new CryptoSuite[userCount]; IntStream.range(0, userCount) .parallel() - .forEach(i -> cryptoSuites[i] = new CryptoSuite(CryptoType.ECDSA_TYPE)); + .forEach(i -> cryptoSuites[i] = new CryptoSuite(client.getCryptoType())); // init eoa accounts, use async System.out.println("===2. init eoa accounts==="); @@ -290,8 +289,8 @@ public void onResponse( case "contractTransfer": // create contract accounts System.out.println("===1. create contract accounts==="); - if (userCount < 2) { - System.out.println("userCount must be greater than 2"); + if (userCount % 10 != 0) { + System.out.println("userCount must be multiple of 10"); return; } List contractsAddress = new ArrayList<>(); @@ -467,7 +466,7 @@ public void onResponse( CryptoSuite[] eoaCryptoSuites = new CryptoSuite[userCount]; IntStream.range(0, userCount) .parallel() - .forEach(i -> eoaCryptoSuites[i] = new CryptoSuite(CryptoType.ECDSA_TYPE)); + .forEach(i -> eoaCryptoSuites[i] = new CryptoSuite(client.getCryptoType())); // init eoa accounts, use async System.out.println("===2. init eoa accounts===");