Change in osmo-gsm-tester[master]: ms_{srs, amarisoft}: 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
Thu May 28 13:13:06 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18483 )

Change subject: ms_{srs,amarisoft}: Reuse run_node to hold run info
......................................................................

ms_{srs,amarisoft}: Reuse run_node to hold run info

Change-Id: Ifdea48fed0bfc152131c53b87c34b4514c632917
---
M doc/examples/4g_srsLTE/resources.conf
M src/osmo_gsm_tester/obj/ms_amarisoft.py
M src/osmo_gsm_tester/obj/ms_srs.py
M sysmocom/resources.conf.prod
4 files changed, 54 insertions(+), 49 deletions(-)

Approvals:
  pespin: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/doc/examples/4g_srsLTE/resources.conf b/doc/examples/4g_srsLTE/resources.conf
index f0db3c0..cadb1b6 100644
--- a/doc/examples/4g_srsLTE/resources.conf
+++ b/doc/examples/4g_srsLTE/resources.conf
@@ -31,20 +31,26 @@
 - label: srsUE-zmq
   type: srsue
   rf_dev_type: zmq
-  remote_user: jenkins
-  addr: 172.18.50.100
   imsi: '001010123456789'
   ki: '00112233445566778899aabbccddeeff'
   auth_algo: 'xor'
   features: ['4g']
+  run_node:
+    run_type: ssh
+    run_addr: 172.18.50.100
+    ssh_user: jenkins
+    ssh_addr: 172.18.50.100
 
 - label: srsUE-B200
   type: srsue
   rf_dev_type: uhd
   rf_dev_args: 'type=b200,serial=3128FF1'
-  remote_user: jenkins
-  addr: 10.12.1.195
   imsi: '001010123456789'
   ki: '00112233445566778899aabbccddeeff'
   auth_algo: 'xor'
   features: ['4g']
+  run_node:
+    run_type: ssh
+    run_addr: 10.12.1.195
+    ssh_user: jenkins
+    ssh_addr: 10.12.1.195
diff --git a/src/osmo_gsm_tester/obj/ms_amarisoft.py b/src/osmo_gsm_tester/obj/ms_amarisoft.py
index d79756b..5067048 100644
--- a/src/osmo_gsm_tester/obj/ms_amarisoft.py
+++ b/src/osmo_gsm_tester/obj/ms_amarisoft.py
@@ -27,6 +27,10 @@
 from .ms import MS
 
 def on_register_schemas():
+    resource_schema = {}
+    for key, val in RunNode.schema().items():
+        resource_schema['run_node.%s' % key] = val
+    schema.register_resource_schema('modem', resource_schema)
     config_schema = {
         'license_server_addr': schema.IPV4,
         }
@@ -79,10 +83,8 @@
     IFUPFILE = 'ue-ifup'
 
     def __init__(self, testenv, conf):
-        self._addr = conf.get('addr', None)
-        if self._addr is None:
-            raise log.Error('addr not set')
-        super().__init__('amarisoftue_%s' % self._addr, conf)
+        self._run_node = RunNode.from_conf(conf.get('run_node', {}))
+        super().__init__('amarisoftue_%s' % self.addr(), conf)
         self.enb = None
         self.run_dir = None
         self.inst = None
@@ -99,7 +101,6 @@
         self.remote_log_file = None
         self.remote_ifup_file = None
         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))
 
@@ -113,7 +114,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:
@@ -121,9 +122,6 @@
         except Exception as e:
             self.log(repr(e))
 
-    def setup_runs_locally(self):
-        return self.remote_user is None
-
     def netns(self):
         return "amarisoftue1"
 
@@ -135,7 +133,7 @@
         self.enb = enb
         self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))
         self.configure()
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             self.start_locally()
         else:
             self.start_remotely()
