mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-22 00:24:19 +01:00
lightningd: format JSON directly into json connection membuf.
My test case is a mainnet gossip store with 22107 channels, and time to do `lightning-cli listchannels`: Before: `lightning-cli listchannels` DEVELOPER=0 real 0m1.303000-1.324000(1.3114+/-0.0091)s After: real 0m0.629000-0.695000(0.64985+/-0.019)s Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -602,11 +602,9 @@ def test_onchain_dust_out(node_factory, bitcoind, executor):
|
||||
bitcoind.generate_block(3)
|
||||
|
||||
# It should fail.
|
||||
with pytest.raises(RpcError):
|
||||
with pytest.raises(RpcError, match=r'WIRE_PERMANENT_CHANNEL_FAILURE: missing in commitment tx'):
|
||||
payfuture.result(5)
|
||||
|
||||
l1.daemon.wait_for_log('WIRE_PERMANENT_CHANNEL_FAILURE: missing in commitment tx')
|
||||
|
||||
# Retry payment, this should fail (and, as a side-effect, tickle a
|
||||
# bug).
|
||||
with pytest.raises(RpcError, match=r'WIRE_UNKNOWN_NEXT_PEER'):
|
||||
@@ -682,11 +680,9 @@ def test_onchain_timeout(node_factory, bitcoind, executor):
|
||||
bitcoind.generate_block(3)
|
||||
|
||||
# It should fail.
|
||||
with pytest.raises(RpcError):
|
||||
with pytest.raises(RpcError, match=r'WIRE_PERMANENT_CHANNEL_FAILURE: timed out'):
|
||||
payfuture.result(5)
|
||||
|
||||
l1.daemon.wait_for_log('WIRE_PERMANENT_CHANNEL_FAILURE: timed out')
|
||||
|
||||
# 2 later, l1 spends HTLC (5 blocks total).
|
||||
bitcoind.generate_block(2)
|
||||
l1.wait_for_onchaind_broadcast('OUR_DELAYED_RETURN_TO_WALLET',
|
||||
|
||||
@@ -100,9 +100,8 @@ def test_pay_disconnect(node_factory, bitcoind):
|
||||
wait_for(lambda: [c['active'] for c in l1.rpc.listchannels()['channels']] == [False, False])
|
||||
|
||||
# Can't pay while its offline.
|
||||
with pytest.raises(RpcError):
|
||||
with pytest.raises(RpcError, match=r'failed: WIRE_TEMPORARY_CHANNEL_FAILURE \(First peer not ready\)'):
|
||||
l1.rpc.sendpay(route, rhash)
|
||||
l1.daemon.wait_for_log('failed: WIRE_TEMPORARY_CHANNEL_FAILURE \\(First peer not ready\\)')
|
||||
|
||||
l2.start()
|
||||
l1.daemon.wait_for_log('peer_out WIRE_CHANNEL_REESTABLISH')
|
||||
@@ -114,10 +113,9 @@ def test_pay_disconnect(node_factory, bitcoind):
|
||||
l1.daemon.wait_for_log(r'Peer permanent failure in CHANNELD_NORMAL: lightning_channeld: received ERROR channel .*: update_fee \d+ outside range 1875-75000')
|
||||
|
||||
# Should fail due to permenant channel fail
|
||||
with pytest.raises(RpcError):
|
||||
with pytest.raises(RpcError, match=r'failed: WIRE_UNKNOWN_NEXT_PEER \(First peer not ready\)'):
|
||||
l1.rpc.sendpay(route, rhash)
|
||||
|
||||
l1.daemon.wait_for_log('failed: WIRE_UNKNOWN_NEXT_PEER \\(First peer not ready\\)')
|
||||
assert not l1.daemon.is_in_log('Payment is still in progress')
|
||||
|
||||
# After it sees block, someone should close channel.
|
||||
|
||||
Reference in New Issue
Block a user