aboutsummaryrefslogtreecommitdiff
path: root/src/test
AgeCommit message (Collapse)Author
2016-11-07Get rid of nType and nVersionPieter Wuille
Remove the nType and nVersion as parameters to all serialization methods and functions. There is only one place where it's read and has an impact (in CAddress), and even there it does not impact any of the recursively invoked serializers. Instead, the few places that need nType or nVersion are changed to read it directly from the stream object, through GetType() and GetVersion() methods which are added to all stream classes.
2016-11-07Make GetSerializeSize a wrapper on top of CSizeComputerPieter Wuille
Given that in default GetSerializeSize implementations created by ADD_SERIALIZE_METHODS we're already using CSizeComputer(), get rid of the specialized GetSerializeSize methods everywhere, and just use CSizeComputer. This removes a lot of code which isn't actually used anywhere. For CCompactSize and CVarInt this actually removes a more efficient size computing algorithm, which is brought back in a later commit.
2016-11-07Merge #8976: libconsensus: Add input validation of flagsWladimir J. van der Laan
5ca8ef2 libconsensus: Add input validation of flags (Wladimir J. van der Laan)
2016-11-07Merge #7730: Remove priority estimationWladimir J. van der Laan
0bd581a add release notes for removal of priority estimation (Alex Morcos) b2322e0 Remove priority estimation (Alex Morcos)
2016-11-07Remove priority estimationAlex Morcos
2016-11-07Merge #8675: Make copyright header lines uniformWladimir J. van der Laan
4b04e32 [copyright] copyright header style uniform (isle2983)
2016-11-07Merge #8708: net: have CConnman handle message sendingWladimir J. van der Laan
9027680 net: handle version push in InitializeNode (Cory Fields) 7588b85 net: construct CNodeStates in place (Cory Fields) 440f1d3 net: remove now-unused ssSend and Fuzz (Cory Fields) 5c2169c drop the optimistic write counter hack (Cory Fields) ea33268 net: switch all callers to connman for pushing messages (Cory Fields) 3e32cd0 connman is in charge of pushing messages (Cory Fields) b98c14c serialization: teach serializers variadics (Cory Fields)
2016-11-07Merge #9070: Lockedpool fixesWladimir J. van der Laan
b3ddc5e LockedPool: avoid quadratic-time allocation (Kaz Wesley) 0b59f80 LockedPool: fix explosion for illegal-sized alloc (Kaz Wesley) 21b8f3d LockedPool: test handling of invalid allocations (Kaz Wesley)
2016-11-06[copyright] copyright header style uniformisle2983
Three categories of modifications: 1) 1 instance of 'The Bitcoin Core developers \n', 1 instance of 'the Bitcoin Core developers\n', 3 instances of 'Bitcoin Core Developers\n', and 12 instances of 'The Bitcoin developers\n' are made uniform with the 443 instances of 'The Bitcoin Core developers\n' 2) 3 instances of 'BitPay, Inc\.\n' are made uniform with the other 6 instances of 'BitPay Inc\.\n' 3) 4 instances where there was no '(c)' between the 'Copyright' and the year where it deviates from the style of the local directory.
2016-11-04Merge #9069: Clean up bctest.py and bitcoin-util-test.pyWladimir J. van der Laan
2b175d4 Clean up bctest.py and bitcoin-util-test.py (John Newbery)
2016-11-03net: handle version push in InitializeNodeCory Fields
2016-11-03connman is in charge of pushing messagesCory Fields
The changes here are dense and subtle, but hopefully all is more explicit than before. - CConnman is now in charge of sending data rather than the nodes themselves. This is necessary because many decisions need to be made with all nodes in mind, and a model that requires the nodes calling up to their manager quickly turns to spaghetti. - The per-node-serializer (ssSend) has been replaced with a (quasi-)const send-version. Since the send version for serialization can only change once per connection, we now explicitly tag messages with INIT_PROTO_VERSION if they are sent before the handshake. With this done, there's no need to lock for access to nSendVersion. Also, a new stream is used for each message, so there's no need to lock during the serialization process. - This takes care of accounting for optimistic sends, so the nOptimisticBytesWritten hack can be removed. - -dropmessagestest and -fuzzmessagestest have not been preserved, as I suspect they haven't been used in years.
2016-11-03serialization: teach serializers variadicsCory Fields
Also add a variadic CDataStream ctor for ease-of-use.
2016-11-03Clean up bctest.py and bitcoin-util-test.pyJohn Newbery
- remove newlines - change tabs for spaces, to align with convention in other py files - add comments - add 'Bitcoin Core Developers' copyright notice
2016-11-03Merge #9050: net: make a few values immutable, and use deterministic ↵Wladimir J. van der Laan
randomness for the localnonce 59ac5c5 net: Use deterministic randomness for CNode's nonce, and make it const (Cory Fields) aff6584 net: constify a few CNode vars to indicate that they're threadsafe (Cory Fields)
2016-11-03Merge #9053: IBD using chainwork instead of height and not using header ↵Pieter Wuille
timestamps e141beb IsInitialBlockDownload no longer uses header-only timestamps. (Gregory Maxwell) 2082b55 Remove GetTotalBlocksEstimate and checkpoint tests that test nothing. (Gregory Maxwell) fd46136 IBD check uses minimumchain work instead of checkpoints. (Gregory Maxwell)
2016-11-02LockedPool: avoid quadratic-time allocationKaz Wesley
Use separate maps for used/free chunks to avoid linear scan through alloced chunks for each alloc.
2016-11-02Merge #9065: Merge `doc/unit-tests.md` into `src/test/README.md`MarcoFalke
eedc461 Merge `doc/unit-tests.md` into `src/test/README.md` (Wladimir J. van der Laan)
2016-11-02LockedPool: test handling of invalid allocationsKaz Wesley
(Currently fails due to bug)
2016-11-02Merge #9066: tests: Remove variable unused after refactoringWladimir J. van der Laan
f91afe9 trivial: Remove variable unused after refactoring (Daniel Kraft)
2016-11-02trivial: Remove variable unused after refactoringDaniel Kraft
Remove a variable that is now unused after the recent refactoring (in 51f278329d43398428d60f5986f8d29a2041d28d) but has not been cleaned up so far.
2016-11-02Add logging to bitcoin-util-test.pyjnewbery
- Use the python standard logging library - Run all tests and report all failing test-cases (rather than stop after one test case fails) - If output is different from expected output, log a contextual diff.
2016-11-02Merge `doc/unit-tests.md` into `src/test/README.md`Wladimir J. van der Laan
Refer to the right file in the top-level README.md. Having only one file with test documentation saves some confusion about where things are documented.
2016-11-02Merge #8753: Locked memory managerWladimir J. van der Laan
444c673 bench: Add benchmark for lockedpool allocation/deallocation (Wladimir J. van der Laan) 6567999 rpc: Add `getmemoryinfo` call (Wladimir J. van der Laan) 4536148 support: Add LockedPool (Wladimir J. van der Laan) f4d1fc2 wallet: Get rid of LockObject and UnlockObject calls in key.h (Wladimir J. van der Laan) 999e4c9 wallet: Change CCrypter to use vectors with secure allocator (Wladimir J. van der Laan)
2016-11-02Remove GetTotalBlocksEstimate and checkpoint tests that test nothing.Gregory Maxwell
GetTotalBlocksEstimate is no longer used and it was the only thing the checkpoint tests were testing. Since checkpoints are on their way out it makes more sense to remove the test file than to cook up a new pointless test.
2016-10-31net: Use deterministic randomness for CNode's nonce, and make it constCory Fields
2016-10-28test: Add format-dependent comparison to bctestWladimir J. van der Laan
This splits the output comparison for `bitcoin-tx` into two steps: - First, check for data mismatch, parsing the data as json or hex depending on the extension of the output file - Then, check if the literal string matches For either of these cases give a different error. This prevents wild goose chases when e.g. a trailing space doesn't match exactly, and makes sure that both test output and examples are valid data of the purported format.
2016-10-27support: Add LockedPoolWladimir J. van der Laan
Add a pool for locked memory chunks, replacing LockedPageManager. This is something I've been wanting to do for a long time. The current approach of locking objects where they happen to be on the stack or heap in-place causes a lot of mlock/munlock system call overhead, slowing down any handling of keys. Also locked memory is a limited resource on many operating systems (and using a lot of it bogs down the system), so the previous approach of locking every page that may contain any key information (but also other information) is wasteful.
2016-10-21Return shared_ptr<CTransaction> from mempool removesPieter Wuille
2016-10-21Make removed and conflicted arguments optional to removePieter Wuille
2016-10-20libconsensus: Add input validation of flagsWladimir J. van der Laan
Makes it an error to use flags that have not been defined on the libconsensus API. There has been some confusion as to what pass to libconsensus, and (combined with mention in the release notes) this should clear it up. Using undocumented flags is a risk because their meaning, and what combinations are allowed, changes from release to release. E.g. it is no longer possible to pass (CLEANSTACK | P2SH) without running into an assertion after the segwit changes.
2016-10-19Merge #8927: Add script tests for FindAndDelete in pre-segwit and segwit scriptsWladimir J. van der Laan
acf853d Add script tests for FindAndDelete in pre-segwit and segwit scripts (Johnson Lau)
2016-10-19Merge #7948: RPC: augment getblockchaininfo bip9_softforks dataWladimir J. van der Laan
fc14609 RPC: augment getblockchaininfo bip9_softforks data (mruddy)
2016-10-19RPC: augment getblockchaininfo bip9_softforks datamruddy
2016-10-19[RPC] Give RPC commands more information about the RPC requestJonas Schnelli
2016-10-18Merge #8865: Decouple peer-processing-logic from block-connection-logicWladimir J. van der Laan
a9aec5c Use BlockChecked signal to send reject messages from mapBlockSource (Matt Corallo) 7565e03 Remove SyncWithWallets wrapper function (Matt Corallo) 12ee1fe Always call UpdatedBlockTip, even if blocks were only disconnected (Matt Corallo) f5efa28 Remove CConnman parameter from ProcessNewBlock/ActivateBestChain (Matt Corallo) fef1010 Use CValidationInterface from chain logic to notify peer logic (Matt Corallo) aefcb7b Move net-processing logic definitions together in main.h (Matt Corallo) 0278fb5 Remove duplicate nBlocksEstimate cmp (we already checked IsIBD()) (Matt Corallo) 87e7d72 Make validationinterface.UpdatedBlockTip more verbose (Matt Corallo)
2016-10-18Merge #8223: [c++11] Use std::unique_ptr for block creation.Wladimir J. van der Laan
9fce062 [c++11] Use std::unique_ptr for block creation. (Daniel Kraft)
2016-10-18Merge #8914: Kill insecure_random and associated global stateWladimir J. van der Laan
5eaaa83 Kill insecure_random and associated global state (Wladimir J. van der Laan)
2016-10-17Kill insecure_random and associated global stateWladimir J. van der Laan
There are only a few uses of `insecure_random` outside the tests. This PR replaces uses of insecure_random (and its accompanying global state) in the core code with an FastRandomContext that is automatically seeded on creation. This is meant to be used for inner loops. The FastRandomContext can be in the outer scope, or the class itself, then rand32() is used inside the loop. Useful e.g. for pushing addresses in CNode or the fee rounding, or randomization for coin selection. As a context is created per purpose, thus it gets rid of cross-thread unprotected shared usage of a single set of globals, this should also get rid of the potential race conditions. - I'd say TxMempool::check is not called enough to warrant using a special fast random context, this is switched to GetRand() (open for discussion...) - The use of `insecure_rand` in ConnectThroughProxy has been replaced by an atomic integer counter. The only goal here is to have a different credentials pair for each connection to go on a different Tor circuit, it does not need to be random nor unpredictable. - To avoid having a FastRandomContext on every CNode, the context is passed into PushAddress as appropriate. There remains an insecure_random for test usage in `test_random.h`.
2016-10-17test segwit uncompressed key fixesJohnson Lau
2016-10-16Require compressed keys in segwit as policy and disable signing with ↵Johnson Lau
uncompressed keys for segwit scripts
2016-10-16Add script tests for FindAndDelete in pre-segwit and segwit scriptsJohnson Lau
2016-10-13Merge #8817: update bitcoin-tx to output witness dataWladimir J. van der Laan
4408558 Update bitcoin-tx to output witness data. (jonnynewbs)
2016-10-10Merge #8393: Support for compact blocks together with segwitPieter Wuille
27acfc1 [qa] Update p2p-compactblocks.py for compactblocks v2 (Suhas Daftuar) 422fac6 [qa] Add support for compactblocks v2 to mininode (Suhas Daftuar) f5b9b8f [qa] Fix bug in mininode witness deserialization (Suhas Daftuar) 6aa28ab Use cmpctblock type 2 for segwit-enabled transfer (Pieter Wuille) be7555f Fix overly-prescriptive p2p-segwit test for new fetch logic (Matt Corallo) 06128da Make GetFetchFlags always request witness objects from witness peers (Matt Corallo)
2016-10-05add verbose mode to bitcoin-util-test.pyjnewbery
2016-10-05Update bitcoin-tx to output witness data.jonnynewbs
2016-10-04Remove CConnman parameter from ProcessNewBlock/ActivateBestChainMatt Corallo
2016-10-04Use cmpctblock type 2 for segwit-enabled transferPieter Wuille
Contains version negotiation logic by Matt Corallo and bugfixes by Suhas Daftuar.
2016-09-30Merge #8830: [test] Add option to run bitcoin-util-test.py manuallyWladimir J. van der Laan
b82f493 Add option to run bitcoin-util-test.py manually (jnewbery)
2016-09-29bitcoin-util-test.py should fail if the output file is emptyjnewbery