Commit be1c2dc1 authored by Kirill Smelkov's avatar Kirill Smelkov

software/ors-amarisoft: ue: Switch UE type to be runtime parameter

Similarly to rf_mode, previously type of emulated UE was static parameter of
particular software release - it was possible to simulate UE and attach to
cells only of the RAT of particular template.

In MultiRU it will be possible to generally emulate all kind of UEs - both LTE
and NR all at the same time, and attach them to LTE and NR cells
simultaneously.

-> Switch type of UE to be runtime parameter as a preparatory step for that.

URLs of software releases changes again (we remove lte and nr in names), but
here we do not care about backward compatibility because currently there is just
a few UEsim deployments and migration should be easy.
parent 531483b4
{#- do_lte/do_nr indicate whether we have LTE or NR UE/cells #}
{%- do assert(do_lte or do_nr) %}
{%- do assert(not (do_lte and do_nr)) %}
{#- ue_type indicates with which mode ue is instantiated with - lte | nr #}
{%- set ue_type = slapparameter_dict.ue_type %}
{%- do assert(ue_type in ('lte', 'nr'), ue_type) %}
{
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null",
......@@ -17,7 +17,7 @@ rf_driver: {
tx_gain: {{ slapparameter_dict.get('tx_gain', 60) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', 40) }},
cell_groups: [
{%- if do_lte %}
{%- if ue_type == 'lte' %}
{
// LTE cell
multi_ue: true,
......@@ -34,7 +34,7 @@ rf_driver: {
pdcch_decode_opt_threshold: 0.1,
},
{%- endif %}
{%- if do_nr %}
{%- if ue_type == 'nr' %}
{
// NR cell
group_type: "nr",
......@@ -63,10 +63,10 @@ rf_driver: {
impi: "{{ slapparameter_dict.get('impi', '') }}",
imsi: "{{ slapparameter_dict.get('imsi', default_imsi) }}",
K: "{{ slapparameter_dict.get('k', default_k) }}",
{%- if do_lte %}
{%- if ue_type == 'lte' %}
ue_category: 12,
{%- endif %}
{%- if do_nr %}
{%- if ue_type == 'nr' %}
as_release: 15,
ue_category: "nr",
{%- endif %}
......
......@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{ "$ref": "ue/lte/input-schema.json" },
{ "$ref": "ue/nr/input-schema.json" }
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +31,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{ "$ref": "ue/lte/input-schema.json" },
{ "$ref": "ue/nr/input-schema.json" }
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +31,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{ "$ref": "ue/lte/input-schema.json" },
{ "$ref": "ue/nr/input-schema.json" }
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +31,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -10,8 +10,7 @@ enb-epc = $${:obsolete}
gnb-epc = $${:obsolete}
epc = $${:obsolete}
mme = $${:obsolete}
ue-lte =
ue-nr =
ue =
[dynamic-template-obsolete]
< = jinja2-template-base
......
......@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{ "$ref": "ue/lte/input-schema.json" },
{ "$ref": "ue/nr/input-schema.json" }
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "{{ default_lte_bandwidth }}"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +31,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_ul }}
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "{{ default_imsi }}"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "{{ default_k }}"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": {{ default_nr_bandwidth }}
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_dl }}
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_ul }}
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "{{ default_imsi }}"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "{{ default_k }}"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{#- rat indicates with which mode ue is instantiated with - lte | nr #}
{%- set rat = slap_configuration['slap-software-type'] .removeprefix('ue-') %}
{%- do assert(rat in ('lte', 'nr'), rat) %}
{%- set do_lte = (rat == 'lte') %}
{%- set do_nr = (rat == 'nr') %}
[buildout]
parts =
directory
......@@ -108,8 +101,6 @@ context =
raw default_n_antenna_ul {{ default_n_antenna_ul }}
raw default_imsi {{ default_imsi }}
raw default_k {{default_k}}
json do_lte {{ do_lte | tojson }}
json do_nr {{ do_nr | tojson }}
[lte-ue-config]
<= config-base
......
......@@ -104,8 +104,7 @@ recipe = slapos.cookbook:switch-softwaretype
enb = dynamic-template-enb:output
gnb = dynamic-template-enb:output
core-network = dynamic-template-core-network:output
ue-lte = dynamic-template-ue:output
ue-nr = dynamic-template-ue:output
ue = dynamic-template-ue:output
RootSoftwareInstance = $${:core-network}
[dynamic-template-enb]
......@@ -177,7 +176,7 @@ extra-context =
[dynamic-template-ue]
< = jinja2-template-base
url = ${template-ue:target}
filename = instance-ue-lte.cfg
filename = instance-ue.cfg
extensions = jinja2.ext.do
extra-context =
section slap_configuration slap-configuration
......
......@@ -36,8 +36,7 @@ software_list = [
}
]
for i in range (len(software_list)):
software_list[i].update({
defaults = {
'default_lte_bandwidth' : "20 MHz",
'default_lte_inactivity_timer' : 10000,
'default_nr_bandwidth' : 40,
......@@ -47,13 +46,15 @@ for i in range (len(software_list)):
'default_nr_inactivity_timer' : 10000,
'default_imsi' : "001010123456789",
'default_k' : "00112233445566778899aabbccddeeff",
})
}
for i in range (len(software_list)):
software_list[i].update(defaults)
with open('software.cfg.json.jinja2', 'r') as f:
software_json_template = Template(f.read())
instance_json_template_map = {}
for software_type in ['enb', 'gnb', 'ue-lte', 'ue-nr']:
for software_type in ['enb', 'gnb', 'ue']:
with open('instance-{}-input-schema.json.jinja2'.format(software_type), 'r') as f:
instance_json_template_map[software_type] = Template(f.read())
......@@ -78,11 +79,20 @@ for software in software_list:
test_template.render(**software, **global_context))
emit('software-{}.cfg'.format(software['software_name']),
software_template.render(**software, **global_context))
for software_type in ['enb', 'gnb', 'ue-lte', 'ue-nr']:
for software_type in ['enb', 'gnb', 'ue']:
# no ue for ors
if software['bbu'] == 'ors' and software_type.startswith('ue-'):
if software['bbu'] == 'ors' and software_type == 'ue':
continue
emit('instance-{}-{}-input-schema.json'.format(
software['software_name'],
software_type),
instance_json_template_map[software_type].render(**software, **global_context))
# render emits file @ path from path.jinja2
def render(path):
with open('%s.jinja2' % path, 'r') as f:
template = Template(f.read())
emit(path, template.render(**defaults, **global_context))
for path in ('ue/common.json', 'ue/lte/input-schema.json', 'ue/nr/input-schema.json'):
render(path)
......@@ -123,8 +123,8 @@ def do_enb():
def do_ue():
do('ue.jinja2.cfg', 'ue-lte.cfg', 'lte', {'rue_addr': 'host1'})
do('ue.jinja2.cfg', 'ue-nr.cfg', 'nr', {'rue_addr': 'host2'})
do('ue.jinja2.cfg', 'ue-lte.cfg', 'lte', {'ue_type': 'lte', 'rue_addr': 'host1'})
do('ue.jinja2.cfg', 'ue-nr.cfg', 'nr', {'ue_type': 'nr', 'rue_addr': 'host2'})
def main():
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-any-ue-lte-input-schema.json",
"response": "instance-any-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-any-ue-input-schema.json",
"response": "instance-any-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-any-ue-nr-input-schema.json",
"response": "instance-any-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-lopcomm-ue-lte-input-schema.json",
"response": "instance-lopcomm-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-lopcomm-ue-input-schema.json",
"response": "instance-lopcomm-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-lopcomm-ue-nr-input-schema.json",
"response": "instance-lopcomm-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-m2ru-ue-lte-input-schema.json",
"response": "instance-m2ru-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-m2ru-ue-input-schema.json",
"response": "instance-m2ru-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-m2ru-ue-nr-input-schema.json",
"response": "instance-m2ru-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
{% if bbu != 'ors' %}
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-{{ software_name }}-ue-lte-input-schema.json",
"response": "instance-{{ software_name }}-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-{{ software_name }}-ue-input-schema.json",
"response": "instance-{{ software_name }}-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-{{ software_name }}-ue-nr-input-schema.json",
"response": "instance-{{ software_name }}-ue-nr-schema.json",
"index": 5
},
{% endif %}
"enb": {
"title": "eNB",
......
......@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "UE. Common properties",
"type": "object",
"required": [
"ue_type",
"rue_addr"
],
"properties": {
"$ref": "../sim/input-schema.json#/properties",
"ue_type": {
"type": "string",
"options": { "hidden": true }
},
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"imsi": {
"$ref": "../sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "../sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "../sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm."
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "UE. Common properties",
"type": "object",
"required": [
"ue_type",
"rue_addr"
],
"properties": {
"$ref": "../sim/input-schema.json#/properties",
"ue_type": {
"type": "string",
"options": { "hidden": true }
},
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"imsi": {
"$ref": "../sim/input-schema.json#/properties/imsi",
"default": "{{ default_imsi }}"
},
"k": {
"$ref": "../sim/input-schema.json#/properties/k",
"default": "{{ default_k }}"
},
"sim_algo": {
"$ref": "../sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm."
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "LTE UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "LTE UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "{{ default_lte_bandwidth }}"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "NR UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "NR UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": {{ default_nr_bandwidth }}
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment