tlnbase: lnbase_test must use threadsafe task submission - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit e7b92b8184f21dcf95e3f1f283b4bd55d0000d36
DIR parent 9781201fa06d2c51b8bb9ed27af8ae5f2ec3537a
HTML Author: Janus <ysangkok@gmail.com>
Date: Thu, 12 Apr 2018 16:57:42 +0200
lnbase: lnbase_test must use threadsafe task submission
Diffstat:
M lib/lnbase.py | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
---
DIR diff --git a/lib/lnbase.py b/lib/lnbase.py
t@@ -4,6 +4,7 @@
Derived from https://gist.github.com/AdamISZ/046d05c156aaeb56cc897f85eecb3eb8
"""
+import queue
import traceback
import itertools
import json
t@@ -398,14 +399,24 @@ class LNWorker:
self.peer.open_channel()
def blocking_test_run(self):
- start = time.time()
- fut = asyncio.ensure_future(self._test())
- asyncio.get_event_loop().run_until_complete(fut)
- fut.exception()
- return "blocking test run took: " + str(time.time() - start)
-
- async def _test(self):
- await self.peer.channel_establishment_flow(self.wallet)
+ try:
+ start = time.time()
+ q = queue.Queue()
+ fut = asyncio.run_coroutine_threadsafe(self._test(q), asyncio.get_event_loop())
+ exp = q.get(timeout=5)
+ if exp is not None: raise exp
+ return "blocking test run took: " + str(time.time() - start)
+ except:
+ traceback.print_exc()
+
+ async def _test(self, q):
+ try:
+ await self.peer.channel_establishment_flow(self.wallet)
+ except Exception as e:
+ q.put(e)
+ else:
+ q.put(None)
+