Commit Graph

237 Commits

Author SHA1 Message Date
ghubstan
6b2c386a7c
Fix call rate metering interceptor bug
The gRPC interceptor was not using the correct method/ratemeter
map key, and failing to find a rate meter for the server call.

- Fix the rate meter key lookup bug.

- Disable most strict, default call rate meters in tests.
  Made an adjustment to the test harness' scaffold setup so an interceptor
  testing or disabling config file is always picked up by bob and alice
  daemons.

- Set arbitration daemon's registerDisputeAgent rate @ 10/second, so
  it does not interfere with the test harness.  (There is no pre-existing
  arb node appDataDir before that daemon starts.)

Note:  The test harness cannot install the custom rate metering file in
an arb daemon's appDataDir before it starts because there is no dao-setup
file for that node type.

TODO:  Adjust api simulation scripts to interceptor bug fix.
2021-02-27 21:47:52 -03:00
ghubstan
e8d1f03792
Clean up call rate meter config file in test teardown 2021-02-27 18:10:06 -03:00
ghubstan
98ff6cf9ef
Fix test bug 2021-02-27 18:01:45 -03:00
ghubstan
d60c0dd3ca
Display buyer's cost in api's gettrade output
The offer volume is shown so traders know how much fiat
they are sending or receiving without having to call getoffer.

Changed the 'Fiat Sent' and 'Fiat Received' column headers
to show which fiat is being transfered, e.g., 'EUR Sent',
'EUR Received'.

Adjusted apitest's trade-simulation-utils.sh to the modified
gettrade output.
2021-02-26 15:25:31 -03:00
ghubstan
6c0eac8942
Fix param order 2021-02-26 08:24:16 -03:00
ghubstan
3bc5d05bb6
Refactor apitest cases to use GrpcClient
This is a follow up to PR https://github.com/bisq-network/bisq/pull/5240,
which moved client side gRPC boilerplate to a new, reusable GrpcClient class.

From this change forward, all (including test) client side gRPC request/response
boilerplate should now live in GrpcClient.
2021-02-25 22:05:21 -03:00
ghubstan
b725f06514
Adjust api to new minimum fee per vbyte
The BaseCurrencyNetwork#getDefaultMinFeePerVbyte now returns
15 (sats/byte) since commit b341bb6e89.

