URI: 
       tfix test: test_reestablish_with_old_state - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 5fda2cbb424e3b6ad3f17d76a153301173b6aee2
   DIR parent 4a8ee1818a43d2ae7b1972fab48fe47849a49eb3
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Mon, 24 Feb 2020 21:09:34 +0100
       
       fix test: test_reestablish_with_old_state
       
       Messages sent as part of the payment were getting interleaved with the channel_reestablish.
       It does not actually make sense to do a payment and then reestablish the channel in the same transport -- the channel is supposed to already have been reestablished to do a payment in the first place.
       So, after payment, strip down the transport, and set up a new transport before reestablishing.
       
       Traceback (most recent call last):
         File "...\Python\Python38\lib\unittest\case.py", line 60, in testPartExecutor
           yield
         File "...\Python\Python38\lib\unittest\case.py", line 676, in run
           self._callTestMethod(testMethod)
         File "...\Python\Python38\lib\unittest\case.py", line 633, in _callTestMethod
           method()
         File "...\electrum\electrum\tests\test_lnpeer.py", line 262, in test_reestablish_with_old_state
           run(f())
         File "...\electrum\electrum\tests\test_lnpeer.py", line 302, in run
           return asyncio.run_coroutine_threadsafe(coro, loop=asyncio.get_event_loop()).result()
         File "...\Python\Python38\lib\concurrent\futures\_base.py", line 439, in result
           return self.__get_result()
         File "...\Python\Python38\lib\concurrent\futures\_base.py", line 388, in __get_result
           raise self._exception
         File "...\electrum\electrum\tests\test_lnpeer.py", line 260, in f
           await gath
         File "...\electrum\electrum\lnpeer.py", line 439, in _message_loop
           self.process_message(msg)
         File "...\electrum\electrum\lnpeer.py", line 159, in process_message
           execution_result = f(payload)
         File "...\electrum\electrum\lnpeer.py", line 1308, in on_revoke_and_ack
           chan.receive_revocation(rev)
         File "...\electrum\electrum\lnchannel.py", line 556, in receive_revocation
           raise Exception('revoked secret not for current point')
       Exception: revoked secret not for current point
       
       Diffstat:
         M electrum/tests/test_lnpeer.py       |      12 ++++++++++--
       
       1 file changed, 10 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/electrum/tests/test_lnpeer.py b/electrum/tests/test_lnpeer.py
       t@@ -243,10 +243,18 @@ class TestPeer(ElectrumTestCase):
                alice_channel_0, bob_channel_0 = create_test_channels() # these are identical
                p1, p2, w1, w2, _q1, _q2 = self.prepare_peers(alice_channel, bob_channel)
                pay_req = self.prepare_invoice(w2)
       -        async def reestablish():
       +        async def pay():
                    result = await LNWallet._pay(w1, pay_req)
                    self.assertEqual(result, True)
       -            w1.channels = {alice_channel_0.channel_id: alice_channel_0}
       +            gath.cancel()
       +        gath = asyncio.gather(pay(), p1._message_loop(), p2._message_loop())
       +        async def f():
       +            await gath
       +        with self.assertRaises(concurrent.futures.CancelledError):
       +            run(f())
       +
       +        p1, p2, w1, w2, _q1, _q2 = self.prepare_peers(alice_channel_0, bob_channel)
       +        async def reestablish():
                    await asyncio.gather(
                        p1.reestablish_channel(alice_channel_0),
                        p2.reestablish_channel(bob_channel))