aboutsummaryrefslogtreecommitdiff
path: root/qa/rpc-tests/comptool.py
AgeCommit message (Collapse)Author
2015-05-18[QA] restructure rpc tests directoryJonas Schnelli
* move non-test classes to subdir `test-framework`
2015-05-01Fix comptool send_message call when MAX_INV_SZ reachedSuhas Daftuar
2015-05-01Fix potential race conditions in p2p testing frameworkSuhas Daftuar
Previously, each NodeConnCB had its own lock to synchronize data structures used by the testing thread and the networking thread, and NodeConn provided a separate additional lock for synchronizing access to each send buffer. This commit replaces those locks with a single global lock (mininode_lock) that we use to synchronize access to all data structures shared by the two threads. Updates comptool and maxblocksinflight to use the new synchronization semantics, eliminating previous race conditions within comptool, and re-enables invalidblockrequest.py in travis.
2015-04-28Add comparison tool test runner, built on mininodeSuhas Daftuar
comptool.py creates a tool for running a test suite on top of the mininode p2p framework. It supports two types of tests: those for which we expect certain behavior (acceptance or rejection of a block or transaction) and those for which we are just comparing that the behavior of 2 or more nodes is the same. blockstore.py defines BlockStore and TxStore, which provide db-backed maps between block/tx hashes and the corresponding block or tx. blocktools.py defines utility functions for creating and manipulating blocks and transactions. invalidblockrequest.py is an example test in the comptool framework, which tests the behavior of a single node when sent two different types of invalid blocks (a block with a duplicated transaction and a block with a bad coinbase value).