Change in osmo-gsm-tester[master]: enb: Reuse run_node to hold run info

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Tue May 26 12:12:56 UTC 2020


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18482 )


Change subject: enb: Reuse run_node to hold run info
......................................................................

enb: Reuse run_node to hold run info

Change-Id: If396940f154813d42ff3d3364c44b8979179127f
---
M doc/examples/4g_srsLTE/resources.conf
M src/osmo_gsm_tester/obj/enb.py
M src/osmo_gsm_tester/obj/enb_amarisoft.py
M src/osmo_gsm_tester/obj/enb_srs.py
M src/osmo_gsm_tester/obj/run_node.py
M sysmocom/resources.conf.prod
6 files changed, 58 insertions(+), 50 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/82/18482/1

diff --git a/doc/examples/4g_srsLTE/resources.conf b/doc/examples/4g_srsLTE/resources.conf
index a1bdcbc..f0db3c0 100644
--- a/doc/examples/4g_srsLTE/resources.conf
+++ b/doc/examples/4g_srsLTE/resources.conf
@@ -11,15 +11,21 @@
 - label: srsENB-zmq
   type: srsenb
   rf_dev_type: zmq
-  remote_user: jenkins
-  addr: 172.18.50.101
+  run_node:
+    run_type: ssh
+    run_addr: 172.18.50.101
+    ssh_user: jenkins
+    ssh_addr: 172.18.50.101
 
 - label: srsENB-B200
   type: srsenb
   rf_dev_type: uhd
   rf_dev_args: 'type=b200,serial=317B9FE'
-  remote_user: jenkins
-  addr: 172.18.50.102
+  run_node:
+    run_type: ssh
+    run_addr: 172.18.50.102
+    ssh_user: jenkins
+    ssh_addr: 172.18.50.102
 
 modem:
 - label: srsUE-zmq
diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py
index 42ff647..3c4f48f 100644
--- a/src/osmo_gsm_tester/obj/enb.py
+++ b/src/osmo_gsm_tester/obj/enb.py
@@ -20,13 +20,12 @@
 from abc import ABCMeta, abstractmethod
 from ..core import log, config
 from ..core import schema
+from . import run_node
 
 def on_register_schemas():
     resource_schema = {
         'label': schema.STR,
         'type': schema.STR,
-        'remote_user': schema.STR,
-        'addr': schema.IPV4,
         'gtp_bind_addr': schema.IPV4,
         'id': schema.UINT,
         'num_prb': schema.UINT,
@@ -60,6 +59,8 @@
         'cell_list[].dl_rfemu.addr': schema.IPV4,
         'cell_list[].dl_rfemu.ports[]': schema.UINT,
         }
+    for key, val in run_node.RunNode.schema().items():
+        resource_schema['run_node.%s' % key] = val
     schema.register_resource_schema('enb', resource_schema)
 
 class eNodeB(log.Origin, metaclass=ABCMeta):
@@ -70,13 +71,11 @@
     def __init__(self, testenv, conf, name):
         super().__init__(log.C_RUN, '%s' % name)
         self._conf = conf
-        self._addr = conf.get('addr', None)
-        if self._addr is None:
-            raise log.Error('addr not set')
+        self._run_node = run_node.RunNode.from_conf(conf.get('run_node', {}))
         self._gtp_bind_addr = conf.get('gtp_bind_addr', None)
         if self._gtp_bind_addr is None:
-            self._gtp_bind_addr = self._addr
-        self.set_name('%s_%s' % (name, self._addr))
+            self._gtp_bind_addr = self._run_node.run_addr()
+        self.set_name('%s_%s' % (name, self._run_node.run_addr()))
         self._txmode = 0
         self._id = None
         self._num_prb = 0
@@ -99,6 +98,7 @@
         assert self._txmode
         config.overlay(values, dict(enb={ 'num_ports': self.num_ports() }))
         assert self._epc is not None
+        config.overlay(values, dict(enb={ 'addr': self.addr() }))
         config.overlay(values, dict(enb={ 'mme_addr': self._epc.addr() }))
         config.overlay(values, dict(enb={ 'gtp_bind_addr': self._gtp_bind_addr }))
         self._num_cells = int(values['enb'].get('num_cells', None))
@@ -235,7 +235,7 @@
         pass
 
     def addr(self):
-        return self._addr
+        return self._run_node.run_addr()
 
     def ue_max_rate(self, downlink=True):
         # The max rate for a single UE per PRB configuration in TM1
diff --git a/src/osmo_gsm_tester/obj/enb_amarisoft.py b/src/osmo_gsm_tester/obj/enb_amarisoft.py
index fa79cbf..c331cd8 100644
--- a/src/osmo_gsm_tester/obj/enb_amarisoft.py
+++ b/src/osmo_gsm_tester/obj/enb_amarisoft.py
@@ -69,7 +69,6 @@
         self.remote_log_file = None
         self.enable_measurements = False
         self.testenv = testenv
