Change in osmo-gsm-tester[master]: {srs, amarisoft}enb:Move shared code to parent generic class eNodeB

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 Mar 31 12:22:27 UTC 2020


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

Change subject: {srs,amarisoft}enb:Move shared code to parent generic class eNodeB
......................................................................

{srs,amarisoft}enb:Move shared code to parent generic class eNodeB

Change-Id: Ica0f1d4179a905d6dfc77d3e8eb08ac6cd5c3d2e
---
M src/osmo_gsm_tester/amarisoft_enb.py
M src/osmo_gsm_tester/enb.py
M src/osmo_gsm_tester/srs_enb.py
3 files changed, 57 insertions(+), 100 deletions(-)

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



diff --git a/src/osmo_gsm_tester/amarisoft_enb.py b/src/osmo_gsm_tester/amarisoft_enb.py
index e16fe7f..99b0ace 100644
--- a/src/osmo_gsm_tester/amarisoft_enb.py
+++ b/src/osmo_gsm_tester/amarisoft_enb.py
@@ -59,7 +59,6 @@
     def __init__(self, suite_run, conf):
         super().__init__(suite_run, conf, 'amarisoftenb')
         self.ue = None
-        self.epc = None
         self.run_dir = None
         self._bin_prefix = None
         self.config_file = None
@@ -76,8 +75,6 @@
         self.remote_config_rf_file = None
         self.remote_config_drb_file = None
         self.remote_log_file = None
-        self._num_prb = 0
-        self._txmode = 0
         self.suite_run = suite_run
         self.remote_user = conf.get('remote_user', None)
         if not rf_type_valid(conf.get('rf_dev_type', None)):
@@ -105,7 +102,7 @@
 
     def start(self, epc):
         self.log('Starting AmarisoftENB')
-        self.epc = epc
+        self._epc = epc
         self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
         self.configure()
         self._start()
@@ -138,7 +135,6 @@
             f.write(r)
 
     def configure(self):
-
         self.inst = util.Dir(os.path.abspath(self.bin_prefix()))
         lib = self.inst.child('lib')
         if not self.inst.isfile('', AmarisoftENB.BINFILE):
@@ -164,19 +160,9 @@
             self.remote_config_drb_file = remote_run_dir.child(AmarisoftENB.CFGFILE_DRB)
             self.remote_log_file = remote_run_dir.child(AmarisoftENB.LOGFILE)
 
-        values = dict(enb=config.get_defaults('enb'))
-        config.overlay(values, dict(enb=config.get_defaults('amarisoftenb')))
-        config.overlay(values, dict(enb=self.suite_run.config().get('enb', {})))
-        config.overlay(values, dict(enb=self._conf))
-        config.overlay(values, dict(enb={ 'mme_addr': self.epc.addr() }))
-
-        self._num_prb = int(values['enb'].get('num_prb', None))
-        assert self._num_prb
-        self._txmode = int(values['enb'].get('transmission_mode', None))
-        assert self._txmode
+        values = super().configure('amarisoftenb')
         self._num_cells = int(values['enb'].get('num_cells', None))
         assert self._num_cells
-        config.overlay(values, dict(enb={ 'num_ports': self.num_ports() }))
 
         logfile = self.log_file if self.setup_runs_locally() else self.remote_log_file
         config.overlay(values, dict(enb=dict(log_filename=logfile)))
@@ -205,38 +191,4 @@
     def running(self):
         return not self.process.terminated()
 
