Commit graph

69 commits

Author SHA1 Message Date
MarcoFalke
fa4cd2e998 qa: Check return code when stopping nodes
This includes work by jnewbery
2017-02-23 03:05:43 +01:00
John Newbery
9db8eecac1 Fix RPC failure testing
Make sure that RPC tests are actually checking failures correctly by:

- Catching JSON RPC exceptions and verifying the error codes and messages.
- Failing the test case if the JSON RPC exception isn't raised.
2017-02-08 10:24:02 -05:00
Wladimir J. van der Laan
7cb024eba6
Merge #9222: Add 'subtractFeeFromAmount' option to 'fundrawtransaction'.
453bda6 Add 'subtractFeeFromOutputs' option to 'fundrawtransaction'. (Chris Moore)
2017-01-12 12:49:10 +01:00
Wladimir J. van der Laan
2ca9dcd5b9 test: Add test for RPC named arguments
Add RPC testcase for RPC named arguments.
2017-01-05 11:30:20 +01:00
Chris Moore
453bda63dd Add 'subtractFeeFromOutputs' option to 'fundrawtransaction'. 2016-12-13 13:36:23 -08:00
MarcoFalke
fa2ecc48fb [qa] pruning: Use cached utxo set to run faster 2016-12-04 21:30:20 +01:00
MarcoFalke
9e4bb312e6
Merge #9221: [qa] Get rid of duplicate code
facbfa5 [qa] Get rid of duplicate code (MarcoFalke)
2016-12-02 20:17:51 +01:00
MarcoFalke
facbfa5816 [qa] Get rid of duplicate code 2016-12-02 16:32:00 +01:00
fsb4000
15fa95d7e5 Fix some typos 2016-11-28 16:16:37 +07:00
MarcoFalke
0de7fd36de
Merge #9139: Change sync_blocks to pick smarter maxheight (on top of #9196)
1126c85 [qa] Change sync_blocks to pick smarter maxheight (Russell Yanofsky)
2016-11-23 13:01:53 +01:00
mrbandrews
307acdd3df [qa] add assert_raises_message to check specific error message 2016-11-15 15:37:46 -05:00
Russell Yanofsky
7943b13ab3 [qa] Avoid 2 list comprehensions in sync_blocks 2016-11-14 12:02:33 -05:00
Russell Yanofsky
05e57ccd74 [qa] Fix sync_blocks timeout argument
Motivation for this change is mainly to make sync_blocks behavior easier to
understand. Behavior is unchanged in the normal case when there are only 2
nodes in the rpc_connections set. When there are more than 2 nodes, the
previous "timeout -= wait" statement wouldn't take into account time spent
waiting for all nodes and as a result could lead to blocking for longer than
the requested timeout.
2016-11-14 12:02:31 -05:00
Russell Yanofsky
fd6bb700b7 [qa] Improve sync_blocks error messages. 2016-11-14 12:01:51 -05:00
Russell Yanofsky
1126c853d9 [qa] Change sync_blocks to pick smarter maxheight
Instead of syncing to max height returned by the waitforblockheight RPC, sync
to the max height returned by the getblockcount RPC.

This change was suggested by Suhas Daftuar <sdaftuar@chaincode.com>.
2016-11-11 15:46:14 -05:00
MarcoFalke
fa97ccb06d [qa] util: Rework sync_*()
* Only allow named args in sync_*()
* Make sync_* fails more verbose
* Add timeout to sync_chain()
2016-11-07 20:42:21 +01:00
Russell Yanofsky
8463aaa63c [qa] Increase wallet-dump RPC timeout
Increase wallet-dump RPC timeout from 30 seconds to 1 minute. This avoids a
timeout error that seemed to happen regularly (around 50% of builds) on a
particular jenkins server during the first getnewaddress RPC call made by the
test.

