<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20688">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Copy gnuradio zmq broker at runtime<br><br>The remotely run script is moved into a new subdir called "external",<br>where external utils to be used by osmo-gsm-tester (exernal to its own<br>process) are placed.<br>It needs to be in another directory because python files in obj/ are<br>loaded at startup of osmo-gsm-tester to dynamically load schemas.<br><br>Change-Id: I633a85294694f2c6efd58535729e9b8af166b3ff<br>---<br>M src/osmo_gsm_tester/core/util.py<br>R src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py<br>M src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py<br>3 files changed, 27 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/88/20688/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/core/util.py b/src/osmo_gsm_tester/core/util.py</span><br><span>index 4c7b1dd..e035a72 100644</span><br><span>--- a/src/osmo_gsm_tester/core/util.py</span><br><span>+++ b/src/osmo_gsm_tester/core/util.py</span><br><span>@@ -441,4 +441,9 @@</span><br><span> assert val[:3] == 'a5_'</span><br><span> return 'a5 ' + val[3:]</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+# Return abs path to external dir, where utils to run out of the process are placed</span><br><span style="color: hsl(120, 100%, 40%);">+def external_dir():</span><br><span style="color: hsl(120, 100%, 40%);">+ # ../external/</span><br><span style="color: hsl(120, 100%, 40%);">+ return os.path.abspath(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'external'))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> # vim: expandtab tabstop=4 shiftwidth=4</span><br><span>diff --git a/utils/bin/osmo-gsm-tester_zmq_broker.py b/src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py</span><br><span>similarity index 97%</span><br><span>rename from utils/bin/osmo-gsm-tester_zmq_broker.py</span><br><span>rename to src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py</span><br><span>index 3681e7e..fa69efd 100755</span><br><span>--- a/utils/bin/osmo-gsm-tester_zmq_broker.py</span><br><span>+++ b/src/osmo_gsm_tester/external/gnuradio_zmq_broker_remote.py</span><br><span>@@ -1,5 +1,8 @@</span><br><span> #!/usr/bin/env python2</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+# This is script is aimed at being copied to some remote target host where it</span><br><span style="color: hsl(120, 100%, 40%);">+# will be run by osmo-gsm-tester through ssh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> from distutils.version import StrictVersion</span><br><span> </span><br><span> from gnuradio.fft import window</span><br><span>diff --git a/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py b/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py</span><br><span>index ba43794..76fb1e5 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/gnuradio_zmq_broker.py</span><br><span>@@ -19,6 +19,7 @@</span><br><span> </span><br><span> import json</span><br><span> import socket</span><br><span style="color: hsl(120, 100%, 40%);">+import os</span><br><span> </span><br><span> from ..core import log</span><br><span> from ..core import util</span><br><span>@@ -32,12 +33,18 @@</span><br><span> refcount = 0</span><br><span> instance = None</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ REMOTE_DIR = '/osmo-gsm-tester-grbroker'</span><br><span style="color: hsl(120, 100%, 40%);">+ TGT_SCRIPT_NAME = 'gnuradio_zmq_broker_remote.py' # File located in same directory as thine one</span><br><span style="color: hsl(120, 100%, 40%);">+ TGT_SCRIPT_LOCAL_PATH = os.path.join(util.external_dir(), TGT_SCRIPT_NAME)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def __init__(self):</span><br><span> super().__init__(log.C_RUN, 'gr_zmq_broker')</span><br><span> self.process = None</span><br><span> self.ctrl_port = 5005</span><br><span> self.run_dir = None</span><br><span> self.rem_host = None</span><br><span style="color: hsl(120, 100%, 40%);">+ self.remote_run_dir = None</span><br><span style="color: hsl(120, 100%, 40%);">+ self.remote_tgt_script = None</span><br><span> self.enb_li = []</span><br><span> self.addr = None</span><br><span> self.ctrl_sk = None</span><br><span>@@ -116,19 +123,27 @@</span><br><span> self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))</span><br><span> if not self.enb_li[0]._run_node.is_local():</span><br><span> self.rem_host = remote.RemoteHost(self.run_dir, self.enb_li[0]._run_node.ssh_user(), self.enb_li[0]._run_node.ssh_addr())</span><br><span style="color: hsl(120, 100%, 40%);">+ remote_prefix_dir = util.Dir(GrBroker.REMOTE_DIR)</span><br><span style="color: hsl(120, 100%, 40%);">+ self.remote_run_dir = util.Dir(remote_prefix_dir.child(self.name()))</span><br><span style="color: hsl(120, 100%, 40%);">+ self.remote_tgt_script = os.path.join(str(self.remote_run_dir), GrBroker.TGT_SCRIPT_NAME)</span><br><span style="color: hsl(120, 100%, 40%);">+ self.rem_host.recreate_remote_dir(self.remote_run_dir)</span><br><span style="color: hsl(120, 100%, 40%);">+ self.rem_host.scp('scp-grboker-to-remote', GrBroker.TGT_SCRIPT_LOCAL_PATH, self.remote_tgt_script)</span><br><span> </span><br><span> def start(self):</span><br><span> self.num_enb_started += 1</span><br><span> self.dbg('start(%d/%d)' % (self.num_enb_started, len(self.enb_li)))</span><br><span> if self.num_enb_started == 1:</span><br><span> self.configure()</span><br><span style="color: hsl(0, 100%, 40%);">- args = ('osmo-gsm-tester_zmq_broker.py',</span><br><span style="color: hsl(0, 100%, 40%);">- '-c', str(self.ctrl_port),</span><br><span style="color: hsl(0, 100%, 40%);">- '-b', self.addr)</span><br><span> if self.enb_li[0]._run_node.is_local():</span><br><span style="color: hsl(120, 100%, 40%);">+ args = (GrBroker.TGT_SCRIPT_LOCAL_PATH,</span><br><span style="color: hsl(120, 100%, 40%);">+ '-c', str(self.ctrl_port),</span><br><span style="color: hsl(120, 100%, 40%);">+ '-b', self.addr)</span><br><span> self.process = process.Process(self.name(), self.run_dir, args)</span><br><span> else:</span><br><span style="color: hsl(0, 100%, 40%);">- self.process = self.rem_host.RemoteProcessSafeExit('zmq_gr_broker', util.Dir('/tmp/ogt_%s' % self.name()), args, wait_time_sec=7)</span><br><span style="color: hsl(120, 100%, 40%);">+ args = (self.remote_tgt_script,</span><br><span style="color: hsl(120, 100%, 40%);">+ '-c', str(self.ctrl_port),</span><br><span style="color: hsl(120, 100%, 40%);">+ '-b', self.addr)</span><br><span style="color: hsl(120, 100%, 40%);">+ self.process = self.rem_host.RemoteProcessSafeExit(self.name(), self.remote_run_dir, args, wait_time_sec=7)</span><br><span> self.testenv.remember_to_stop(self.process)</span><br><span> self.process.launch()</span><br><span> # Wait until all ENBs are configured/started:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20688">change 20688</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20688"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I633a85294694f2c6efd58535729e9b8af166b3ff </div>
<div style="display:none"> Gerrit-Change-Number: 20688 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>