Commit graph

11570 commits

Author SHA1 Message Date
cd2357
33550caab2
Remove unused maxBlocks param from pricenode
As the new fee estimation API does not require this parameter
anymore, remove it and all references to it.

See bisq-network/projects#27
2020-07-28 22:11:46 +02:00
cd2357
8d335441c3
Fix Bitpay and CoinGecko altcoin rates
Correctly interpret the alt conversion rate reported by the API. For
alts, Bisq needs the Alt/BTC rate, whereas the API returns the BTC/Alt
one. Calculate the inverse of the reported values before storing them as
 Bisq internal datastructures (ExchangeRates).
2020-07-28 21:10:25 +02:00
ghubstan
8bb7e12f31
Clarify scaffold tear down error handling
The Scaffold#tearDown() method was split into two methods.  The
original tearDown() now passes the background process/task array
to a new shutDownAll() method.  This new method loops through the
tasks in a more readable way, plainly expressing the intent to log
all shutdown exceptions for each process being shut down, but not
throwing an exception while processes are being shut down.
The new shutDownAll() method returns the first shutdown exception
encountered, which in turn is passed up to the test case's @AfterAll
method.
2020-07-28 12:33:25 -03:00
jmacxx
2d5ab2a8d7
Maintain floor amount of 5.46 BSQ to prevent dust errors
When an offer is made using BSQ for trade fee, the BSQ amount
is burnt by doing a send-to-self.  However if the BSQ change
is below the bitcoin dust limit this causes an error.  We
fix this by maintaining a floor amount of 5.46 BSQ.

Fixes #4372
2020-07-28 09:50:54 -05:00
sqrrm
901af075c1
Merge pull request #4381 from chimp1984/add-input-verification
Add input validation
2020-07-28 14:58:06 +02:00
chimp1984
5e49de85c7
Add input validation 2020-07-27 22:09:39 -05:00
chimp1984
78da1df9de
Add trade date 2020-07-27 15:09:03 -05:00
ghubstan
e2f00b7417
Remove extra whiteline 2020-07-27 16:43:43 -03:00
ghubstan
27ee4b8974
Do not leave orphaned processes after failed teardown
The test harness should not fail a test case's @AfterAll (teardown)
method on the first background instance shutdown exception.  This
change makes the shutdown logic similar to the startup's:  it caches
any exceptions that may have occurred during an instance shutdown,
logs them, then proceeds to shut down the next background instance.
An IllegalStateException (the 1st one) is passed up to @AfterAll method
only after the scaffolding teardown process is complete, to avoid leaving
any orphaned java or bitcoind processes running after a java system
exit.
2020-07-27 16:35:46 -03:00
Christoph Atteneder
34f26b1bb4
Merge pull request #4379 from jmacxx/fix_popups
Warn that seeds are not a data backup
2020-07-27 20:36:18 +02:00
cd2357
efda45fa78
Integrate Hitbtc exchange API
Add Hitbtc ExchangeRateProvider and corresponding unit test.
2020-07-27 18:55:11 +02:00
cd2357
b362b4c8d2
Integrate Huobi exchange API
Add Huobi ExchangeRateProvider and corresponding unit test.
2020-07-27 18:53:13 +02:00
cd2357
5a194420ed
Integrate Coinpaprika API
Add Coinpaprika ExchangeRateProvider and corresponding unit test.
2020-07-27 16:17:38 +02:00
jmacxx
bbc328b70c
Warn that seeds are not a data backup
Display a mandatory warning when the seed backup/restore
screen is shown.  The warning informs the user that a data
directory backup is necessary to restore the full state of
bisq, not just the wallet seed words.

Fixes #4375
2020-07-27 09:17:20 -05:00
cd2357
399f65d404
Integrate CoinGecko API
Add CoinGecko ExchangeRateProvider and corresponding unit test.
2020-07-27 14:53:03 +02:00
cd2357
9be2a5bbb4
Integrate Bitpay exchange rate API
Add a Bitpay exchange rate provider and corresponding unit test.
2020-07-27 14:52:36 +02:00
cd2357
637378b58a
Integrate more exchanges using knowm xchange
Add more exchange providers supported by the knowm xchange library.

This extends support for a few new currencies.
2020-07-27 13:02:25 +02:00
Christoph Atteneder
cf394bfa9a
Merge pull request #4377 from pedromvpg/tor-icon-replacement
Clean up TOR status icon
2020-07-27 10:38:34 +02:00
chimp1984
43e4809d81
Add basic support for validation for XMR transfer with tx key
Main part missing is the XMR proof service request processing. I did not
get the service compiled yet, so could not test response data and error
conditions.

Further it is missing a "news badge" and popup to guide the user to the
new feature.

Only basic dev tested so far.