-        self.remote_user = conf.get('remote_user', None)
         if not rf_type_valid(conf.get('rf_dev_type', None)):
             raise log.Error('Invalid rf_dev_type=%s' % conf.get('rf_dev_type', None))
 
@@ -83,7 +82,7 @@
     def cleanup(self):
         if self.process is None:
             return
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             return
         # copy back files (may not exist, for instance if there was an early error of process):
         try:
@@ -91,10 +90,6 @@
         except Exception as e:
             self.log(repr(e))
 
-
-    def setup_runs_locally(self):
-        return self.remote_user is None
-
     def start(self, epc):
         self.log('Starting AmarisoftENB')
         self._epc = epc
@@ -107,7 +102,7 @@
         self.process.stdin_write('t\n')
 
     def _start(self):
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             env = { 'LD_LIBRARY_PATH': util.prepend_library_path(self.inst) }
             binary = self.inst.child('.', AmarisoftENB.BINFILE)
             self.dbg(run_dir=self.run_dir, binary=binary, env=env)
@@ -141,8 +136,8 @@
         self.config_drb_file = self.run_dir.child(AmarisoftENB.CFGFILE_DRB)
         self.log_file = self.run_dir.child(AmarisoftENB.LOGFILE)
 
-        if not self.setup_runs_locally():
-            self.rem_host = remote.RemoteHost(self.run_dir, self.remote_user, self._addr)
+        if not self._run_node.is_local():
+            self.rem_host = remote.RemoteHost(self.run_dir, self._run_node.ssh_user(), self._run_node.ssh_addr())
             remote_prefix_dir = util.Dir(AmarisoftENB.REMOTE_DIR)
             self.remote_inst = util.Dir(remote_prefix_dir.child(os.path.basename(str(self.inst))))
             remote_run_dir = util.Dir(remote_prefix_dir.child(AmarisoftENB.BINFILE))
@@ -186,7 +181,7 @@
 
                 config.overlay(values, dict(enb=dict(rf_dev_args=rf_dev_args)))
 
-        logfile = self.log_file if self.setup_runs_locally() else self.remote_log_file
+        logfile = self.log_file if self._run_node.is_local() else self.remote_log_file
         config.overlay(values, dict(enb=dict(log_filename=logfile)))
 
         # rf driver is shared between amarisoft enb and ue, so it has a
@@ -205,7 +200,7 @@
         self.gen_conf_file(self.config_rf_file, AmarisoftENB.CFGFILE_RF, values)
         self.gen_conf_file(self.config_drb_file, AmarisoftENB.CFGFILE_DRB, values)
 
-        if not self.setup_runs_locally():
+        if not self._run_node.is_local():
             self.rem_host.recreate_remote_dir(self.remote_inst)
             self.rem_host.scp('scp-inst-to-remote', str(self.inst), remote_prefix_dir)
             self.rem_host.recreate_remote_dir(remote_run_dir)
diff --git a/src/osmo_gsm_tester/obj/enb_srs.py b/src/osmo_gsm_tester/obj/enb_srs.py
index 47b373e..9e93541 100644
--- a/src/osmo_gsm_tester/obj/enb_srs.py
+++ b/src/osmo_gsm_tester/obj/enb_srs.py
@@ -68,7 +68,6 @@
         self.remote_pcap_file = None
         self.enable_pcap = False
         self.testenv = testenv
-        self.remote_user = conf.get('remote_user', None)
         self._additional_args = []
         if not rf_type_valid(conf.get('rf_dev_type', None)):
             raise log.Error('Invalid rf_dev_type=%s' % conf.get('rf_dev_type', None))
@@ -76,7 +75,7 @@
     def cleanup(self):
         if self.process is None:
             return
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             return
         # copy back files (may not exist, for instance if there was an early error of process):
         try:
@@ -89,18 +88,15 @@
             except Exception as e:
                 self.log(repr(e))
 
-    def setup_runs_locally(self):
-        return self.remote_user is None
-
     def start(self, epc):
         self.log('Starting srsENB')
         self._epc = epc
         self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))
         self.configure()
-        if self.remote_user:
-            self.start_remotely()
-        else:
+        if self._run_node.is_local():
             self.start_locally()
+        else:
+            self.start_remotely()
 
         # send t+Enter to enable console trace
         self.dbg('Enabling console trace')
@@ -149,8 +145,8 @@
         self.log_file = self.run_dir.child(srsENB.LOGFILE)
         self.pcap_file = self.run_dir.child(srsENB.PCAPFILE)
 