-    def num_prb(self):
-        return self._num_prb
-
-    def num_ports(self):
-        if self._txmode == 1:
-            return 1
-        return 2
-
-    def ue_max_rate(self, downlink=True):
-        # The max rate for a single UE per PRB configuration in TM1
-        max_phy_rate_tm1_dl = { 6 : 3.5e6,
-                               15 : 11e6,
-                               25 : 18e6,
-                               50 : 36e6,
-                               75 : 55e6,
-                               100 : 75e6 }
-        max_phy_rate_tm1_ul = { 6 : 0.9e6,
-                               15 : 4.7e6,
-                               25 : 10e6,
-                               50 : 23e6,
-                               75 : 34e6,
-                               100 : 51e6 }
-        if downlink:
-            max_rate = max_phy_rate_tm1_dl[self.num_prb()]
-        else:
-            max_rate = max_phy_rate_tm1_ul[self.num_prb()]
-        #TODO: calculate for non-standard prb numbers.
-        if self._txmode > 2:
-            max_rate *= 2
-        # We use 3 control symbols for 6, 15 and 25 PRBs which results in lower max rate
-        if self.num_prb() < 50:
-          max_rate *= 0.9
-        return max_rate
-
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/enb.py b/src/osmo_gsm_tester/enb.py
index f6b7722..197ad25 100644
--- a/src/osmo_gsm_tester/enb.py
+++ b/src/osmo_gsm_tester/enb.py
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from abc import ABCMeta, abstractmethod
-from . import log
+from . import log, config
 
 
 class eNodeB(log.Origin, metaclass=ABCMeta):
@@ -33,6 +33,28 @@
         if self._addr is None:
             raise log.Error('addr not set')
         self.set_name('%s_%s' % (name, self._addr))
+        self._txmode = 0
+        self._num_prb = 0
+        self._epc = None
+
+    def configure(self, default_specifics):
+        values = dict(enb=config.get_defaults('enb'))
+        config.overlay(values, dict(enb=config.get_defaults(default_specifics)))
+        config.overlay(values, dict(enb=self.suite_run.config().get('enb', {})))
+        config.overlay(values, dict(enb=self._conf))
+        self._num_prb = int(values['enb'].get('num_prb', None))
+        assert self._num_prb
+        self._txmode = int(values['enb'].get('transmission_mode', None))
+        assert self._txmode
+        config.overlay(values, dict(enb={ 'num_ports': self.num_ports() }))
+        assert self._epc is not None
+        config.overlay(values, dict(enb={ 'mme_addr': self._epc.addr() }))
+        return values
+
+    def num_ports(self):
+        if self._txmode == 1:
+            return 1
+        return 2
 
 ########################
 # PUBLIC - INTERNAL API
@@ -41,6 +63,9 @@
         'Nothing to do by default. Subclass can override if required.'
         pass
 
+    def num_prb(self):
+        return self._num_prb
+
 ###################
 # PUBLIC (test API included)
 ###################
@@ -64,4 +89,30 @@
     def addr(self):
         return self._addr
 
+    def ue_max_rate(self, downlink=True):
+        # The max rate for a single UE per PRB configuration in TM1
+        max_phy_rate_tm1_dl = { 6 : 3.5e6,
+                               15 : 11e6,
+                               25 : 18e6,
+                               50 : 36e6,
+                               75 : 55e6,
+                               100 : 75e6 }
+        max_phy_rate_tm1_ul = { 6 : 0.9e6,
+                               15 : 4.7e6,
+                               25 : 10e6,
+                               50 : 23e6,
+                               75 : 34e6,
+                               100 : 51e6 }
+        if downlink:
+            max_rate = max_phy_rate_tm1_dl[self.num_prb()]
+        else:
+            max_rate = max_phy_rate_tm1_ul[self.num_prb()]
+        #TODO: calculate for non-standard prb numbers.
+        if self._txmode > 2:
+            max_rate *= 2
+        # We use 3 control symbols for 6, 15 and 25 PRBs which results in lower max rate
+        if self.num_prb() < 50:
+          max_rate *= 0.9
+        return max_rate
+
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/srs_enb.py b/src/osmo_gsm_tester/srs_enb.py
index d4bdcaa..91881c0 100644
--- a/src/osmo_gsm_tester/srs_enb.py
+++ b/src/osmo_gsm_tester/srs_enb.py
@@ -59,7 +59,6 @@
     def __init__(self, suite_run, conf):
         super().__init__(suite_run, conf, srsENB.BINFILE)
         self.ue = None