Anyone welcome to pick the project up from here as I might not have
time soon to continue.
2020-07-26 18:55:07 -05:00
pedromvpg
a6f9015db9
Replace tor icon 2020-07-26 17:57:46 -04:00
QuantumRipple
a5cca0ee1e
Change IP for local node connection to Loopback address
If the local Bitcoin full node is bound to only listen on the loopback interface (127.0.0.1), attempting to open a socket to `InetAddress.getLocalHost()` - the return of which is variable but usually NOT 127.0.0.1 - will not work. Changing to `InetAddress.getLoopbackAddress()` resolves this.
2020-07-23 18:39:41 -05:00
Christoph Atteneder
9ab39c2a8b
Merge pull request #4362 from jmacxx/fix_altcoins_instant_acc
Fix altcoin instant account creation / deletion issues
2020-07-23 16:10:19 +02:00
Christoph Atteneder
efe346a4ae
Merge pull request #4365 from ddawson/ext-tor-nullptr
Fix NullPointerException with external tor usage
2020-07-23 16:09:02 +02:00
ghubstan
cf031e6883
Change 'missing bitcoind path' error msg
Since JUnit tests cannot take program arguments, change the
wording to instruct the user to configure the bitcoind path
in apitest.properties
2020-07-22 10:58:20 -03:00
ghubstan
13a8396b45
Remove unnecessary curly braces 2020-07-20 15:05:10 -03:00
ghubstan
999e9ec93b
Fix @BeforeClass error handling and use jupiter api
The Scaffold set up was calling System.exit(1) when it encountered a
configuration error, or a problem starting bitcoind & bisq instances.
This incorrect error handling was hiding errors from gradle, and
preventing tests that would otherwise successfully complete.

This change fixes the problem by throwing an IllegalStateException up
to the test case's @BeforeClass method -- to be caught and used in a
JUnit fail(ex) call.  An 'initializationError' triggered in @BeforeClass
correctly bubbles up to gradle, and will not block execution of remaining
tests.  A gradle Test Summary containing any initialization errors is also
produced in <project-dir>/apitest/build/reports/tests/test/index.html

This change also fixes many import statements and asserts to ensure
'org.junit.jupiter.api.*' is used in place of 'org.junit.*', for
proper gradle integration.
2020-07-20 14:53:00 -03:00
cd2357
7fc5191798
Reuse sets of supported currencies
Reuse sets of supported currencies between pricenode classes and tests.
2020-07-20 18:14:38 +02:00
cd2357
329188db1d
Reduce number of exchange API calls when polling
Retrieve the exchange rates in bulk, when possible. This reduces
the number of calls the pricenode makes to the exchange API from N =
"number of exchange rates to retrieve" to N = 1.

The replaced approach, which made a separate call to the exchange API
for each exchange rate, was sometimes failing due to reaching API rate
limits.
2020-07-20 18:14:38 +02:00
cd2357
aceb7eef15
Renamed ExchangeRateProvider test class
Give a more accurate name to the abstract test class
which contains common methods used by all
ExchangeRateProvider tests, like BinanceTest or KrakenTest.

Mark this test class as abstract, to indicate that it
should not be run as a standalone test.
2020-07-20 18:14:37 +02:00
cd2357
75a0a47a1e
Mark new ExchangeRateProviders as package-private
Remove public modifier in their class definitions to
preserve their package-private scope.
2020-07-20 18:14:37 +02:00
cd2357
020547e19b
Remove Order annotation from ExchangeRateProviders
Remove Order annotation from rate providers, which was
used in the case that multiple providers would retrieve
rates for the same currency.

The ExchangeRateService now handles such scenarios, thus
eliminating the need for deciding provider precedence via
the Order annotation.
2020-07-20 18:14:37 +02:00
cd2357
5cffddc9ae
Rewrite else-if clause
Simplify if-else block to avoid redundant use of else-if
in combination with an empty check and a return statement.
2020-07-20 18:14:37 +02:00
cd2357
3e314a9d24
Rename exception variables to ex
Update the name of exception variables to ex for
consistency and better readability.
2020-07-20 18:14:37 +02:00
cd2357
141ead0b2f
Wrap comments at 90 characters
Update comments to reflect bisq-network/style#5 guideline
2020-07-20 18:14:37 +02:00
cd2357
c6ef40e5e4
Revert XChange version to keep jdk10 compatibility
Revert from latest v5.0.0 to v4.2.2, since the newer version libraries
are compiled with Java 11, so they cannot be used as part of the Bisq
build process which still partially relies on Java 10.
2020-07-20 18:14:37 +02:00
cd2357
671e80929a
Integrate initial set of ExchangeRateProviders
Add support for a few exchanges to demonstrate and test the pricenode
aggregate rates.

The chose exchanges were selected because they each provide a varied
list of fiat and altcoins, with a substantial overlap between them. This
 provides a robust initial set of datapoints and scenarios for aggregate
  rates.