The failing stack trace looked like:

    Unexpected exception caught during testing: timeout('timed out',)

    File ".../bitcoin/qa/rpc-tests/test_framework/test_framework.py", line 146, in main
      self.run_test()
    File ".../bitcoin/qa/rpc-tests/wallet-dump.py", line 73, in run_test
      addr = self.nodes[0].getnewaddress()
    File ".../bitcoin/qa/rpc-tests/test_framework/coverage.py", line 49, in __call__
      return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
    File ".../bitcoin/qa/rpc-tests/test_framework/authproxy.py", line 145, in __call__
      response = self._request('POST', self.__url.path, postdata.encode('utf-8'))
    File ".../bitcoin/qa/rpc-tests/test_framework/authproxy.py", line 121, in _request
      return self._get_response()
    File ".../bitcoin/qa/rpc-tests/test_framework/authproxy.py", line 160, in _get_response
      http_response = self.__conn.getresponse()
    File "/usr/lib/python3.4/http/client.py", line 1171, in getresponse
      response.begin()
    File "/usr/lib/python3.4/http/client.py", line 351, in begin
      version, status, reason = self._read_status()
    File "/usr/lib/python3.4/http/client.py", line 313, in _read_status
      line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
    File "/usr/lib/python3.4/socket.py", line 374, in readinto
      return self._sock.recv_into(b)
2016-11-07 12:04:01 -05:00
Wladimir J. van der Laan
7f71a3c591
Merge #6996: Add preciousblock RPC
5805ac8 Add preciousblock tests (Pieter Wuille)
5127c4f Add preciousblock RPC (Pieter Wuille)
2016-10-18 21:36:38 +02:00
MarcoFalke
fa7c35c4ec [qa] util: Move wait_bitcoinds() into stop_nodes() 2016-10-02 11:16:44 +02:00
Wladimir J. van der Laan
30930e847e test: Explicitly set encoding to utf8 when opening text files
These are text files but their encoding does not depend on the locale.
Not all of them require utf8 but it is better to fix it at something
to remove potential unpredictability.

This is necessary on FreeBSD where no locale is set by default,
and apparently Python defaults not only the terminal encoding to the locale
but that of every text file. So without LOCALE environment it defaults text
file encoding to ASCII. This causes problems with e.g. `bitcoin.conf`.

Luckily the locale doesn't affect the default encoding for str.encode() and
bytes.decode() on Python 3, so this is the only change necessary.
2016-09-29 17:50:05 +02:00
Cory Fields
d6a5dc4a2e add waitfornewblock/waitforblock/waitforblockheight rpcs and use them for tests
waitfornewblock waits until a new block is received, or the timeout expires, then
returns the current block height/hash.

waitforblock waits for a specific blockhash, or until the timeout expires, then
returns the current block height/hash. If the target blockhash is the current
tip, it will return immediately.

waitforblockheight waits until the tip has reached a certain height or higher,
then returns the current height and hash.

waitforblockheight is used to avoid polling in the rpc tests.
2016-09-07 12:46:01 -04:00
Pieter Wuille
5805ac836c Add preciousblock tests
Rebased, improved and extended by Luke-Jr.
2016-08-26 23:06:09 +02:00
Wladimir J. van der Laan
35f64e45c2
Revert "[qa] Adjust timeouts for micro-optimization of run time"
This reverts commit fa2d68f79c.

Temporary revert - see discussion in #8532.
2016-08-18 09:23:31 +02:00
Wladimir J. van der Laan
740cff5808
Merge #8482: [qa] Use single cache dir for chains
fad8cf6 [qa] Use single cache dir for chains (MarcoFalke)
fa2d68f [qa] Adjust timeouts for micro-optimization of run time (MarcoFalke)
fae596f [qa] Sort scripts by time for pull_tester and don't overwrite setup_chain (MarcoFalke)
2016-08-17 12:23:45 +02:00
MarcoFalke
fad8cf63e5 [qa] Use single cache dir for chains 2016-08-07 23:13:22 +02:00
MarcoFalke
fa2d68f79c [qa] Adjust timeouts for micro-optimization of run time 2016-08-07 23:13:08 +02:00
whythat
0ff4375c93 [qa]: add parsing for '<host>:<port>' argument form to rpc_url() 2016-07-25 01:30:28 +03:00
Wladimir J. van der Laan
65c2058cc8
Merge #8066: [qa] test_framework: Use different rpc_auth_pair for each node
fad1845 [qa] test_framework: Use different rpc_auth_pair for each node (MarcoFalke)
2016-06-20 13:41:11 +02:00
MarcoFalke
fa26c420bf [qa] util: Move check_fee_amount out of wallet.py 2016-06-13 21:34:41 +02:00
Suhas Daftuar
e871f8338a Tests: add timeout to sync_blocks() and sync_mempools()
Previously these functions would infinitely loop if sync failed;
now they have a default timeout of 60 seconds, after which an
AssertionError is raised.

