-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add LongRunningTradesTest to apitest #5303
Add LongRunningTradesTest to apitest #5303
Conversation
- Add PRICE_CHECK_FAILED to enum AvailabilityResult. - Add enum AvailabilityResult to TakeOfferReply message.
- GrpcErrorMessageHandler A new ErrorMessageHandler implementation to get around the api specific problem of having to use Task ErrorMessageHandlers that build task error messages for the UI. - GrpcExceptionHandler A new method for working with the ErrorMessageHandler interface. - GrpcTradesService, CoreApi, CoreTradesService: Ajdusted takeoffer error handling to give a failure reason provided by the new GrpcErrorMessageHandler.
Add debugging convenience to core.api.model.TxInfo.
This new api testcase can run long series' of regtest trades by looping over modified TakeBuyBTCOfferTest and TakeSellBTCOfferTest cases. The purpose is to help reproduce problems and isolate bugs Bisq's core and api layers. LongRunningTradesTest is not enabled by default; it will not run in a default test environment (such a Travis CI). Enviornment variable LONG_RUNNING_TRADES_TEST_ENABLED must exist for the test to run. The env variable can be set in a bash shell before running the test case in a shell (using a gradle command), or the environment variable can be set in an Intellij test launcher's Evironment variables field. The modifed (short running) TakeBuyBTCOfferTest and TakeSellBTCOfferTest cases run as before. Changes include: - Add static boolean isLongRunningTest to AbstractOfferTest. - Add looping control Supplier maxTradeStateAndPhaseChecks to AbstractTradeTest. It uses the isLongRunningTest flag in the superclass to help define the wait times for trade state/phase changes during short and long running tests. - Made AbstractTradeTest assert(true, trade.isDepositPublished) conditional upon isLongRunningTest value. Long running trade test asserts have to be looser due to increasing latency of wallet, offer and trade operations in the server as the trade counts increase. - Overload ApiTestCase#startSupportingApps with additional flag: startSupportingAppsInDebugMode. Default is false. This makes starting background apps in debug mode a bit more convenient and self explanatory.
- Add description msg TakeOfferReply proto, and fromProto method to core.offer.enum AvailabilityResult. The description field maps a client usable error message to the enum. - Adjust GrpcErrorMessageHandler to add AvailabilityResult.description() to takeoffer reply. - Refactor (split up) GrpcClient's takeOffer. Add getTakeOfferReply() to give clients a chance to make choices based on the reply's AvailabilityResult when the takeoffer command did not result in a trade. (Some errors are fatal, some not.)
I hope some of the other devs will help resolve this issue. To run the test case, clone this branch and run
|
This change uses recently added walletService.isAddressUnused to ensure the api's CoreWalletsService creates an unused address if none exists. - grpc.proto: Add bool isAddressUnused field to message AddressBalanceInfo. - AddressBalanceInfo: Adjust AddressBalanceInfo proto wrapper. - CoreWalletsService: Use walletService.isAddressUnused in getFundingAddresses. - GrpcClient: Adjust to modified AddressBalanceInfo. - TableFormat, ColumnHeaderConstants: Add 'Is Used' column to getfundingaddresses output. Note: bugfix is out of scope for this PR, but the test case helped expose this bug.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK
This new api testcase can run a long series of regtest trades by looping over modified
TakeBuyBTCOfferTest
andTakeSellBTCOfferTest
cases. The purpose is to help reproduce problems and isolate bugs Bisq's core and api layers.LongRunningTradesTest
is not enabled by default; it will not run in a default test environment (such a Travis CI). Enviornment variableLONG_RUNNING_TRADES_TEST_ENABLED
must exist for the test to run. The env variable can be set in a bash shell before running the test case in a shell (using a gradle command), or the environment variable can be set in an Intellij test launcher'sEnvironment variables
field.The modifed (short running)
TakeBuyBTCOfferTest
andTakeSellBTCOfferTest
cases run as before.Changes include:
Add
static boolean isLongRunningTest
toAbstractOfferTest
.Add looping control Supplier
maxTradeStateAndPhaseChecks
toAbstractTradeTest
. It uses theisLongRunningTest
flag in the superclass to help define the wait times for trade state/phase changes during short and long running tests.Made
AbstractTradeTest assert(true, trade.isDepositPublished)
conditional uponisLongRunningTest
value. Long running trade test asserts have to be looser due to increasing latency of wallet, offer and trade operations in the server as the trade counts increase.Overload
ApiTestCase#startSupportingApps
with additional flag:startSupportingAppsInDebugMode
. Default is false. This makes starting background apps in debug mode a bit more convenient and self explanatory.PR #5302 should be reviewed/merged before this one.