-        self.epc = None
         self.run_dir = None
         self.config_file = None
         self.config_sib_file = None
@@ -75,8 +74,6 @@
         self.remote_config_drb_file = None
         self.remote_log_file = None
         self.remote_pcap_file = None
-        self._num_prb = 0
-        self._txmode = 0
         self.enable_pcap = False
         self.suite_run = suite_run
         self.remote_user = conf.get('remote_user', None)
@@ -104,7 +101,7 @@
 
     def start(self, epc):
         self.log('Starting srsENB')
-        self.epc = epc
+        self._epc = epc
         self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
         self.configure()
         if self.remote_user:
@@ -190,27 +187,18 @@
             f.write(r)
 
     def configure(self):
-        values = dict(enb=config.get_defaults('enb'))
-        config.overlay(values, dict(enb=config.get_defaults('srsenb')))
-        config.overlay(values, dict(enb=self.suite_run.config().get('enb', {})))
-        config.overlay(values, dict(enb=self._conf))
-        config.overlay(values, dict(enb={ 'mme_addr': self.epc.addr() }))
+        values = super().configure('srsenb')
 
         # Convert parsed boolean string to Python boolean:
         self.enable_pcap = util.str2bool(values['enb'].get('enable_pcap', 'false'))
         config.overlay(values, dict(enb={'enable_pcap': self.enable_pcap}))
 
-        self._num_prb = int(values['enb'].get('num_prb', None))
-        assert self._num_prb
-        self._txmode = int(values['enb'].get('transmission_mode', None))
-        assert self._txmode
         self._num_cells = int(values['enb'].get('num_cells', None))
         assert self._num_cells
-        config.overlay(values, dict(enb={ 'num_ports': self.num_ports() }))
 
         # We need to set some specific variables programatically here to match IP addresses:
         if self._conf.get('rf_dev_type') == 'zmq':
-            base_srate = num_prb2base_srate(self._num_prb)
+            base_srate = num_prb2base_srate(self.num_prb())
             rf_dev_args = 'fail_on_disconnect=true' \
                         + ',tx_port=tcp://' + self.addr() + ':2000' \
                         + ',tx_port2=tcp://' + self.addr() + ':2002' \
@@ -240,38 +228,4 @@
     def running(self):
         return not self.process.terminated()
 
-    def num_prb(self):
-        return self._num_prb
-
-    def num_ports(self):
-        if self._txmode == 1:
-            return 1
-        return 2
-
-    def ue_max_rate(self, downlink=True):
-        # The max rate for a single UE per PRB configuration in TM1
-        max_phy_rate_tm1_dl = { 6 : 3.5e6,
-                               15 : 11e6,
-                               25 : 18e6,
-                               50 : 36e6,
-                               75 : 55e6,
-                               100 : 75e6 }
-        max_phy_rate_tm1_ul = { 6 : 0.9e6,
-                               15 : 4.7e6,
-                               25 : 10e6,
-                               50 : 23e6,
-                               75 : 34e6,
-                               100 : 51e6 }
-        if downlink:
-            max_rate = max_phy_rate_tm1_dl[self.num_prb()]
-        else:
-            max_rate = max_phy_rate_tm1_ul[self.num_prb()]
-        #TODO: calculate for non-standard prb numbers.
-        if self._txmode > 2:
-            max_rate *= 2
-        # We use 3 control symbols for 6, 15 and 25 PRBs which results in lower max rate
-        if self.num_prb() < 50:
-          max_rate *= 0.9
-        return max_rate
-
 # vim: expandtab tabstop=4 shiftwidth=4

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17688
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: Ica0f1d4179a905d6dfc77d3e8eb08ac6cd5c3d2e
Gerrit-Change-Number: 17688
Gerrit-PatchSet: 1
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/20200331/53cc8e2f/attachment.htm>


More information about the gerrit-log mailing list