@@ -219,8 +217,8 @@
             ''' % (self.netns(), self.netns())
             f.write(r)
 
-        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(AmarisoftUE.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(AmarisoftUE.BINFILE))
@@ -235,10 +233,11 @@
         config.overlay(values, dict(ue=self.testenv.suite().config().get('amarisoft', {})))
         config.overlay(values, dict(ue=self.testenv.suite().config().get('modem', {})))
         config.overlay(values, dict(ue=self._conf))
-        config.overlay(values, dict(ue=dict(num_antennas = self.enb.num_ports())))
+        config.overlay(values, dict(ue=dict(addr = self.addr(),
+                                            num_antennas = self.enb.num_ports())))
 
-        logfile = self.log_file if self.setup_runs_locally() else self.remote_log_file
-        ifupfile = self.ifup_file if self.setup_runs_locally() else self.remote_ifup_file
+        logfile = self.log_file if self._run_node.is_local() else self.remote_log_file
+        ifupfile = self.ifup_file if self._run_node.is_local() else self.remote_ifup_file
         config.overlay(values, dict(ue=dict(log_filename=logfile,
                                             ifup_filename=ifupfile)))
 
@@ -289,7 +288,7 @@
         self.gen_conf_file(self.config_file, AmarisoftUE.CFGFILE, values)
         self.gen_conf_file(self.config_rf_file, AmarisoftUE.CFGFILE_RF, 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)
@@ -309,13 +308,13 @@
         return not self.process.terminated()
 
     def addr(self):
-        return self._addr
+        return self._run_node.run_addr()
 
     def run_node(self):
-        return RunNode(RunNode.T_REM_SSH, self._addr, self.remote_user, self._addr)
+        return self._run_node
 
     def run_netns_wait(self, name, popen_args):
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             proc = process.NetNSProcess(name, self.run_dir.new_dir(name), self.netns(), popen_args, env={})
         else:
             proc = self.rem_host.RemoteNetNSProcess(name, self.netns(), popen_args, env={})
diff --git a/src/osmo_gsm_tester/obj/ms_srs.py b/src/osmo_gsm_tester/obj/ms_srs.py
index 389ed6b..1efa7c1 100644
--- a/src/osmo_gsm_tester/obj/ms_srs.py
+++ b/src/osmo_gsm_tester/obj/ms_srs.py
@@ -31,8 +31,6 @@
 
 def on_register_schemas():
     resource_schema = {
-        'remote_user': schema.STR,
-        'addr': schema.IPV4,
         'rf_dev_type': schema.STR,
         'rf_dev_args': schema.STR,
         'num_carriers': schema.UINT,
@@ -42,6 +40,8 @@
         'tx_gain': schema.UINT,
         'rx_gain': schema.UINT,
         }
+    for key, val in RunNode.schema().items():
+        resource_schema['run_node.%s' % key] = val
     schema.register_resource_schema('modem', resource_schema)
 
     config_schema = {
@@ -78,10 +78,8 @@
     METRICSFILE = 'srsue_metrics.csv'
 
     def __init__(self, testenv, conf):
-        self._addr = conf.get('addr', None)
-        if self._addr is None:
-            raise log.Error('addr not set')
-        super().__init__('srsue_%s' % self._addr, conf)
+        self._run_node = RunNode.from_conf(conf.get('run_node', {}))
+        super().__init__('srsue_%s' % self.addr(), conf)
         self.enb = None
         self.run_dir = None
         self.config_file = None
@@ -100,7 +98,6 @@
         self.enable_pcap = False
         self.num_carriers = 1
         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))
@@ -108,7 +105,7 @@
     def cleanup(self):
         if self.process is None:
             return
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             return
 
         # Make sure we give the UE time to tear down
@@ -125,9 +122,6 @@
             except Exception as e:
                 self.log(repr(e))
 
-    def setup_runs_locally(self):
-        return self.remote_user is None
-
     def netns(self):
         return "srsue1"
 
@@ -146,7 +140,7 @@
         self.enb = enb
         self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))
         self.configure()
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             self.start_locally()
         else:
             self.start_remotely()
@@ -215,8 +209,8 @@
         self.pcap_file = self.run_dir.child(srsUE.PCAPFILE)
         self.metrics_file = self.run_dir.child(srsUE.METRICSFILE)
 
-        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(srsUE.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(srsUE.BINFILE))
@@ -230,9 +224,9 @@
         config.overlay(values, dict(ue=self._conf))
         config.overlay(values, dict(ue=dict(num_antennas = self.enb.num_ports())))
 
-        metricsfile = self.metrics_file if self.setup_runs_locally() else self.remote_metrics_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
+        metricsfile = self.metrics_file if self._run_node.is_local() else self.remote_metrics_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(ue=dict(metrics_filename=metricsfile,
                                              log_filename=logfile,
                                              pcap_filename=pcapfile)))
@@ -300,7 +294,7 @@
             self.dbg(r)
             f.write(r)
 
-        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)
@@ -316,13 +310,13 @@
         return not self.process.terminated()
 
     def addr(self):
-        return self._addr
+        return self._run_node.run_addr()
 
     def run_node(self):
-        return RunNode(RunNode.T_REM_SSH, self._addr, self.remote_user, self._addr)
+        return self._run_node
 
     def run_netns_wait(self, name, popen_args):
-        if self.setup_runs_locally():
+        if self._run_node.is_local():
             proc = process.NetNSProcess(name, self.run_dir.new_dir(name), self.netns(), popen_args, env={})
         else:
             proc = self.rem_host.RemoteNetNSProcess(name, self.netns(), popen_args, env={})
@@ -348,7 +342,7 @@
         if self.running():
             self.stop()
 
-        if not self.setup_runs_locally():
+        if not self._run_node.is_local():
             try:
                 self.rem_host.scpfrom('scp-back-metrics', self.remote_metrics_file, self.metrics_file)
             except Exception as e:
diff --git a/sysmocom/resources.conf.prod b/sysmocom/resources.conf.prod
index ec148f3..e6429a0 100644
--- a/sysmocom/resources.conf.prod
+++ b/sysmocom/resources.conf.prod
@@ -258,23 +258,29 @@
   type: srsue
   rf_dev_type: zmq
   rf_dev_args: auto
-  remote_user: jenkins
-  addr: 10.42.42.116
   imsi: '001010123456789'
   ki: '00112233445566778899aabbccddeeff'
   auth_algo: 'xor'
   features: ['4g']
+  run_node:
+    run_type: ssh
+    run_addr: 10.42.42.116
+    ssh_user: jenkins
+    ssh_addr: 10.42.42.116
 
 - label: srsUE-soapy-lms_1
   type: srsue
   rf_dev_type: soapy
   rf_dev_args: driver=lime,serial=00090706024F0A22,rxant=LNAW,txant=BAND1
-  remote_user: jenkins
-  addr: 10.42.42.116
   imsi: '001010123456789'
   ki: '00112233445566778899aabbccddeeff'
   auth_algo: 'xor'
   features: ['4g']
+  run_node:
+    run_type: ssh
+    run_addr: 10.42.42.116
+    ssh_user: jenkins
+    ssh_addr: 10.42.42.116
 
 osmocon_phone:
   - serial_device: '/dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_00897B41-if00-port0'

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18483
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: Ifdea48fed0bfc152131c53b87c34b4514c632917
Gerrit-Change-Number: 18483
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200528/6b539520/attachment.htm>


More information about the gerrit-log mailing list