-        if not self.setup_runs_locally():
-            self.rem_host = remote.RemoteHost(self.run_dir, self.remote_user, self._addr)
+        if not self._run_node.is_local():
+            self.rem_host = remote.RemoteHost(self.run_dir, self._run_node.ssh_user(), self._run_node.ssh_addr())
             remote_prefix_dir = util.Dir(srsENB.REMOTE_DIR)
             self.remote_inst = util.Dir(remote_prefix_dir.child(os.path.basename(str(self.inst))))
             self.remote_run_dir = util.Dir(remote_prefix_dir.child(srsENB.BINFILE))
@@ -164,11 +160,11 @@
 
         values = super().configure(['srsenb'])
 
-        sibfile = self.config_sib_file if self.setup_runs_locally() else self.remote_config_sib_file
-        rrfile = self.config_rr_file if self.setup_runs_locally() else self.remote_config_rr_file
-        drbfile = self.config_drb_file if self.setup_runs_locally() else self.remote_config_drb_file
-        logfile = self.log_file if self.setup_runs_locally() else self.remote_log_file
-        pcapfile = self.pcap_file if self.setup_runs_locally() else self.remote_pcap_file
+        sibfile = self.config_sib_file if self._run_node.is_local() else self.remote_config_sib_file
+        rrfile = self.config_rr_file if self._run_node.is_local() else self.remote_config_rr_file
+        drbfile = self.config_drb_file if self._run_node.is_local() else self.remote_config_drb_file
+        logfile = self.log_file if self._run_node.is_local() else self.remote_log_file
+        pcapfile = self.pcap_file if self._run_node.is_local() else self.remote_pcap_file
         config.overlay(values, dict(enb=dict(sib_filename=sibfile,
                                              rr_filename=rrfile,
                                              drb_filename=drbfile,
@@ -209,7 +205,7 @@
         self.gen_conf_file(self.config_rr_file, srsENB.CFGFILE_RR, values)
         self.gen_conf_file(self.config_drb_file, srsENB.CFGFILE_DRB, values)
 
-        if not self.setup_runs_locally():
+        if not self._run_node.is_local():
             self.rem_host.recreate_remote_dir(self.remote_inst)
             self.rem_host.scp('scp-inst-to-remote', str(self.inst), remote_prefix_dir)
             self.rem_host.recreate_remote_dir(self.remote_run_dir)
diff --git a/src/osmo_gsm_tester/obj/run_node.py b/src/osmo_gsm_tester/obj/run_node.py
index bd502af..6a030ac 100644
--- a/src/osmo_gsm_tester/obj/run_node.py
+++ b/src/osmo_gsm_tester/obj/run_node.py
@@ -21,13 +21,7 @@
 from ..core import schema
 
 def on_register_schemas():
-    resource_schema = {
-        'run_type': schema.STR,
-        'run_addr': schema.IPV4,
-        'ssh_user': schema.STR,
-        'ssh_addr': schema.IPV4,
-        'run_label': schema.STR,
-        }
+    resource_schema = RunNode.schema()
     schema.register_resource_schema('run_node', resource_schema)
 
 
@@ -63,6 +57,17 @@
                    conf.get('ssh_user', None), conf.get('ssh_addr', None),
                    conf.get('run_label', None))
 
+    @classmethod
+    def schema(cls):
+        resource_schema = {
+            'run_type': schema.STR,
+            'run_addr': schema.IPV4,
+            'ssh_user': schema.STR,
+            'ssh_addr': schema.IPV4,
+            'run_label': schema.STR,
+            }
+        return resource_schema
+
     def is_local(self):
         return self._type == RunNode.T_LOCAL
 
diff --git a/sysmocom/resources.conf.prod b/sysmocom/resources.conf.prod
index c66cafa..ec148f3 100644
--- a/sysmocom/resources.conf.prod
+++ b/sysmocom/resources.conf.prod
@@ -159,15 +159,21 @@
   type: srsenb
   rf_dev_type: zmq
   rf_dev_args: auto
-  remote_user: jenkins
-  addr: 10.42.42.117
+  run_node:
+    run_type: ssh
+    run_addr: 10.42.42.117
+    ssh_user: jenkins
+    ssh_addr: 10.42.42.117
 
 - label: srsENB-B200
   type: srsenb
   rf_dev_type: uhd
   rf_dev_args: "type=b200,serial=306BD11"
-  remote_user: jenkins
-  addr: 10.42.42.117
+  run_node:
+    run_type: ssh
+    run_addr: 10.42.42.117
+    ssh_user: jenkins
+    ssh_addr: 10.42.42.117
 
 arfcn:
   - arfcn: 512

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18482
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Change-Id: If396940f154813d42ff3d3364c44b8979179127f
Gerrit-Change-Number: 18482
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200526/d64ffde3/attachment.htm>


More information about the gerrit-log mailing list