diff --git a/src/bitmessagemain.py b/src/bitmessagemain.py index 0c4ae141..4add8045 100755 --- a/src/bitmessagemain.py +++ b/src/bitmessagemain.py @@ -21,6 +21,7 @@ app_dir = pathmagic.setup() import depends depends.check_dependencies() +# import atexit import ctypes import getopt import multiprocessing @@ -220,9 +221,12 @@ class Main(object): if os.getenv('BITMESSAGE_HYBRID'): # use objqueue of an external app import queues - from tests import queue + from tests import launcher, queue state.enableNetwork = False + minode = launcher.MinodeProcess() + minode.start() + # atexit.register(minode.stop) queues.objectProcessorQueue = queue.ObjQueue() set_thread_name("PyBitmessage") diff --git a/src/tests/launcher.py b/src/tests/launcher.py new file mode 100644 index 00000000..b7b8c970 --- /dev/null +++ b/src/tests/launcher.py @@ -0,0 +1,26 @@ +"""Launching an external app with the network queue""" + +import atexit +import signal +import subprocess + + +class MinodeProcess(object): + _process_cmd = [ + 'minode', '--no-incoming', '--msg-queue'] + + def __init__(self, port=8444, connection_limit=4): + self.port = str(port) + self.connection_limit = str(connection_limit) + + def start(self): + cmd = self._process_cmd + [ + '-p', self.port, + '--connection-limit', self.connection_limit + ] + self.process = subprocess.Popen(cmd, stderr=subprocess.STDOUT) + atexit.register(self.stop) + + def stop(self): + self.process.send_signal(signal.SIGTERM) + self.process.wait(10)