enb: Reuse run_node to hold run info
Change-Id: If396940f154813d42ff3d3364c44b8979179127f
This commit is contained in:
parent
e921995ce7
commit
1abff4e260
|
@ -11,15 +11,21 @@ enb:
|
|||
- 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
|
||||
|
|
|
@ -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 @@ def on_register_schemas():
|
|||
'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 @@ class eNodeB(log.Origin, metaclass=ABCMeta):
|
|||
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 @@ class eNodeB(log.Origin, metaclass=ABCMeta):
|
|||
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 @@ class eNodeB(log.Origin, metaclass=ABCMeta):
|
|||
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 with MCS 28 QAM64
|
||||
|
|
|
@ -69,7 +69,6 @@ class AmarisoftENB(enb.eNodeB):
|
|||
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 @@ class AmarisoftENB(enb.eNodeB):
|
|||
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 @@ class AmarisoftENB(enb.eNodeB):
|
|||
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 @@ class AmarisoftENB(enb.eNodeB):
|
|||
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 @@ class AmarisoftENB(enb.eNodeB):
|
|||
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 @@ class AmarisoftENB(enb.eNodeB):
|
|||
|
||||
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 @@ class AmarisoftENB(enb.eNodeB):
|
|||
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)
|
||||
|
|
|
@ -68,7 +68,6 @@ class srsENB(enb.eNodeB):
|
|||
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 @@ class srsENB(enb.eNodeB):
|
|||
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 @@ class srsENB(enb.eNodeB):
|
|||
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 @@ class srsENB(enb.eNodeB):
|
|||
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 @@ class srsENB(enb.eNodeB):
|
|||
|
||||
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 @@ class srsENB(enb.eNodeB):
|
|||
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)
|
||||
|
|
|
@ -21,13 +21,7 @@ from ..core import log
|
|||
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 @@ class RunNode(log.Origin):
|
|||
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
|
||||
|
||||
|
|
|
@ -159,15 +159,21 @@ enb:
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue