ms_{srs,amarisoft}: Reuse run_node to hold run info
Change-Id: Ifdea48fed0bfc152131c53b87c34b4514c632917
This commit is contained in:
parent
1abff4e260
commit
5f826be20a
|
@ -31,20 +31,26 @@ modem:
|
|||
- 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
|
||||
|
|
|
@ -27,6 +27,10 @@ from .run_node import RunNode
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
''' % (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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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 @@ class AmarisoftUE(MS):
|
|||
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={})
|
||||
|
|
|
@ -31,8 +31,6 @@ def rf_type_valid(rf_type_str):
|
|||
|
||||
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 @@ def on_register_schemas():
|
|||
'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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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 @@ class srsUE(MS):
|
|||
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:
|
||||
|
|
|
@ -258,23 +258,29 @@ modem:
|
|||
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'
|
||||
|
|
Loading…
Reference in New Issue