Commit Graph

15 Commits

Author SHA1 Message Date
Alexander Block
5299d39338 Multiple refactorings/fixes for LLMQ bases InstantSend and ChainLocks (#2779)
* Remove unused parameters from CInstantSendManager::ProcessTx

* Pass txHash in CheckCanLock by reference instead of pointer

* Dont' allow locking of TXs without inputs

* Remove unused local variable nInstantSendConfirmationsRequired

* Don't subtract 1 from nInstantSendConfirmationsRequired

This was necessary in the old system but is not necessary in the new system.
It also prevented proper retroactive signing of chained TXs in regtest as
it resulted in child TXs to return true immediately for CheckCanLock when
it should actually have waited for the parent TX to become locked first.

* Access chainActive.Height() while cs_main is locked

* Properly read and write lastChainLockBlock

"pindex" is NOT the chainlocked block after the while loop finishes. We
must use the pindex (renamed to pindexChainLock now) given on method entry.

Also, the GetLastChainLockBlock() result was not assigned to,
lastChainLockBlock which resulted in the while loop to run unnecessarily
long.

* Generalize filtering in NewPoWValidBlock and SyncTransaction

We're actually interested in all TXs that have inputs, so no need to
explicitly check for tx types.

* Use tx.IsCoinBase() instead of checking for index 0

* Handle cases where a TX is not received yet in wait_for_instantlock

* Wait on all nodes for the locks

Otherwise we end up with the sender having it locked but other nodes
not yet, failing the test.

* Fix LogPrintf call in CChainLocksHandler::DoInvalidateBlock
2019-03-19 10:38:16 +03:00
UdjinM6
e52763d21b Refactor and fix instantsend tests/utils (#2776)
* Unify autoIS/send_smth functions

* Rename autoix-mempool.py -> autois-mempool.py

* Make sure create_raw_trx produces expected results

* Make sure sender has enough inputs and nodes are synced before starting the actual test

* Mine one block to clean mempool up

* 2 blocks is enough for IS on regtest

This also unifies it across different IS tests

* Allow wait_for_instantlock to be called on any node, not only on the one that has the tx in the wallet

* No need to query for tx this often in wait_for_instantlock

* Rename create_raw_trx -> create_raw_tx

* Fund sender with a single TX instead of 30
2019-03-18 14:50:44 +01:00
Alexander Block
a69a5cf4a0 Use smaller (3 out of 5) quorums for regtest/Travis (#2774)
* Require only 3 out of 5 signatures for old InstantSend in regtest mode

* Use LLMQs of size 5 with threshold of 3 for regtest

* Fix wrong check for out-of-range bits in CFixedBitSet

* Reduce number of masternodes in masternode/LLMQ tests

* Add missing \n to LogPrintf call

* Use correct indexes for isolated/receiver/sender nodes

The way it was before resulted in nodes 1-3 being unused and 6-8 being used
for these 3 special nodes even though these are masternodes.

* Avoid stopping/starting isolated node in p2p-instantsend.py

It's enough to disable networking for this node.
2019-03-15 11:48:24 +03:00
UdjinM6
fbf0dcb086
Various small cleanups (#2761)
* Fix remaining `print`s in tests

* use AssertLockHeld(cs) instead of relying on comments

* actually use `clsig` in `EnforceBestChainLock()`

* fix log output in `EnforceBestChainLock()`

* drop comments
2019-03-11 16:32:26 +03:00
UdjinM6
9f40afce86
Merge pull request #2727 from PastaPastaPasta/backports-0.15-pr7
Backports 0.15 pr7
2019-03-11 11:15:51 +03:00
Alexander Block
0e91ebcf42 Use logging framework in Dash specific tests 2019-03-08 14:22:40 -06:00
Alexander Block
3e60d2d2db Adjust LLMQ based InstantSend tests for new spork20 2019-03-07 21:15:09 +01:00
UdjinM6
a8da11ac5d update p2p-instantsend.py to test both "old" and "new" InstantSend 2019-03-07 21:15:09 +01:00
UdjinM6
25cb14b615 Fix confusion between dip3 activation and enforcement (#2651)
* Fix confusion between dip3 activation and enforcement

* drop DIP0003ActivationHeight for now
2019-01-29 15:54:38 +01:00
Alexander Block
7ee31cbd65 Speed up integration tests with masternodes (#2642)
* Implement copy_datadir to allow easy copying of state from one node to another

* Instead of starting with a fresh datadir for MNs, reuse a copy of the faucet

* Start masternodes in parallel instead of waiting for the previous to finish

* Allow specifying of window and threshold with -bip9params

* Implement -dip3activationheight for regtests

* Implement fast DIP3 activation in DashTestFramework

* Speed up activation of DIP3 in dip3-deterministicmns.py

* Update qa/rpc-tests/test_framework/test_framework.py

Co-Authored-By: codablock <ablock84@gmail.com>

* Always assign fast_dip3_activation
2019-01-23 19:36:51 +03:00
Alexander Block
245c3220e9
Sync blocks before creating TXs (#2496) 2018-11-26 13:40:36 +01:00
UdjinM6
51addf9a03
Fix p2p-instantsend.py test (#2408) 2018-11-02 00:58:57 +03:00
gladcow
11a0cbf84d InstantSend-related tests refactoring (#2333)
* create base class for dash-specific tests

* use common base class in p2p-autoinstantsend.py

* use common base class in p2p-instantsend.py

* rename check_IX_lock to wait_for_instantlock
2018-10-20 17:08:02 +03:00
gladcow
81d60bc283 Fix the issue with transaction amount precision in IS tests (#2353)
* fix issue with trx amounts precision in autoix-mempool.py

* fix issue with trx amounts precision in p2p-autoinstantsend.py

* fix issue with trx amounts precision in p2p-instantsend.py

* Rallback adding empty line

* Rallback adding empty line
2018-10-18 16:24:30 +03:00
gladcow
6da2837bdd InstantSend Integration tests (#2141)
* adjust `AddLocal` method only in regtest mode

* Create Masternodes in regtest

* sentinelping call for masternodes

* set externalip option for masternodes in regtest

* fix MNB relay during masternodes creation

* fix node_count naming

* instantsend doublespend

* decrease node restarts

* prevent spending masternode collaterals

* move long test to the test list start

* remove InstantSend spork sending

* remove spork-specific code

* fix checking double spend rejection
2018-07-12 12:04:42 +03:00