@ -10,7 +10,7 @@ from concurrent import futures
import unittest
import unittest
from typing import Iterable , NamedTuple , Tuple , List , Dict
from typing import Iterable , NamedTuple , Tuple , List , Dict
from aiorpcx import TaskGroup , timeout_after , TaskTimeout
from aiorpcx import timeout_after , TaskTimeout
import electrum
import electrum
import electrum . trampoline
import electrum . trampoline
@ -21,7 +21,7 @@ from electrum.ecc import ECPrivkey
from electrum import simple_config , lnutil
from electrum import simple_config , lnutil
from electrum . lnaddr import lnencode , LnAddr , lndecode
from electrum . lnaddr import lnencode , LnAddr , lndecode
from electrum . bitcoin import COIN , sha256
from electrum . bitcoin import COIN , sha256
from electrum . util import bh2u , create_and_start_event_loop , NetworkRetryManager , bfh
from electrum . util import bh2u , create_and_start_event_loop , NetworkRetryManager , bfh , OldTaskGroup
from electrum . lnpeer import Peer , UpfrontShutdownScriptViolation
from electrum . lnpeer import Peer , UpfrontShutdownScriptViolation
from electrum . lnutil import LNPeerAddr , Keypair , privkey_to_pubkey
from electrum . lnutil import LNPeerAddr , Keypair , privkey_to_pubkey
from electrum . lnutil import LightningPeerConnectionClosed , RemoteMisbehaving
from electrum . lnutil import LightningPeerConnectionClosed , RemoteMisbehaving
@ -125,7 +125,7 @@ class MockLNWallet(Logger, NetworkRetryManager[LNPeerAddr]):
NetworkRetryManager . __init__ ( self , max_retry_delay_normal = 1 , init_retry_delay_normal = 1 )
NetworkRetryManager . __init__ ( self , max_retry_delay_normal = 1 , init_retry_delay_normal = 1 )
self . node_keypair = local_keypair
self . node_keypair = local_keypair
self . network = MockNetwork ( tx_queue )
self . network = MockNetwork ( tx_queue )
self . taskgroup = TaskGroup ( )
self . taskgroup = Old TaskGroup( )
self . lnwatcher = None
self . lnwatcher = None
self . listen_server = None
self . listen_server = None
self . _channels = { chan . channel_id : chan for chan in chans }
self . _channels = { chan . channel_id : chan for chan in chans }
@ -365,7 +365,7 @@ class TestPeer(TestCaseForTestnet):
def tearDown ( self ) :
def tearDown ( self ) :
async def cleanup_lnworkers ( ) :
async def cleanup_lnworkers ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for lnworker in self . _lnworkers_created :
for lnworker in self . _lnworkers_created :
await group . spawn ( lnworker . stop ( ) )
await group . spawn ( lnworker . stop ( ) )
self . _lnworkers_created . clear ( )
self . _lnworkers_created . clear ( )
@ -569,7 +569,7 @@ class TestPeer(TestCaseForTestnet):
self . assertEqual ( PR_PAID , w2 . get_payment_status ( lnaddr . paymenthash ) )
self . assertEqual ( PR_PAID , w2 . get_payment_status ( lnaddr . paymenthash ) )
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
await group . spawn ( p2 . _message_loop ( ) )
await group . spawn ( p2 . _message_loop ( ) )
@ -643,7 +643,7 @@ class TestPeer(TestCaseForTestnet):
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
await group . spawn ( p2 . _message_loop ( ) )
await group . spawn ( p2 . _message_loop ( ) )
@ -667,10 +667,10 @@ class TestPeer(TestCaseForTestnet):
async with max_htlcs_in_flight :
async with max_htlcs_in_flight :
await w1 . pay_invoice ( pay_req )
await w1 . pay_invoice ( pay_req )
async def many_payments ( ) :
async def many_payments ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
pay_reqs_tasks = [ await group . spawn ( self . prepare_invoice ( w2 , amount_msat = payment_value_msat ) )
pay_reqs_tasks = [ await group . spawn ( self . prepare_invoice ( w2 , amount_msat = payment_value_msat ) )
for i in range ( num_payments ) ]
for i in range ( num_payments ) ]
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for pay_req_task in pay_reqs_tasks :
for pay_req_task in pay_reqs_tasks :
lnaddr , pay_req = pay_req_task . result ( )
lnaddr , pay_req = pay_req_task . result ( )
await group . spawn ( single_payment ( pay_req ) )
await group . spawn ( single_payment ( pay_req ) )
@ -696,7 +696,7 @@ class TestPeer(TestCaseForTestnet):
self . assertEqual ( PR_PAID , graph . workers [ ' dave ' ] . get_payment_status ( lnaddr . paymenthash ) )
self . assertEqual ( PR_PAID , graph . workers [ ' dave ' ] . get_payment_status ( lnaddr . paymenthash ) )
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -740,7 +740,7 @@ class TestPeer(TestCaseForTestnet):
[ edge . short_channel_id for edge in log [ 0 ] . route ] )
[ edge . short_channel_id for edge in log [ 0 ] . route ] )
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -764,7 +764,7 @@ class TestPeer(TestCaseForTestnet):
self . assertEqual ( OnionFailureCode . TEMPORARY_NODE_FAILURE , log [ 0 ] . failure_msg . code )
self . assertEqual ( OnionFailureCode . TEMPORARY_NODE_FAILURE , log [ 0 ] . failure_msg . code )
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -799,7 +799,7 @@ class TestPeer(TestCaseForTestnet):
self . assertEqual ( 500100000000 , graph . channels [ ( ' dave ' , ' bob ' ) ] . balance ( LOCAL ) )
self . assertEqual ( 500100000000 , graph . channels [ ( ' dave ' , ' bob ' ) ] . balance ( LOCAL ) )
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -862,7 +862,7 @@ class TestPeer(TestCaseForTestnet):
raise PaymentDone ( )
raise PaymentDone ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -909,7 +909,7 @@ class TestPeer(TestCaseForTestnet):
raise NoPathFound ( )
raise NoPathFound ( )
async def f ( kwargs ) :
async def f ( kwargs ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -948,7 +948,7 @@ class TestPeer(TestCaseForTestnet):
async def f ( ) :
async def f ( ) :
await turn_on_trampoline_alice ( )
await turn_on_trampoline_alice ( )
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -1026,7 +1026,7 @@ class TestPeer(TestCaseForTestnet):
raise SuccessfulTest ( )
raise SuccessfulTest ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in peers :
for peer in peers :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -1196,7 +1196,7 @@ class TestPeer(TestCaseForTestnet):
raise SuccessfulTest ( )
raise SuccessfulTest ( )
async def f ( ) :
async def f ( ) :
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
for peer in [ p1 , p2 ] :
for peer in [ p1 , p2 ] :
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . _message_loop ( ) )
await group . spawn ( peer . htlc_switch ( ) )
await group . spawn ( peer . htlc_switch ( ) )
@ -1223,7 +1223,7 @@ class TestPeer(TestCaseForTestnet):
failing_task = None
failing_task = None
async def f ( ) :
async def f ( ) :
nonlocal failing_task
nonlocal failing_task
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
failing_task = await group . spawn ( p2 . _message_loop ( ) )
failing_task = await group . spawn ( p2 . _message_loop ( ) )
@ -1252,7 +1252,7 @@ class TestPeer(TestCaseForTestnet):
failing_task = None
failing_task = None
async def f ( ) :
async def f ( ) :
nonlocal failing_task
nonlocal failing_task
async with TaskGroup ( ) as group :
async with Old TaskGroup( ) as group :
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . _message_loop ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
await group . spawn ( p1 . htlc_switch ( ) )
failing_task = await group . spawn ( p2 . _message_loop ( ) )
failing_task = await group . spawn ( p2 . _message_loop ( ) )