aboutsummaryrefslogtreecommitdiff
path: root/qa/rpc-tests/util.py
AgeCommit message (Collapse)Author
2015-05-18[QA] restructure rpc tests directoryJonas Schnelli
* move non-test classes to subdir `test-framework`
2015-05-13Merge pull request #5159Wladimir J. van der Laan
b649e03 Create new BlockPolicyEstimator for fee estimates (Alex Morcos)
2015-05-13Create new BlockPolicyEstimator for fee estimatesAlex Morcos
This class groups transactions that have been confirmed in blocks into buckets, based on either their fee or their priority. Then for each bucket, the class calculates what percentage of the transactions were confirmed within various numbers of blocks. It does this by keeping an exponentially decaying moving history for each bucket and confirm block count of the percentage of transactions in that bucket that were confirmed within that number of blocks. -Eliminate txs which didn't have all inputs available at entry from fee/pri calcs -Add dynamic breakpoints and tracking of confirmation delays in mempool transactions -Remove old CMinerPolicyEstimator and CBlockAverage code -New smartfees.py -Pass a flag to the estimation code, using IsInitialBlockDownload as a proxy for when we are still catching up and we shouldn't be counting how many blocks it takes for transactions to be included. -Add a policyestimator unit test
2015-05-04Merge pull request #6085Wladimir J. van der Laan
b05a89b Non-grammatical language improvements (Luke Dashjr) 7e6d23b Bugfix: Grammar fixes (Corinne Dashjr)
2015-05-01Bugfix: Grammar fixesCorinne Dashjr
2015-04-28Add some travis debugging for python scriptsSuhas Daftuar
Adds printing to the console before/after calls to bitcoin-cli -rpcwait, if the PYTHON_DEBUG environment variable is initialized.
2015-04-28Python p2p testing frameworkSuhas Daftuar
mininode.py provides a framework for connecting to a bitcoin node over the p2p network. NodeConn is the main object that manages connectivity to a node and provides callbacks; the interface for those callbacks is defined by NodeConnCB. Defined also are all data structures from bitcoin core that pass on the network (CBlock, CTransaction, etc), along with de-/serialization functions. maxblocksinflight.py is an example test using this framework that tests whether a node is limiting the maximum number of in-flight block requests. This also adds support to util.py for specifying the binary to use when starting nodes (for tests that compare the behavior of different bitcoind versions), and adds maxblocksinflight.py to the pull tester.
2015-04-22Add block pruning functionalitymrbandrews
This adds a -prune=N option to bitcoind, which if set to N>0 will enable block file pruning. When pruning is enabled, block and undo files will be deleted to try to keep total space used by those files to below the prune target (N, in MB) specified by the user, subject to some constraints: - The last 288 blocks on the main chain are always kept (MIN_BLOCKS_TO_KEEP), - N must be at least 550MB (chosen as a value for the target that could reasonably be met, with some assumptions about block sizes, orphan rates, etc; see comment in main.h), - No blocks are pruned until chainActive is at least 100,000 blocks long (on mainnet; defined separately for mainnet, testnet, and regtest in chainparams as nPruneAfterHeight). This unsets NODE_NETWORK if pruning is enabled. Also included is an RPC test for pruning (pruning.py). Thanks to @rdponticelli for earlier work on this feature; this is based in part off that work.
2015-04-01Introduce separate 'generate' RPC callPieter Wuille
2014-12-02Coinbases-in-mempool regression testGavin Andresen
Immature coinbase spends are allowed in the memory pool if they can be mined in the next block. They are not allowed in the memory pool if they cannot be mined in the next block. This regression test tests those edge cases.
2014-12-01[REST] add REST interface tests in rpc-test sectionJonas Schnelli
2014-11-20Port of wallet.sh to python (wallet.py).mrbandrews
Also included are minor edits to util.py to create a clean blockchain and add a parameter to gather_inputs to specify number of confirmations.
2014-11-17RPC tests: create initial chain with specific timestampsGavin Andresen
Use setmocktime to create the initial block chain with 10-minute-apart-blocks starting 1 Jan 2014.
2014-11-14don't override dir() in qa rpc testsBryan Bishop
Replace "dir" with "dirname" in util.py in qa/rpc-tests/ because "dir" is the name of a function in python.
2014-11-07gather_inputs: use correct variable in error messagedexX7
"amount" and "fee" do not exist (anymore?).
2014-10-31tests: allow rpc-tests to get filenames for bitcoind and bitcoin-cli from ↵Cory Fields
the environment This will allow for windows tests to run with bitcoind.exe and bitcoin-cli.exe
2014-10-27Merge pull request #5139Gavin Andresen
9f87325 Start with tidier cache directories (Gavin Andresen) Signed-off-by: Gavin Andresen <gavinandresen@gmail.com>
2014-10-27Merge pull request #5121Wladimir J. van der Laan
214091d Update license in pull-tester and rpc-tests (Michael Ford)
2014-10-24Start with tidier cache directoriesGavin Andresen
Remove more files from the cached, 200-block-chain data directories.
2014-10-24Work around #5113.Daniel Kraft
2014-10-23Update license in pull-tester and rpc-testsMichael Ford
Add missing copyright/license header where necessary
2014-09-05Fix make_change to not create half-satoshisGavin Andresen
2014-07-15Merge pull request #4522 from dgenr8/set_discover_0Gavin Andresen
Set -discover=0 in regtest framework
2014-07-13Set -discover=0 in regtest frameworkTom Harding
The regtest framework is local, so often there is no need to discover our external IP. Setting -discover=0 in util.py works around shutdown hang caused by GetExternalIP waiting in recv().
2014-07-11Add test for getblocktemplate longpollingWladimir J. van der Laan
2014-07-09Print better errors, and add util stop_node() function.Gavin Andresen
2014-06-23qa/rpc_tests: Wait for handshake to complete in connect_nodesWladimir J. van der Laan
This avoids a race condition in which the connection was made but the version handshake is not completed yet. In that case transactions won't be broadcasted to a peer yet, and the nodes will wait forever for their mempools to sync.
2014-06-06estimatefee / estimatepriority RPC methodsGavin Andresen
New RPC methods: return an estimate of the fee (or priority) a transaction needs to be likely to confirm in a given number of blocks. Mike Hearn created the first version of this method for estimating fees. It works as follows: For transactions that took 1 to N (I picked N=25) blocks to confirm, keep N buckets with at most 100 entries in each recording the fees-per-kilobyte paid by those transactions. (separate buckets are kept for transactions that confirmed because they are high-priority) The buckets are filled as blocks are found, and are saved/restored in a new fee_estiamtes.dat file in the data directory. A few variations on Mike's initial scheme: To estimate the fee needed for a transaction to confirm in X buckets, all of the samples in all of the buckets are used and a median of all of the data is used to make the estimate. For example, imagine 25 buckets each containing the full 100 entries. Those 2,500 samples are sorted, and the estimate of the fee needed to confirm in the very next block is the 50'th-highest-fee-entry in that sorted list; the estimate of the fee needed to confirm in the next two blocks is the 150'th-highest-fee-entry, etc. That algorithm has the nice property that estimates of how much fee you need to pay to get confirmed in block N will always be greater than or equal to the estimate for block N+1. It would clearly be wrong to say "pay 11 uBTC and you'll get confirmed in 3 blocks, but pay 12 uBTC and it will take LONGER". A single block will not contribute more than 10 entries to any one bucket, so a single miner and a large block cannot overwhelm the estimates.
2014-06-06Allow multiple regression tests to run at onceGavin Andresen
Choose ports at startup based on PID, so multiple regression tests can run on the same system at the same time.
2014-05-13Add Python test for -rpcbind and -rpcallowipWladimir J. van der Laan
Add a new test, `rpcbind_test.py`, that extensively tests the new `-rpcbind` functionality.
2014-04-02Have pull-tester run the listtransactions.py regression testGavin Andresen
This should show how to run a python-based regression test successfully in the pull-tester environment.
2014-03-24Fix regression testsGavin Andresen
Taught bitcoind to close the HTTP connection after it gets a 'stop' command, to make it easier for the regression tests to cleanly stop. Move bitcoinrpc files to correct location. Tidied up the python-based regression tests.
2014-03-18Add licenses for tests and test dataWladimir J. van der Laan
- Add license headers to source files (years based on commit dates) in `src/test` as well as `qa` - Add `README.md` to `src/test/data` specifying MIT license Fixes #3848
2014-02-28Python-based regression testsGavin Andresen
skeleton.py : a do-nothing test skeleton listtransactions.py : start of regression test for listtransactions call