mmgen-wallet/test/unit_tests_d
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
..
__init__.py modularize unit_tests.py 2019-05-14 10:42:06 +03:00
ut_baseconv.py limited Monero mnemonic seed phrase ('xmrseed') support 2020-02-12 10:38:11 +00:00
ut_bip39.py bip39 and baseconv unit tests: reformat bad input data 2019-10-26 11:43:18 +00:00
ut_indexed_dict.py unit_tests.py: new UnitTestHelpers class 2019-10-24 18:30:23 +00:00
ut_mn_entry.py new mnemonic entry modes, new 'mn2hex_interactive' tool command 2020-03-12 17:12:43 +00:00
ut_rpc.py asyncio/aiohttp support 2020-05-10 14:07:54 +00:00
ut_scrypt.py test suite: relocate some modules, use relative imports 2020-03-16 10:45:00 +00:00
ut_seedsplit.py unit_tests.py: new UnitTestHelpers class 2019-10-24 18:30:23 +00:00
ut_subseed.py unit_tests.py: new UnitTestHelpers class 2019-10-24 18:30:23 +00:00
ut_tx_deserialize.py asyncio/aiohttp support 2020-05-10 14:07:54 +00:00