2020-07-20 18:14:37 +02:00
cd2357
f650115580
ExchangeRateService: Support aggregate rates
Add support for aggregate rates in the ExchangeRateService. If multiple
ExchangeRateProviders contain rates for the same currency, then these
rates will be automatically aggregated (averaged) into one.

This allows the service to transparently scale to multiple providers for
 any specific currency.

The clients index the rates received from the pricenode by currency
code, which means they expect at most a single rate per currency. By
aggregating rates from multiple providers into one per currency, the
ExchangeRateService provides more accurate price data. At the same time,
the service API data structure remains intact, thus preserving backward
compatibility with all clients.
2020-07-20 18:14:37 +02:00
cd2357
f2085b4bf0
Simplify validation in ExchangeRateServiceTest
Update sanity check methods to allow for deeper and more comprehensive
validations of the input data. Accept full ExchangeRateProviders in the
method signatures, instead of just the provider prefix, to allow for
more complex sanity checks within those validation methods.
2020-07-20 18:14:37 +02:00
ghubstan
b4d3ea7e02
Add comment about Bisq DAO dev environment
Some explanation is needed about why Bob & Alice have non-zero
initial BTC and BSQ balances when tests run.  The comments
also include links to more detailed information about the DAO/
regtest testing environment.
2020-07-20 12:37:35 -03:00
ghubstan
591c8b295c
Change :apitest:test task system property name
The property name 'force' is changed 'runApiTests'.

To run the :apitest test task:

    ./gradlew :apitest:test -DrunApiTests=true
2020-07-20 12:33:47 -03:00
sqrrm
1ea244e4b5
Merge pull request #4368 from bisq-network/release/v1.3.6
Release/v1.3.6
2020-07-20 11:04:02 +02:00
ghubstan
bf584c218f
Move test cases into subproject test sources
This change reorganizes the ':apitest' subproject to conform to a
typical gradle project, where all JUnit test cases are located in
the subproject's test sources folder.  This makes running tests
from an IDE or gradle command line interface work as expected.
It will also help keep Travis CI configuration simple.

To avoid interfering in normal builds, the gradle ':apitest test' task
is disable by default;  API tests will only run when a '-Dforce-true'
system property is passed to gradle.

To run API tests, run a normal build and install dao-setup files:

    ./gradlew clean build :apitest:installDaoSetup

Then run the tests:

    ./gradlew :apitest:test -Dforce=true

Try to avoid adding the '-Dforce=true' property to any other gradle
tasks, because this enables the ':apitest test' task, and would kick
off API tests before a normal build completed.

The build.gradle file was modified to support this code reorg, and
the 'org.junit.jupiter' dependendency was upgraded to v5.6.2 -- only
in the ':apitest:test' dependency definiitions, not anywhere else in
the bisq dependency definitions.  The upgrade is necessary for
running ordered tests.

Since the scaffolding may be set up from either test cases (under the
test src folder), or a class under the main src folder, some changes
were made to ensure configuration paths are correct for either use
case.  For example, when the 'bisq-apitest' script is run from the root
project directory, the current working directory is the root project
directory.  When gradle or an IDE is used to run @Test cases, the
current working directory is :apitest subproject directory.

The main source's ApiTestMain class has been stripped down, and exists
only to keep the gradle build happy -- it needs a 'mainClassName'
property.  But this main driver does have uses.  See the class comments.

The other changes in this commit were made to fix style and syntax
problems.
2020-07-19 16:31:46 -03:00
ghubstan
7c974b22ac
Moving GrpcStubs to test sources 2020-07-19 14:18:34 -03:00
ghubstan
19346bbe78
Delete all JUnit related class from main sources
JUnit tests are being moved to the subproject's test sources
directory for the sake of convention -- for developers using
this test harness, and for IDE and gradle JUnit integration.
2020-07-19 13:43:25 -03:00
ghubstan
1847da0110
Delete unused bitcoin.conf from resources dir 2020-07-17 17:29:28 -03:00
ghubstan
f7d8c0e5c3
Do not use bitcoin.conf files
This change removes code for installing a regtest bitcoin.conf file.
It also removes an unused  bitcoin.conf file from the main resources
directory.

Now, the bitcoind startup command passes all configurations on the
command line.  (See bisq.apitest.linux.BitcoinDaemon.java)
2020-07-17 17:20:53 -03:00
ghubstan
8269a0df6d
Remove final modifier 2020-07-17 17:13:45 -03:00
ghubstan
5d7133a9b4
Do not subtract fee from 'bitcoin-cli sendtoaddress'
Test cases need to be as simple as possible for now.
2020-07-17 12:31:03 -03:00
ghubstan
2852e3da8b
Add JUnitHelper to run tests from JUnitCore 2020-07-16 20:54:20 -03:00
ghubstan
687bcf1d8f
Add FundWalletScenarioTest
Some refactoring was done to reduce some of the boilerplate.
2020-07-16 20:53:11 -03:00