mmgen-wallet/test
The MMGen Project f9a483f34f
asyncio/aiohttp support
Asynchronous HTTP significantly speeds up operations involving multiple
JSON-RPC calls to the server, such as tracking wallet views for wallets
with a large number of outputs.

This patch adds base-level asyncio infrastructure plus aiohttp support to all
applicable MMGen commands.

The aiohttp package is not currently supported by MSYS2, so Windows users will
have to choose one of the other backends ('curl' is the default).

Tested on: Linux, Armbian, Windows; Python 3.6, 3.7, 3.8

New user features:

    - configurable RPC backends via the 'rpc_backend' option.  Supported
      options are 'aiohttp' (Linux-only), 'httplib', 'requests' and 'curl'

    - configurable RPC queue size via the 'aiohttp_rpc_queue_len' option

The patch also includes a rewrite/redesign of large parts of the MMGen code
base, most importantly:

    - rpc.py - full rewrite of RPC library, new RPCBackends class
    - main_addrimport.py - full rewrite
    - main_autosign.py - LED code now handled by new LEDControl class
    - eth/tw.py, eth/tx.py - reworked logic for resolving token symbols and
      addresses
    - eth/tx.py - separate classes for signed and unsigned transactions

Testing:

    # Set a backend (choose one):
    $ export MMGEN_RPC_BACKEND='aiohttp' # Linux-only
    $ export MMGEN_RPC_BACKEND='curl'    # Windows
    $ export MMGEN_RPC_BACKEND='httplib' # compare performance with 'aiohttp'

    # Bitcoin:
    $ test/unit_tests.py rpc btc
    $ test/test.py main regtest autosign

    # Ethereum:
    $ test/unit_tests.py rpc eth
    $ test/tooltest2.py --coin=eth --testnet=1 txview
    $ test/test.py --coin=eth ethdev

    # Monero wallet:
    $ test/unit_tests.py rpc xmr_wallet
    $ test/test-release.sh -F xmr
2020-05-10 14:07:54 +00:00
..
include minor changes and fixes throughout 2020-05-10 13:39:53 +00:00
misc test suite: relocate some modules, use relative imports 2020-03-16 10:45:00 +00:00
objattrtest_py_d txcreate,twview,listaddresses: display transaction date 2020-04-04 13:18:44 +00:00
objtest_py_d OrderedDict -> dict throughout 2020-04-09 19:34:24 +00:00
ref asyncio/aiohttp support 2020-05-10 14:07:54 +00:00
test_py_d asyncio/aiohttp support 2020-05-10 14:07:54 +00:00
unit_tests_d asyncio/aiohttp support 2020-05-10 14:07:54 +00:00
__init__.py test/test.py: refactor, remove interactive mode 2017-08-03 08:56:40 +03:00
colortest.py test suite: relocate some modules, use relative imports 2020-03-16 10:45:00 +00:00
gentest.py update copyright dates 2020-02-18 14:07:27 +00:00
hashfunc.py test suite: relocate some modules, use relative imports 2020-03-16 10:45:00 +00:00
objattrtest.py ImmutableAttr,ListItemAttr: renamed, call signature simplified 2020-04-08 14:13:13 +00:00
objtest.py update copyright dates 2020-02-18 14:07:27 +00:00
scrambletest.py test suite: relocate some modules, use relative imports 2020-03-16 10:45:00 +00:00
start-coin-daemons.py test suite: relocate some modules, use relative imports 2020-03-16 10:45:00 +00:00
test-release.sh release/testing: UTF8 testing fixes, other fixes and improvements 2020-02-22 19:54:03 +00:00
test.py asyncio/aiohttp support 2020-05-10 14:07:54 +00:00
tooltest.py minor changes and fixes throughout 2020-05-10 13:39:53 +00:00
tooltest2.py asyncio/aiohttp support 2020-05-10 14:07:54 +00:00
unit_tests.py minor changes and fixes throughout 2020-05-10 13:39:53 +00:00