12 Commits

Author SHA1 Message Date
Russell Yanofsky
9c8006dc33 Avoid opening copied wallet databases simultaneously
Make sure wallet databases have unique fileids. If they don't, throw an error.
BDB caches do not work properly when more than one open database has the same
fileid, because values written to one database may show up in reads to other
databases.

Bitcoin will never create different databases with the same fileid, but users
can create them by manually copying database files.

BDB caching bug was reported by Chris Moore <dooglus@gmail.com>
https://github.com/bitcoin/bitcoin/issues/11429

Fixes #11429

Github-Pull: #11476
Rebased-From: 478a89c1ef79a75275d1b508122c06eee9386b2d
2017-11-01 15:23:06 -04:00
John Newbery
d94fc336c4 scripted-diff: rename assert_raises_jsonrpc to assert_raises_rpc error
-BEGIN VERIFY SCRIPT-
sed -i 's/assert_raises_jsonrpc/assert_raises_rpc_error/g' test/functional/*py test/functional/test_framework/*py
-END VERIFY SCRIPT-

Github-Pull: #10853
Rebased-From: 47ba8cf71e9a3a6f7452488fc9ab3b350f0fae36
2017-11-01 10:42:30 -04:00
Cristian Mircea Messel
b6468d3c42 Add listwallets RPC test to multiwallet.py
Github-Pull: #11310
Rebased-From: fb1f3258225a7052f4fc9e3f2accc3811c53e221
2017-10-03 22:03:08 +02:00
John Newbery
801d2ae924 [tests] don't override __init__() in individual tests
Almost all test scripts currently need to override the __init__()
method. When they do that they need to call into super().__init__() as
the base class does some generic initialization.

This commit makes the base class __init__() call into set_test_params()
method. Individual test cases can override set_test_params() to setup
their test parameters.

Github-Pull: #11121
Rebased-From: 5448a1471d6fc638a2220ea5a2f3782172efe14c
2017-10-03 18:43:43 +02:00
John Newbery
4d3ba18386 [tests] TestNode: separate add_node from start_node
Separates the act of creating a TestNode object from starting the node.
The test_framework now keeps track of its list of TestNodes, and test
writers can call start_node() and stop_node() without having to update
the self.nodes list.

Github-Pull: #11121
Rebased-From: 36b626867087e9fae6d85f926248997ebff327b7
2017-10-03 18:43:15 +02:00
John Newbery
fc2aa09cf3 [tests] Introduce TestNode
TestNode is a class responsible for all state related to a bitcoind node
under test. It stores local state, is responsible for tracking the
bitcoind process and delegates unrecognised messages to the RPC
connection.

This commit changes start_nodes and stop_nodes to start and stop the
bitcoind nodes in parallel, making test setup and teardown much faster.

Github-Pull: #10711
Rebased-From: 7897338918dac072e788b8ab2919d4559f311bef
2017-10-03 18:18:17 +02:00
John Newbery
d84e78ec39 [wallet] Specify wallet name in wallet loading errors 2017-07-28 11:25:38 +01:00
João Barbosa
a6da027d83 Reject invalid wallet files 2017-07-28 11:23:43 +01:00
João Barbosa
3ef77a0c12 Reject duplicate wallet filenames 2017-07-28 11:23:42 +01:00
Russell Yanofsky
e526b3d34c Fix misleading "Method not found" multiwallet errors
Raise RPC_WALLET_NOT_SPECIFIED instead of RPC_METHOD_NOT_FOUND when a required
wallet filename was not specified in an RPC call.

Also raise more specific RPC_WALLET_NOT_FOUND error instead of
RPC_INVALID_PARAMETER in case an invalid wallet was specified, for consistency.
2017-07-26 02:48:15 -04:00
John Newbery
3707fcd94e [wallet] [tests] Add listwallets to multiwallet test 2017-07-20 17:06:29 -04:00
Jonas Schnelli
6b9faf7470
[QA] add basic multiwallet test 2017-07-17 17:42:22 +02:00