This change adjusts the api to the new min tx fee rate by validating
the api's setTxFeeRatePreference param, and throwing an appropirate
exception if the param value is below the minimum.  Also adjusted a broken
test, and added a new test to check the appropriate exception is received
from the server.
2021-02-25 11:31:13 -03:00
ghubstan
4ac9fa5b8d
Add --help option to bot-script.json generator 2021-02-20 16:37:06 -03:00
ghubstan
9e48c32d40
Fix manual shutdown exception handling
Codacy is right.  Don't use instance of ex, add a catch clause.
Also removed an unnecessary fully qualified name 'String.format'.
2021-02-18 13:58:58 -03:00
ghubstan
f0e5e9b5d9
Merge branch 'master' into 02-scripted-bot-test 2021-02-18 13:06:18 -03:00
ghubstan
a7eb265ded
Add CLI testing bot to :apitest
RobotBob reads a json file instructing it to make and take offers
as per an 'actions' json array, e.g. ["make","take","take","make],
and the tester will manually run CLI commands provided by the bot
during each step in a trade.

The test case (ScriptedBotTest) can be run with the test harness,
which will start and shutdown all the regtest/dao app: bitcoind,
seednode, arbnode, bob & alice nodes.  The test case can also be
run without the test harness, and the user manages his own daemons.

Usage will be described in the PR before it leaves draft stage.
2021-02-18 12:52:16 -03:00
sqrrm
cd8c479276
Merge pull request #5159 from ghubstan/api-beta-test-guide
Api v1 Beta Test Guide
2021-02-18 16:47:33 +01:00
ghubstan
0efc9ff188
Add missing punctuation (.) 2021-02-16 09:36:24 -03:00
ghubstan
cdf15676db
Edit guide as per suggested changes
This commit contains changes suggested in review:
https://github.com/bisq-network/bisq/pull/5159#pullrequestreview-588900434
2021-02-11 17:51:33 -03:00
Christoph Atteneder
840b3dcae3
Merge pull request #5155 from ghubstan/01-fix-find-pid-on-osx
Fix find pid on OSX
2021-02-10 10:12:45 +01:00
ghubstan
2f6838e507
Rename apitest BisqApp -> BisqProcess
The old class name conflicted with destop's BisqApp.
2021-02-07 14:00:29 -03:00
ghubstan
711785631d
Fix typo 2021-02-06 16:44:19 -03:00
ghubstan
3107d99fb4
Provide Api v1 Beta Test Guide 2021-02-06 16:09:24 -03:00
ghubstan
bcf1b3b836
Fix find pid on OSX
The trade simulation scripts check that bitcoind, seed node,
arbitration node, and bob & alice nodes are running at startup,
but the bash pgrep command used to find the PIDs does not work on
OSX (my darwin20), so an adjustment was made to the env script to
find java PIDs with ps and awk if running on OSX.

Two additonal startup checks were added: make sure the script is
running on supported OS (Linux or OSX), and bitcoin-cli is in
the PATH.

Also removed usage error text about registering dispute agents.
The scripts do that now.
2021-02-04 19:16:19 -03:00
ghubstan
072364b490
Explain 'payment sent' implies 'funds deposited'
There is no need to simulate the time it takes between
receiving a 'payment sent' msg and having funds (fiat) deposited
in the seller's bank account.  But there is need to explain
that in the script.
2021-02-03 12:11:33 -03:00
ghubstan
99af81d51d
Remove DONE flag
There should not be a check on that flag in the rolling offers script.
Terminate the script with ^C.
2021-01-29 18:13:34 -03:00
ghubstan
e3f707fea6
Make executetrade simulation more realistic
Demonstrate how traders poll trade status as they go through
the protocol.
2021-01-29 18:04:02 -03:00
ghubstan
da5e1e5ade
Add functions for checking trade status 2021-01-29 13:53:23 -03:00
ghubstan
d580e77bf8
Try alternative syntax to make codacy happy
The codacy issue "$/${} is unnecessary on arithmetic variables"
seems to not apply to $(echo $((1 + $RANDOM % 10))), but we
try another syntax to make her happy.
2021-01-29 11:47:37 -03:00
ghubstan
27a4a31dcc
Add apitest rolling offer simulation script
The script demonstrats a way to always keep one offer in the market.
As soon as the offer is taken and the trade is completed, another
offer is placed.
2021-01-28 20:11:09 -03:00
ghubstan
74008e9385
Move createoffer command generation to its own function 2021-01-28 19:56:15 -03:00
ghubstan
5a78d18103
Refactor createpaymentacct and trade protocol functions
Code duplication needs to be reduced as new scripts are added.

- Refactor the createpaymentacct functions.
  The steps required to create a payment account are still
  displayed, but only for Alice, not Bob.

- Treat the trade protocol simulation as an atomic function.
  This will reduce 'main' simulation script size as new
  ones are added.
2021-01-28 19:33:21 -03:00
ghubstan
30a0f99861
Fix bash syntax inconsistencies
Many unnecesary braces around ${VARIABLE} references were removed.
2021-01-25 12:30:59 -03:00
ghubstan
184ffd14db
Enclose $vars in double quotes 2021-01-20 15:26:36 -03:00
ghubstan
78d0024368
Re-add exports to make codacy happy 2021-01-20 15:25:22 -03:00
ghubstan
7fa61c9a32
Remove deprecated python script 2021-01-20 15:14:20 -03:00
ghubstan
20e16493aa
Get current mkt price from server, not directly from feed 2021-01-20 15:13:07 -03:00
ghubstan
3244db12c4
Print current market price just before offer is created
This may help confirm offer.price correctness in periods of BTC
price stability.
2021-01-20 13:08:52 -03:00
ghubstan
cb96f27f1c
Remove uneeded ${curlies}
For requested change
https://github.com/bisq-network/bisq/pull/5093#discussion_r560941709
2021-01-20 11:52:29 -03:00
ghubstan
8b4938a9eb
Do not export vars from lowest level child script
For requested change
https://github.com/bisq-network/bisq/pull/5093#discussion_r560932201
2021-01-20 11:36:01 -03:00
ghubstan
0c06abdc56
Replace shortform '. with longform 'source'
For requested change
https://github.com/bisq-network/bisq/pull/5093#discussion_r560958418
2021-01-20 11:28:42 -03:00
ghubstan
6c322d4aae
Put $N variable references in double quotes
For requested change
https://github.com/bisq-network/bisq/pull/5093#discussion_r560938698
2021-01-20 11:20:30 -03:00
ghubstan
73c6b3d96b
Fix typo, group mutually exclusive opts around '||' 2021-01-20 11:16:54 -03:00
ghubstan
4eabb9804e
Fix indentation
For suggested change
https://github.com/bisq-network/bisq/pull/5093#discussion_r560898873
2021-01-20 10:35:53 -03:00
ghubstan
cf419d2d58
Make price request frequency configurable
Added a -w option to  allow user to control the frequency of price requests.
The minimum value = 20s, default value = 120s.
2021-01-19 16:13:21 -03:00
ghubstan
48a326b990
Add env requirement and usage comments 2021-01-19 15:00:47 -03:00
ghubstan
93c3735f9c
Fix bash bugs & style problems for codacy 2021-01-19 14:38:22 -03:00
ghubstan
873c661218
Add api trade simulation scripts
Two regtest trading simulation scripts are contained in this change:

- trade-simulation.sh goes through the steps of creating F2F payment
  accounts for Bob & Alice, and each step of a trade from createoffer to
  completion.

- limit-order-simulation.sh shows one way to trigger creation of an offer
  when a limit price is reached.

Each script prints CLI commands just before they are run.

Both scripts depend on functions contained in supporting bash and python3
scripts.

Examples:

trade-simulation.sh

  Simulate the entire trade protocol between Bob (taker) & Alice (maker),
  where Alice buys 0.1 BTC from Bob, paying in Renminbi (CYN).

  Note the script takes a country code (CN) not a currency code, so the
  script can create the appropriate country based face to face payment accounts.

  $ apitest/scripts/trade-simulation.sh -d buy -c cn -m 0.0 -a 0.1

limit-order.sh

  Create a CAD/BUY 0.1 BTC order at mkt price margin of 0.0% if price falls to
  or below 47900 CAD.

  Note the script takes a country code (CA) not a currency code, so the script
  can create the appropriate country based face to face  payment accounts.

  $ apitest/scripts/limit-order-simulation.sh -l 47900 -d buy -c CA -m 0.0 -a 0.1

  Create a USD/SELL 0.1 BTC order at mkt price margin of 0.0% if price rises to
  or above 37200 USD.

  $ apitest/scripts/limit-order-simulation.sh -l 37200 -d sell -c US -m 0.0 -a 0.1
2021-01-19 13:46:55 -03:00
ghubstan
49a3b46960
Add CoreHelpService gRPC stubs and test case 2021-01-14 10:22:14 -03:00
ghubstan
03a814f491
Adjust trade apitest cases, anticipating offerFilter.canTakeOffer
Refering to PR https://github.com/bisq-network/bisq/pull/5053.

Test cases need to explicitly use a matching fiat payment account
type when calling 'getoffers'.
2021-01-05 12:00:03 -03:00
ghubstan
18de222d38
Add new api methods 'getmyoffers' and 'getmyoffer'
Similar to 'getoffers' and 'getoffer', but filters out offers not
created by the user.  The new methods are so similar some offer list
filtering and sorting was refactored in CoreOffersService.

Also fixed some createoffer apitest cases in anticipation of a new OfferFilter,
which will filter out offers not matching any user payment account.
2021-01-04 21:43:34 -03:00
ghubstan
206364de42
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.
2020-12-29 14:12:55 -03:00
ghubstan
6594d147d3
Refactor wallet test fixtures into util 2020-12-29 13:54:27 -03:00
ghubstan
9250845a66
Explain why balance asserts are checking a range, not one value
And change log.info to log.debug.
2020-12-29 13:14:05 -03:00
ghubstan
2f7f14670c
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.
2020-12-28 14:32:16 -03:00