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.orgpespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20520 ) Change subject: enb/ue: Assign zmq binding ports dynamically at runtime ...................................................................... enb/ue: Assign zmq binding ports dynamically at runtime ports are assigned increasingly in blocks in the range 2000-2200. Change-Id: If2abddeb2ad6819de4f3ce64daaf00d2f527f9d2 --- M src/osmo_gsm_tester/core/resource.py M src/osmo_gsm_tester/obj/enb.py M src/osmo_gsm_tester/obj/ms_amarisoft.py M src/osmo_gsm_tester/obj/ms_srs.py 4 files changed, 51 insertions(+), 20 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/20/20520/1 diff --git a/src/osmo_gsm_tester/core/resource.py b/src/osmo_gsm_tester/core/resource.py index 62bba07..61a73aa 100644 --- a/src/osmo_gsm_tester/core/resource.py +++ b/src/osmo_gsm_tester/core/resource.py @@ -184,6 +184,15 @@ # BVCI=0 and =1 are reserved, avoid them. return self.next_persistent_value('bvci', '2', schema.uint16, lambda x: str(int(x)+1) if int(x) < pow(2,16) - 1 else '2', origin) + def next_zmq_port_range(self, origin, num_ports): + # Allocate continuous num_ports port between 2000 and 2200. returns base port. + # Assumption: base port is always an odd number. + num_ports = num_ports if num_ports % 2 == 0 else num_ports + 1 + base_port = self.next_persistent_value('bvci', '2000', schema.uint16, + lambda x: str(int(x)+num_ports) if int(x) < 2200 - num_ports else '2000', origin) + return int(base_port) + + class NoResourceExn(log.Error): pass diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py index 6384f15..ab50de8 100644 --- a/src/osmo_gsm_tester/obj/enb.py +++ b/src/osmo_gsm_tester/obj/enb.py @@ -84,6 +84,7 @@ self._num_prb = 0 self._num_cells = None self._epc = None + self._zmq_base_bind_port = None def configure(self, config_specifics_li): values = dict(enb=config.get_defaults('enb')) @@ -148,6 +149,9 @@ def num_prb(self): return self._num_prb + def zmq_base_bind_port(self): + return self._zmq_base_bind_port + #reference: srsLTE.git srslte_symbol_sz() def num_prb2symbol_sz(self, num_prb): if num_prb == 6: @@ -165,16 +169,19 @@ def get_zmq_rf_dev_args(self): base_srate = self.num_prb2base_srate(self.num_prb()) + if self._zmq_base_bind_port is None: + self._zmq_base_bind_port = self.testenv.suite().resource_pool().next_zmq_port_range(self, 4) + ue_base_port = self.ue.zmq_base_bind_port() # Define all 8 possible RF ports (2x CA with 2x2 MIMO) rf_dev_args = 'fail_on_disconnect=true' \ - + ',tx_port0=tcp://' + self.addr() + ':2000' \ - + ',tx_port1=tcp://' + self.addr() + ':2002' \ - + ',tx_port2=tcp://' + self.addr() + ':2004' \ - + ',tx_port3=tcp://' + self.addr() + ':2006' \ - + ',rx_port0=tcp://' + self.ue.addr() + ':2001' \ - + ',rx_port1=tcp://' + self.ue.addr() + ':2003' \ - + ',rx_port2=tcp://' + self.ue.addr() + ':2005' \ - + ',rx_port3=tcp://' + self.ue.addr() + ':2007' + + ',tx_port0=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 0) \ + + ',tx_port1=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 1) \ + + ',tx_port2=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 2) \ + + ',tx_port3=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 3) \ + + ',rx_port0=tcp://' + self.ue.addr() + ':' + str(ue_base_port + 0) \ + + ',rx_port1=tcp://' + self.ue.addr() + ':' + str(ue_base_port + 1) \ + + ',rx_port2=tcp://' + self.ue.addr() + ':' + str(ue_base_port + 2) \ + + ',rx_port3=tcp://' + self.ue.addr() + ':' + str(ue_base_port + 3) rf_dev_args += ',id=enb,base_srate=' + str(base_srate) diff --git a/src/osmo_gsm_tester/obj/ms_amarisoft.py b/src/osmo_gsm_tester/obj/ms_amarisoft.py index 7af6283..f151850 100644 --- a/src/osmo_gsm_tester/obj/ms_amarisoft.py +++ b/src/osmo_gsm_tester/obj/ms_amarisoft.py @@ -101,6 +101,9 @@ self.testenv = testenv 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)) + if conf.get('rf_dev_type') == 'zmq': + # Define all 4 possible local RF ports (2x CA with 2x2 MIMO) + self._zmq_base_bind_port = self.testenv.suite().resource_pool().next_zmq_port_range(self, 4) def bin_prefix(self): if self._bin_prefix is None: @@ -123,6 +126,9 @@ def netns(self): return "amarisoftue1" + def zmq_base_bind_port(self): + return self._zmq_base_bind_port + def stop(self): self.testenv.stop_process(self.process) @@ -242,10 +248,11 @@ # 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.enb.num_prb()) - rf_dev_args = 'tx_port0=tcp://' + self.addr() + ':2001' \ - + ',tx_port1=tcp://' + self.addr() + ':2003' \ - + ',rx_port0=tcp://' + self.enb.addr() + ':2000' \ - + ',rx_port1=tcp://' + self.enb.addr() + ':2002' \ + enb_base_port = self.enb.zmq_base_bind_port() + rf_dev_args = 'tx_port0=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 0) \ + + ',tx_port1=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 1) \ + + ',rx_port0=tcp://' + self.enb.addr() + ':' + str(enb_base_port + 0) \ + + ',rx_port1=tcp://' + self.enb.addr() + ':' + str(enb_base_port + 1) \ + ',tx_freq=2510e6,rx_freq=2630e6,tx_freq2=2530e6,rx_freq2=2650e6' \ + ',id=ue,base_srate='+ str(base_srate) config.overlay(values, dict(ue=dict(sample_rate = base_srate / (1000*1000), diff --git a/src/osmo_gsm_tester/obj/ms_srs.py b/src/osmo_gsm_tester/obj/ms_srs.py index 1c0f728..41df429 100644 --- a/src/osmo_gsm_tester/obj/ms_srs.py +++ b/src/osmo_gsm_tester/obj/ms_srs.py @@ -99,6 +99,10 @@ 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)) + self._zmq_base_bind_port = None + if conf.get('rf_dev_type') == 'zmq': + # Define all 4 possible local RF ports (2x CA with 2x2 MIMO) + self._zmq_base_bind_port = self.testenv.suite().resource_pool().next_zmq_port_range(self, 4) def cleanup(self): if self.process is None: @@ -150,6 +154,9 @@ def netns(self): return "srsue1" + def zmq_base_bind_port(self): + return self._zmq_base_bind_port + def sleep_after_stop(self): # Only sleep once if self.stop_sleep_time > 0: @@ -270,14 +277,15 @@ if self._conf.get('rf_dev_type') == 'zmq': base_srate = num_prb2base_srate(self.enb.num_prb()) # Define all 8 possible RF ports (2x CA with 2x2 MIMO) - rf_dev_args = 'tx_port0=tcp://' + self.addr() + ':2001' \ - + ',tx_port1=tcp://' + self.addr() + ':2003' \ - + ',tx_port2=tcp://' + self.addr() + ':2005' \ - + ',tx_port3=tcp://' + self.addr() + ':2007' \ - + ',rx_port0=tcp://' + self.enb.addr() + ':2000' \ - + ',rx_port1=tcp://' + self.enb.addr() + ':2002' \ - + ',rx_port2=tcp://' + self.enb.addr() + ':2004' \ - + ',rx_port3=tcp://' + self.enb.addr() + ':2006' + enb_base_port = self.enb.zmq_base_bind_port() + rf_dev_args = 'tx_port0=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 0) \ + + ',tx_port1=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 1) \ + + ',tx_port2=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 2) \ + + ',tx_port3=tcp://' + self.addr() + ':' + str(self._zmq_base_bind_port + 3) \ + + ',rx_port0=tcp://' + self.enb.addr() + ':' + str(enb_base_port + 0) \ + + ',rx_port1=tcp://' + self.enb.addr() + ':' + str(enb_base_port + 1) \ + + ',rx_port2=tcp://' + self.enb.addr() + ':' + str(enb_base_port + 2) \ + + ',rx_port3=tcp://' + self.enb.addr() + ':' + str(enb_base_port + 3) if self.num_carriers == 1: # Single carrier -- To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/20520 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: If2abddeb2ad6819de4f3ce64daaf00d2f527f9d2 Gerrit-Change-Number: 20520 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/20201009/1a92e453/attachment.htm>