From 32e9bd285f8079f86253d3f39a998c03cef29114 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Mon, 28 Dec 2020 12:52:29 -0300 Subject: [PATCH 1/9] Delete unused method --- apitest/src/test/java/bisq/apitest/ApiTestCase.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/apitest/src/test/java/bisq/apitest/ApiTestCase.java b/apitest/src/test/java/bisq/apitest/ApiTestCase.java index 7d1f4ddf016..7f84772f543 100644 --- a/apitest/src/test/java/bisq/apitest/ApiTestCase.java +++ b/apitest/src/test/java/bisq/apitest/ApiTestCase.java @@ -19,7 +19,6 @@ import java.net.InetAddress; -import java.io.File; import java.io.IOException; import java.util.HashMap; @@ -73,16 +72,6 @@ public class ApiTestCase { // gRPC service stubs are used by method & scenario tests, but not e2e tests. private static final Map grpcStubsCache = new HashMap<>(); - public static void setUpScaffold(File callRateMeteringConfigFile, - Enum... supportingApps) - throws InterruptedException, ExecutionException, IOException { - scaffold = new Scaffold(stream(supportingApps).map(Enum::name) - .collect(Collectors.joining(","))) - .setUp(); - config = scaffold.config; - bitcoinCli = new BitcoinCliHelper((config)); - } - public static void setUpScaffold(Enum... supportingApps) throws InterruptedException, ExecutionException, IOException { scaffold = new Scaffold(stream(supportingApps).map(Enum::name) From 3bbf1e02dda399ef511b78f9bae8c06b02475519 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Mon, 28 Dec 2020 13:11:12 -0300 Subject: [PATCH 2/9] Add convenience method to convert enum[] to comma delimited string --- apitest/src/test/java/bisq/apitest/ApiTestCase.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apitest/src/test/java/bisq/apitest/ApiTestCase.java b/apitest/src/test/java/bisq/apitest/ApiTestCase.java index 7f84772f543..6c7a9f82866 100644 --- a/apitest/src/test/java/bisq/apitest/ApiTestCase.java +++ b/apitest/src/test/java/bisq/apitest/ApiTestCase.java @@ -96,6 +96,10 @@ public static void tearDownScaffold() { scaffold.tearDown(); } + protected static String getEnumArrayAsString(Enum[] supportingApps) { + return stream(supportingApps).map(Enum::name).collect(Collectors.joining(",")); + } + protected static GrpcStubs grpcStubs(BisqAppConfig bisqAppConfig) { if (grpcStubsCache.containsKey(bisqAppConfig)) { return grpcStubsCache.get(bisqAppConfig); From 1f99192a31bf97d0dffdaae85d8b2563f2b3da8f Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Mon, 28 Dec 2020 13:12:34 -0300 Subject: [PATCH 3/9] Make visible to subclasses --- apitest/src/test/java/bisq/apitest/method/MethodTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apitest/src/test/java/bisq/apitest/method/MethodTest.java b/apitest/src/test/java/bisq/apitest/method/MethodTest.java index da078e1efc2..a90e9cd06c2 100644 --- a/apitest/src/test/java/bisq/apitest/method/MethodTest.java +++ b/apitest/src/test/java/bisq/apitest/method/MethodTest.java @@ -133,7 +133,7 @@ public static void startSupportingApps(boolean registerDisputeAgents, } } - private static void doPostStartup(boolean registerDisputeAgents, + protected static void doPostStartup(boolean registerDisputeAgents, boolean generateBtcBlock, Enum... supportingApps) { if (registerDisputeAgents) { From bcc7216c9ef3948a8b8f104bccf261914e66baef Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Mon, 28 Dec 2020 14:30:07 -0300 Subject: [PATCH 4/9] Fix tmp file deletion bug --- core/src/main/java/bisq/core/api/CorePaymentAccountsService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/bisq/core/api/CorePaymentAccountsService.java b/core/src/main/java/bisq/core/api/CorePaymentAccountsService.java index dacb79567fd..d3084363de9 100644 --- a/core/src/main/java/bisq/core/api/CorePaymentAccountsService.java +++ b/core/src/main/java/bisq/core/api/CorePaymentAccountsService.java @@ -73,6 +73,7 @@ List getFiatPaymentMethods() { String getPaymentAccountFormAsString(String paymentMethodId) { File jsonForm = getPaymentAccountForm(paymentMethodId); + jsonForm.deleteOnExit(); // If just asking for a string, delete the form file. return paymentAccountForm.toJsonString(jsonForm); } From 2f7f14670c6b965cc9d467516320cecc62e67416 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Mon, 28 Dec 2020 14:32:16 -0300 Subject: [PATCH 5/9] Replace junit with jupiter asserts Don't mix junit and jupter apis, apitest should only be using jupiter. Also moved a file.deleteOnExit statement within the method that created the file. --- .../apitest/method/payment/AbstractPaymentAccountTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java b/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java index e83bfe6db71..c31daec51d4 100644 --- a/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java +++ b/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java @@ -33,7 +33,7 @@ import static java.lang.String.format; import static java.lang.System.getProperty; import static java.nio.charset.StandardCharsets.UTF_8; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; @@ -176,7 +176,6 @@ private File fillPaymentAccountForm() { tmpJsonForm = File.createTempFile("temp_acct_form_", ".json", Paths.get(getProperty("java.io.tmpdir")).toFile()); - tmpJsonForm.deleteOnExit(); JsonWriter writer = new JsonWriter(new OutputStreamWriter(new FileOutputStream(tmpJsonForm), UTF_8)); writer.beginObject(); @@ -199,6 +198,7 @@ private File fillPaymentAccountForm() { log.error("", ex); fail(format("Could not write json file from form entries %s", COMPLETED_FORM_MAP)); } + tmpJsonForm.deleteOnExit(); return tmpJsonForm; } } From 9250845a66bc7cda2c369806bf0949537bb5ac18 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Tue, 29 Dec 2020 13:14:05 -0300 Subject: [PATCH 6/9] Explain why balance asserts are checking a range, not one value And change log.info to log.debug. --- .../bisq/apitest/method/wallet/BtcWalletTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java b/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java index 90c46a3c814..8905ba6ee84 100644 --- a/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java +++ b/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java @@ -60,10 +60,10 @@ public void testInitialBtcBalances(final TestInfo testInfo) { // Bob & Alice's regtest Bisq wallets were initialized with 10 BTC. BtcBalanceInfo alicesBalances = getBtcBalances(alicedaemon); - log.info("{} Alice's BTC Balances:\n{}", testName(testInfo), formatBtcBalanceInfoTbl(alicesBalances)); + log.debug("{} Alice's BTC Balances:\n{}", testName(testInfo), formatBtcBalanceInfoTbl(alicesBalances)); BtcBalanceInfo bobsBalances = getBtcBalances(bobdaemon); - log.info("{} Bob's BTC Balances:\n{}", testName(testInfo), formatBtcBalanceInfoTbl(bobsBalances)); + log.debug("{} Bob's BTC Balances:\n{}", testName(testInfo), formatBtcBalanceInfoTbl(bobsBalances)); assertEquals(INITIAL_BTC_BALANCES.getAvailableBalance(), alicesBalances.getAvailableBalance()); assertEquals(INITIAL_BTC_BALANCES.getAvailableBalance(), bobsBalances.getAvailableBalance()); @@ -80,7 +80,7 @@ public void testFundAlicesBtcWallet(final TestInfo testInfo) { // New balance is 12.5 BTC assertEquals(1250000000, btcBalanceInfo.getAvailableBalance()); - log.info("{} -> Alice's Funded Address Balance -> \n{}", + log.debug("{} -> Alice's Funded Address Balance -> \n{}", testName(testInfo), formatAddressBalanceTbl(singletonList(getAddressBalance(alicedaemon, newAddress)))); @@ -92,7 +92,7 @@ public void testFundAlicesBtcWallet(final TestInfo testInfo) { 1250000000, 0); verifyBtcBalances(alicesExpectedBalances, btcBalanceInfo); - log.info("{} -> Alice's BTC Balances After Sending 2.5 BTC -> \n{}", + log.debug("{} -> Alice's BTC Balances After Sending 2.5 BTC -> \n{}", testName(testInfo), formatBtcBalanceInfoTbl(btcBalanceInfo)); } @@ -134,9 +134,9 @@ public void testAliceSendBTCToBob(TestInfo testInfo) { log.debug("{} Bob's BTC Balances:\n{}", testName(testInfo), formatBtcBalanceInfoTbl(bobsBalances)); - // We cannot (?) predict the exact tx size and calculate how much in tx fees were - // deducted from the 5.5 BTC sent to Bob, but we do know Bob should have something - // between 15.49978000 and 15.49978100 BTC. + // The sendbtc tx weight and size randomly varies between two distinct values + // (876 wu, 219 bytes, OR 880 wu, 220 bytes) from test run to test run, hence + // the assertion of an available balance range [1549978000, 1549978100]. assertTrue(bobsBalances.getAvailableBalance() >= 1549978000); assertTrue(bobsBalances.getAvailableBalance() <= 1549978100); } From 6594d147d32f893b068bc8e59701ba51d7b5f693 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Tue, 29 Dec 2020 13:54:27 -0300 Subject: [PATCH 7/9] Refactor wallet test fixtures into util --- .../apitest/method/wallet/BsqWalletTest.java | 66 ++++------------- .../apitest/method/wallet/BtcWalletTest.java | 22 ++---- .../apitest/method/wallet/WalletTestUtil.java | 72 +++++++++++++++++++ 3 files changed, 89 insertions(+), 71 deletions(-) create mode 100644 apitest/src/test/java/bisq/apitest/method/wallet/WalletTestUtil.java diff --git a/apitest/src/test/java/bisq/apitest/method/wallet/BsqWalletTest.java b/apitest/src/test/java/bisq/apitest/method/wallet/BsqWalletTest.java index 2884555e3c7..04b7ee9fdc7 100644 --- a/apitest/src/test/java/bisq/apitest/method/wallet/BsqWalletTest.java +++ b/apitest/src/test/java/bisq/apitest/method/wallet/BsqWalletTest.java @@ -20,11 +20,14 @@ import static bisq.apitest.config.BisqAppConfig.arbdaemon; import static bisq.apitest.config.BisqAppConfig.bobdaemon; import static bisq.apitest.config.BisqAppConfig.seednode; +import static bisq.apitest.method.wallet.WalletTestUtil.ALICES_INITIAL_BSQ_BALANCES; +import static bisq.apitest.method.wallet.WalletTestUtil.BOBS_INITIAL_BSQ_BALANCES; +import static bisq.apitest.method.wallet.WalletTestUtil.bsqBalanceModel; +import static bisq.apitest.method.wallet.WalletTestUtil.verifyBsqBalances; import static bisq.cli.TableFormat.formatBsqBalanceInfoTbl; import static org.bitcoinj.core.NetworkParameters.PAYMENT_PROTOCOL_ID_MAINNET; import static org.bitcoinj.core.NetworkParameters.PAYMENT_PROTOCOL_ID_REGTEST; import static org.bitcoinj.core.NetworkParameters.PAYMENT_PROTOCOL_ID_TESTNET; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -40,24 +43,6 @@ @TestMethodOrder(OrderAnnotation.class) public class BsqWalletTest extends MethodTest { - // Alice's regtest BSQ wallet is initialized with 1,000,000 BSQ. - private static final bisq.core.api.model.BsqBalanceInfo ALICES_INITIAL_BSQ_BALANCES = - expectedBsqBalanceModel(100000000, - 0, - 0, - 0, - 0, - 0); - - // Bob's regtest BSQ wallet is initialized with 1,500,000 BSQ. - private static final bisq.core.api.model.BsqBalanceInfo BOBS_INITIAL_BSQ_BALANCES = - expectedBsqBalanceModel(150000000, - 0, - 0, - 0, - 0, - 0); - private static final String SEND_BSQ_AMOUNT = "25000.50"; @BeforeAll @@ -112,7 +97,7 @@ public void testSendBsqAndCheckBalancesBeforeGeneratingBtcBlock(final TestInfo t sleep(2000); BsqBalanceInfo alicesBsqBalances = getBsqBalances(alicedaemon); - BsqBalanceInfo bobsBsqBalances = waitForNonZeroUnverifiedBalance(bobdaemon); + BsqBalanceInfo bobsBsqBalances = waitForNonZeroBsqUnverifiedBalance(bobdaemon); log.debug("BSQ Balances Before BTC Block Gen..."); printBobAndAliceBsqBalances(testInfo, @@ -120,7 +105,7 @@ public void testSendBsqAndCheckBalancesBeforeGeneratingBtcBlock(final TestInfo t alicesBsqBalances, alicedaemon); - verifyBsqBalances(expectedBsqBalanceModel(150000000, + verifyBsqBalances(bsqBalanceModel(150000000, 2500050, 0, 0, @@ -128,7 +113,7 @@ public void testSendBsqAndCheckBalancesBeforeGeneratingBtcBlock(final TestInfo t 0), bobsBsqBalances); - verifyBsqBalances(expectedBsqBalanceModel(97499950, + verifyBsqBalances(bsqBalanceModel(97499950, 97499950, 97499950, 0, @@ -145,7 +130,7 @@ public void testBalancesAfterSendingBsqAndGeneratingBtcBlock(final TestInfo test genBtcBlocksThenWait(1, 4000); BsqBalanceInfo alicesBsqBalances = getBsqBalances(alicedaemon); - BsqBalanceInfo bobsBsqBalances = waitForNewAvailableConfirmedBalance(bobdaemon, 150000000); + BsqBalanceInfo bobsBsqBalances = waitForBsqNewAvailableConfirmedBalance(bobdaemon, 150000000); log.debug("See Available Confirmed BSQ Balances..."); printBobAndAliceBsqBalances(testInfo, @@ -153,7 +138,7 @@ public void testBalancesAfterSendingBsqAndGeneratingBtcBlock(final TestInfo test alicesBsqBalances, alicedaemon); - verifyBsqBalances(expectedBsqBalanceModel(152500050, + verifyBsqBalances(bsqBalanceModel(152500050, 0, 0, 0, @@ -161,7 +146,7 @@ public void testBalancesAfterSendingBsqAndGeneratingBtcBlock(final TestInfo test 0), bobsBsqBalances); - verifyBsqBalances(expectedBsqBalanceModel(97499950, + verifyBsqBalances(bsqBalanceModel(97499950, 0, 0, 0, @@ -175,17 +160,7 @@ public static void tearDown() { tearDownScaffold(); } - private void verifyBsqBalances(bisq.core.api.model.BsqBalanceInfo expected, - BsqBalanceInfo actual) { - assertEquals(expected.getAvailableConfirmedBalance(), actual.getAvailableConfirmedBalance()); - assertEquals(expected.getUnverifiedBalance(), actual.getUnverifiedBalance()); - assertEquals(expected.getUnconfirmedChangeBalance(), actual.getUnconfirmedChangeBalance()); - assertEquals(expected.getLockedForVotingBalance(), actual.getLockedForVotingBalance()); - assertEquals(expected.getLockupBondsBalance(), actual.getLockupBondsBalance()); - assertEquals(expected.getUnlockingBondsBalance(), actual.getUnlockingBondsBalance()); - } - - private BsqBalanceInfo waitForNonZeroUnverifiedBalance(BisqAppConfig daemon) { + private BsqBalanceInfo waitForNonZeroBsqUnverifiedBalance(BisqAppConfig daemon) { // A BSQ recipient needs to wait for her daemon to detect a new tx. // Loop here until her unverifiedBalance != 0, or give up after 15 seconds. // A slow test is preferred over a flaky test. @@ -197,8 +172,8 @@ private BsqBalanceInfo waitForNonZeroUnverifiedBalance(BisqAppConfig daemon) { return bsqBalance; } - private BsqBalanceInfo waitForNewAvailableConfirmedBalance(BisqAppConfig daemon, - long staleBalance) { + private BsqBalanceInfo waitForBsqNewAvailableConfirmedBalance(BisqAppConfig daemon, + long staleBalance) { BsqBalanceInfo bsqBalance = getBsqBalances(daemon); for (int numRequests = 1; numRequests <= 15 && bsqBalance.getAvailableConfirmedBalance() == staleBalance; @@ -226,19 +201,4 @@ private void printBobAndAliceBsqBalances(final TestInfo testInfo, SEND_BSQ_AMOUNT, formatBsqBalanceInfoTbl(alicesBsqBalances)); } - - @SuppressWarnings("SameParameterValue") - private static bisq.core.api.model.BsqBalanceInfo expectedBsqBalanceModel(long availableConfirmedBalance, - long unverifiedBalance, - long unconfirmedChangeBalance, - long lockedForVotingBalance, - long lockupBondsBalance, - long unlockingBondsBalance) { - return bisq.core.api.model.BsqBalanceInfo.valueOf(availableConfirmedBalance, - unverifiedBalance, - unconfirmedChangeBalance, - lockedForVotingBalance, - lockupBondsBalance, - unlockingBondsBalance); - } } diff --git a/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java b/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java index 8905ba6ee84..33cd43e7c43 100644 --- a/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java +++ b/apitest/src/test/java/bisq/apitest/method/wallet/BtcWalletTest.java @@ -17,6 +17,8 @@ import static bisq.apitest.config.BisqAppConfig.alicedaemon; import static bisq.apitest.config.BisqAppConfig.bobdaemon; import static bisq.apitest.config.BisqAppConfig.seednode; +import static bisq.apitest.method.wallet.WalletTestUtil.INITIAL_BTC_BALANCES; +import static bisq.apitest.method.wallet.WalletTestUtil.verifyBtcBalances; import static bisq.cli.TableFormat.formatAddressBalanceTbl; import static bisq.cli.TableFormat.formatBtcBalanceInfoTbl; import static java.util.Collections.singletonList; @@ -36,14 +38,6 @@ public class BtcWalletTest extends MethodTest { private static final String TX_MEMO = "tx memo"; - // All api tests depend on the DAO / regtest environment, and Bob & Alice's wallets - // are initialized with 10 BTC during the scaffolding setup. - private static final bisq.core.api.model.BtcBalanceInfo INITIAL_BTC_BALANCES = - bisq.core.api.model.BtcBalanceInfo.valueOf(1000000000, - 0, - 1000000000, - 0); - @BeforeAll public static void setUp() { startSupportingApps(false, @@ -74,7 +68,7 @@ public void testInitialBtcBalances(final TestInfo testInfo) { public void testFundAlicesBtcWallet(final TestInfo testInfo) { String newAddress = getUnusedBtcAddress(alicedaemon); bitcoinCli.sendToAddress(newAddress, "2.5"); - genBtcBlocksThenWait(1, 1500); + genBtcBlocksThenWait(1, 1000); BtcBalanceInfo btcBalanceInfo = getBtcBalances(alicedaemon); // New balance is 12.5 BTC @@ -112,7 +106,7 @@ public void testAliceSendBTCToBob(TestInfo testInfo) { // Note that the memo is not set on the tx yet. assertTrue(txInfo.getMemo().isEmpty()); - genBtcBlocksThenWait(1, 3000); + genBtcBlocksThenWait(1, 1000); // Fetch the tx and check for confirmation and memo. txInfo = getTransaction(alicedaemon, txInfo.getTxId()); @@ -145,12 +139,4 @@ public void testAliceSendBTCToBob(TestInfo testInfo) { public static void tearDown() { tearDownScaffold(); } - - private void verifyBtcBalances(bisq.core.api.model.BtcBalanceInfo expected, - BtcBalanceInfo actual) { - assertEquals(expected.getAvailableBalance(), actual.getAvailableBalance()); - assertEquals(expected.getReservedBalance(), actual.getReservedBalance()); - assertEquals(expected.getTotalAvailableBalance(), actual.getTotalAvailableBalance()); - assertEquals(expected.getLockedBalance(), actual.getLockedBalance()); - } } diff --git a/apitest/src/test/java/bisq/apitest/method/wallet/WalletTestUtil.java b/apitest/src/test/java/bisq/apitest/method/wallet/WalletTestUtil.java new file mode 100644 index 00000000000..85b9f04e84f --- /dev/null +++ b/apitest/src/test/java/bisq/apitest/method/wallet/WalletTestUtil.java @@ -0,0 +1,72 @@ +package bisq.apitest.method.wallet; + +import bisq.proto.grpc.BsqBalanceInfo; +import bisq.proto.grpc.BtcBalanceInfo; + +import lombok.extern.slf4j.Slf4j; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Slf4j +public class WalletTestUtil { + + // All api tests depend on the DAO / regtest environment, and Bob & Alice's wallets + // are initialized with 10 BTC during the scaffolding setup. + public static final bisq.core.api.model.BtcBalanceInfo INITIAL_BTC_BALANCES = + bisq.core.api.model.BtcBalanceInfo.valueOf(1000000000, + 0, + 1000000000, + 0); + + + // Alice's regtest BSQ wallet is initialized with 1,000,000 BSQ. + public static final bisq.core.api.model.BsqBalanceInfo ALICES_INITIAL_BSQ_BALANCES = + bsqBalanceModel(100000000, + 0, + 0, + 0, + 0, + 0); + + // Bob's regtest BSQ wallet is initialized with 1,500,000 BSQ. + public static final bisq.core.api.model.BsqBalanceInfo BOBS_INITIAL_BSQ_BALANCES = + bsqBalanceModel(150000000, + 0, + 0, + 0, + 0, + 0); + + @SuppressWarnings("SameParameterValue") + public static bisq.core.api.model.BsqBalanceInfo bsqBalanceModel(long availableConfirmedBalance, + long unverifiedBalance, + long unconfirmedChangeBalance, + long lockedForVotingBalance, + long lockupBondsBalance, + long unlockingBondsBalance) { + return bisq.core.api.model.BsqBalanceInfo.valueOf(availableConfirmedBalance, + unverifiedBalance, + unconfirmedChangeBalance, + lockedForVotingBalance, + lockupBondsBalance, + unlockingBondsBalance); + } + + public static void verifyBsqBalances(bisq.core.api.model.BsqBalanceInfo expected, + BsqBalanceInfo actual) { + assertEquals(expected.getAvailableConfirmedBalance(), actual.getAvailableConfirmedBalance()); + assertEquals(expected.getUnverifiedBalance(), actual.getUnverifiedBalance()); + assertEquals(expected.getUnconfirmedChangeBalance(), actual.getUnconfirmedChangeBalance()); + assertEquals(expected.getLockedForVotingBalance(), actual.getLockedForVotingBalance()); + assertEquals(expected.getLockupBondsBalance(), actual.getLockupBondsBalance()); + assertEquals(expected.getUnlockingBondsBalance(), actual.getUnlockingBondsBalance()); + } + + public static void verifyBtcBalances(bisq.core.api.model.BtcBalanceInfo expected, + BtcBalanceInfo actual) { + assertEquals(expected.getAvailableBalance(), actual.getAvailableBalance()); + assertEquals(expected.getReservedBalance(), actual.getReservedBalance()); + assertEquals(expected.getTotalAvailableBalance(), actual.getTotalAvailableBalance()); + assertEquals(expected.getLockedBalance(), actual.getLockedBalance()); + } +} From 206364de42bacb40fd4e9441e1b4018b8ebc342b Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Tue, 29 Dec 2020 14:12:55 -0300 Subject: [PATCH 8/9] Reduce some trade test wait times Commit 2070e76 fixed the repeating dao sync bug, so don't need to wait as long after generating a btc block. --- .../bisq/apitest/method/trade/TakeBuyBTCOfferTest.java | 10 +++++----- .../apitest/method/trade/TakeSellBTCOfferTest.java | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apitest/src/test/java/bisq/apitest/method/trade/TakeBuyBTCOfferTest.java b/apitest/src/test/java/bisq/apitest/method/trade/TakeBuyBTCOfferTest.java index ffbf75ffee6..c3935f03401 100644 --- a/apitest/src/test/java/bisq/apitest/method/trade/TakeBuyBTCOfferTest.java +++ b/apitest/src/test/java/bisq/apitest/method/trade/TakeBuyBTCOfferTest.java @@ -79,7 +79,7 @@ public void testTakeAlicesBuyOffer(final TestInfo testInfo) { // Cache the trade id for the other tests. tradeId = trade.getTradeId(); - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); assertEquals(0, getOpenOffersCount(aliceStubs, "buy", "usd")); trade = getTrade(bobdaemon, trade.getTradeId()); @@ -89,7 +89,7 @@ public void testTakeAlicesBuyOffer(final TestInfo testInfo) { verifyExpectedProtocolStatus(trade); logTrade(log, testInfo, "Bob's view after taking offer and sending deposit", trade); - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); trade = getTrade(bobdaemon, trade.getTradeId()); EXPECTED_PROTOCOL_STATUS.setState(DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN) .setPhase(DEPOSIT_CONFIRMED) @@ -142,14 +142,14 @@ public void testBobsConfirmPaymentReceived(final TestInfo testInfo) { @Test @Order(4) public void testAlicesKeepFunds(final TestInfo testInfo) { - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); var trade = getTrade(alicedaemon, tradeId); logTrade(log, testInfo, "Alice's view before keeping funds", trade); keepFunds(alicedaemon, tradeId); - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); trade = getTrade(alicedaemon, tradeId); EXPECTED_PROTOCOL_STATUS.setState(BUYER_RECEIVED_PAYOUT_TX_PUBLISHED_MSG) @@ -157,7 +157,7 @@ public void testAlicesKeepFunds(final TestInfo testInfo) { verifyExpectedProtocolStatus(trade); logTrade(log, testInfo, "Alice's view after keeping funds", trade); BtcBalanceInfo currentBalance = getBtcBalances(bobdaemon); - log.info("{} Alice's current available balance: {} BTC", + log.debug("{} Alice's current available balance: {} BTC", testName(testInfo), formatSatoshis(currentBalance.getAvailableBalance())); } diff --git a/apitest/src/test/java/bisq/apitest/method/trade/TakeSellBTCOfferTest.java b/apitest/src/test/java/bisq/apitest/method/trade/TakeSellBTCOfferTest.java index 673792c4f55..e56e18cb480 100644 --- a/apitest/src/test/java/bisq/apitest/method/trade/TakeSellBTCOfferTest.java +++ b/apitest/src/test/java/bisq/apitest/method/trade/TakeSellBTCOfferTest.java @@ -90,7 +90,7 @@ public void testTakeAlicesSellOffer(final TestInfo testInfo) { logTrade(log, testInfo, "Bob's view after taking offer and sending deposit", trade); - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); trade = getTrade(bobdaemon, trade.getTradeId()); EXPECTED_PROTOCOL_STATUS.setState(DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN) .setPhase(DEPOSIT_CONFIRMED) @@ -143,7 +143,7 @@ public void testAlicesConfirmPaymentReceived(final TestInfo testInfo) { @Test @Order(4) public void testBobsBtcWithdrawalToExternalAddress(final TestInfo testInfo) { - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); var trade = getTrade(bobdaemon, tradeId); logTrade(log, testInfo, "Bob's view before withdrawing funds to external wallet", trade); @@ -151,7 +151,7 @@ public void testBobsBtcWithdrawalToExternalAddress(final TestInfo testInfo) { String toAddress = bitcoinCli.getNewBtcAddress(); withdrawFunds(bobdaemon, tradeId, toAddress, WITHDRAWAL_TX_MEMO); - genBtcBlocksThenWait(1, 2250); + genBtcBlocksThenWait(1, 1000); trade = getTrade(bobdaemon, tradeId); EXPECTED_PROTOCOL_STATUS.setState(WITHDRAW_COMPLETED) From f8cf109aedc693078c6faa1eaf2e5cfee2f86b1e Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Thu, 31 Dec 2020 12:18:33 -0300 Subject: [PATCH 9/9] Fix CLI --help formatting bugs --- cli/src/main/java/bisq/cli/CliMain.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/src/main/java/bisq/cli/CliMain.java b/cli/src/main/java/bisq/cli/CliMain.java index 4853e3a76b3..51c80392bf7 100644 --- a/cli/src/main/java/bisq/cli/CliMain.java +++ b/cli/src/main/java/bisq/cli/CliMain.java @@ -727,11 +727,11 @@ private static void printHelp(OptionParser parser, PrintStream stream) { stream.println(); parser.printHelpOn(stream); stream.println(); - String rowFormat = "%-22s%-50s%s%n"; + String rowFormat = "%-24s%-52s%s%n"; stream.format(rowFormat, "Method", "Params", "Description"); stream.format(rowFormat, "------", "------", "------------"); stream.format(rowFormat, "getversion", "", "Get server version"); - stream.format(rowFormat, "getbalance [,currency code = bsq|btc]", "", "Get server wallet balances"); + stream.format(rowFormat, "getbalance", "[currency code = bsq|btc]", "Get server wallet balances"); stream.format(rowFormat, "getaddressbalance", "address", "Get server wallet address balance"); stream.format(rowFormat, "getfundingaddresses", "", "Get BTC funding addresses"); stream.format(rowFormat, "getunusedbsqaddress", "", "Get unused BSQ address"); @@ -748,7 +748,7 @@ private static void printHelp(OptionParser parser, PrintStream stream) { stream.format(rowFormat, "canceloffer", "offer id", "Cancel offer with id"); stream.format(rowFormat, "getoffer", "offer id", "Get current offer with id"); stream.format(rowFormat, "getoffers", "buy | sell, currency code", "Get current offers"); - stream.format(rowFormat, "takeoffer", "offer id, [,taker fee currency code = bsq|btc]", "Take offer with id"); + stream.format(rowFormat, "takeoffer", "offer id [,taker fee currency code = bsq|btc]", "Take offer with id"); stream.format(rowFormat, "gettrade", "trade id [,showcontract = true|false]", "Get trade summary or full contract"); stream.format(rowFormat, "confirmpaymentstarted", "trade id", "Confirm payment started"); stream.format(rowFormat, "confirmpaymentreceived", "trade id", "Confirm payment received");