sync_blocks() has also been improved and now compares the tip
hash of each node, rather than just using block count.
2016-05-26 14:19:07 -04:00
MarcoFalke
37f9a1f627
Merge #8047: [qa] test_framework: Set wait-timeout for bitcoind procs
fab5233 [qa] test_framework: Set wait-timeout for bitcoind procs (MarcoFalke)
2016-05-20 17:34:11 +02:00
MarcoFalke
fad184550e [qa] test_framework: Use different rpc_auth_pair for each node 2016-05-17 11:02:13 +02:00
MarcoFalke
fac9349798 [qa] Remove hardcoded "4 nodes" from test_framework 2016-05-15 12:58:53 +02:00
MarcoFalke
fab5233fe6 [qa] test_framework: Set wait-timeout for bitcoind procs 2016-05-12 13:11:20 +02:00
MarcoFalke
ccccc591a4 [qa] Add option --portseed to test_framework 2016-05-09 19:56:24 +02:00
MarcoFalke
fafb33cdef [qa] Stop other nodes, even when one fails to stop 2016-05-06 12:44:03 +02:00
MarcoFalke
fabbf6bd62 [qa] Refactor test_framework and pull tester
* log to stdout
* increase range for p2p and rpc ports
* UPPERCASE_CONSTANTS
* Stop nodes on CTRL+C
2016-05-06 12:43:34 +02:00
MarcoFalke
fa389d4edc [qa] Switch to py3 2016-05-05 15:43:37 +02:00
MarcoFalke
fada064f67 [qa] test_framework: Properly print exceptions and assert empty dict 2016-04-26 18:04:26 +02:00
Joao Fonseca
fa942c755a Move method to check matches within arrays on util.py 2016-04-19 12:29:19 +01:00
Wladimir J. van der Laan
6ef5e000a2
Merge #7853: [qa] py2: Unfiddle strings into bytes explicitly
faa41ee [qa] py2: Unfiddle strings into bytes explicitly (MarcoFalke)
2016-04-14 17:40:31 +02:00
Rusty Russell
85c807c9ea getblockchaininfo: make bip9_softforks an object, not an array.
We can't change "softforks", but it seems far more logical to use tags
in an object rather than using an "id" field in an array.

For example, to get the csv status before, you need to iterate the
array to find the entry with 'id' field equal to "csv":

   jq '.bip9_softforks | map(select(.id == "csv"))[] | .status'

Now:
   jq '.bip9_softforks.csv.status'

There is no issue with fork names being incompatible with JSON tags,
since we're selecting them ourselves.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-04-13 16:53:52 +09:30
MarcoFalke
faa41ee204 [qa] py2: Unfiddle strings into bytes explicitly 2016-04-10 20:35:57 +02:00
Suhas Daftuar
5cb1d8a207 Tests: move get_bip9_status to util.py 2016-04-07 14:54:50 -04:00
Wladimir J. van der Laan
018b60c5ea test_framework: detect failure of bitcoind startup
Replace the `bitcoin-cli -rpcwait` after spawning bitcoind
with our own loop that detects when bitcoind exits prematurely.

And if one node fails to start, stop the others.

This prevents a hang in such a case (see #7463).
2016-03-26 08:10:07 +01:00
Suhas Daftuar
ec143391ef Tests: make prioritise_transaction.py more robust 2016-03-16 12:52:04 -04:00
MarcoFalke
fa8cd46f39 [qa] Move create_tx() to util.py 2016-03-14 16:45:04 +01:00
MarcoFalke
fa8e2a6925 [qa] Change default block priority size to 0 2016-01-20 16:58:43 +01:00
Wladimir J. van der Laan
3b43cad9d0
Merge pull request #7164: Do not download transactions during initial blockchain sync
39a525c Do not download transactions during inital sync (ptschip)
2016-01-19 12:58:15 +01:00
Wladimir J. van der Laan
e4e77ee55d
Merge pull request #7194
135d6ec Add RPC tests for getblockheader. (James O'Beirne)
4745636 Add RPC documentation for getblockheader[chainwork]. (James O'Beirne)
16d4fce Add assert_is_hex_string and assert_is_hash_string to RPC test utils. (James O'Beirne)
2016-01-18 12:24:01 +01:00