mmgen-wallet/test/unit_tests_d/ut_rpc.py

126 lines
3.1 KiB
Python
Raw Normal View History

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
#!/usr/bin/env python3
"""
test.unit_tests_d.ut_rpc: RPC unit test for the MMGen suite
"""
from mmgen.common import *
from mmgen.exception import *
from mmgen.protocol import init_proto
from mmgen.rpc import rpc_init,MoneroWalletRPCClient
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
from mmgen.daemon import CoinDaemon,MoneroWalletDaemon
def auth_test(proto,d):
if g.platform != 'win':
qmsg(f'\n Testing authentication with credentials from {d.cfg_file}:')
d.remove_datadir()
os.makedirs(d.datadir)
cf = os.path.join(d.datadir,d.cfg_file)
open(cf,'a').write('\nrpcuser = ut_rpc\nrpcpassword = ut_rpc_passw0rd\n')
d.add_flag('keep_cfg_file')
d.start()
async def do():
rpc = await rpc_init(proto)
assert rpc.auth.user == 'ut_rpc', f'{rpc.auth.user}: user is not ut_rpc!'
run_session(do())
d.stop()
def do_msg(rpc):
qmsg(' Testing backend {!r}'.format(type(rpc.backend).__name__))
class init_test:
async def btc(proto,backend):
rpc = await rpc_init(proto,backend)
do_msg(rpc)
addrs = (
('bc1qvmqas4maw7lg9clqu6kqu9zq9cluvlln5hw97q','test address #1'), # deadbeef * 8
('bc1qe50rj25cldtskw5huxam335kyshtqtlrf4pt9x','test address #2'), # deadbeef * 7 + deadbeee
)
await rpc.batch_call('importaddress',addrs,timeout=120)
ret = await rpc.batch_call('getaddressesbylabel',[(l,) for a,l in addrs])
assert list(ret[0].keys())[0] == addrs[0][0]
bh = (await rpc.call('getblockchaininfo',timeout=300))['bestblockhash']
await rpc.gathered_call('getblock',((bh,),(bh,1)),timeout=300)
await rpc.gathered_call(None,(('getblock',(bh,)),('getblock',(bh,1))),timeout=300)
async def bch(proto,backend):
rpc = await rpc_init(proto,backend)
do_msg(rpc)
ltc = bch
async def eth(proto,backend):
rpc = await rpc_init(proto,backend)
do_msg(rpc)
await rpc.call('parity_versionInfo',timeout=300)
def run_test(coin,auth):
proto = init_proto(coin,network=('mainnet','regtest')[coin=='eth']) # FIXME CoinDaemon's network handling broken
d = CoinDaemon(network_id=coin,test_suite=True)
2020-06-27 10:22:01 +00:00
d.stop()
d.remove_datadir()
d.start()
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
for backend in g.autoset_opts['rpc_backend'].choices:
run_session(getattr(init_test,coin)(proto,backend),backend=backend)
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
2020-06-13 11:08:54 +00:00
d.stop()
if auth:
auth_test(proto,d)
qmsg(' OK')
return True
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
class unit_tests:
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
altcoin_deps = ('ltc','bch','eth','xmr_wallet')
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
def btc(self,name,ut):
return run_test('btc',auth=True)
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
def ltc(self,name,ut):
return run_test('ltc',auth=True)
def bch(self,name,ut):
return run_test('bch',auth=True)
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
def eth(self,name,ut):
return run_test('eth',auth=False)
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
def xmr_wallet(self,name,ut):
async def run():
md = CoinDaemon('xmr',test_suite=True)
if not opt.no_daemon_autostart:
md.start()
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
wd = MoneroWalletDaemon(
wallet_dir = 'test/trash',
passwd = 'ut_rpc_passw0rd',
test_suite = True )
wd.start()
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
c = MoneroWalletRPCClient(
host = wd.host,
port = wd.rpc_port,
user = wd.user,
passwd = wd.passwd )
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
await c.call('get_version')
gmsg('OK')
wd.wait = False
wd.stop()
if not opt.no_daemon_stop:
md.wait = False
md.stop()
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
run_session(run())
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
return True