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 #} {#- ue_type indicates with which mode ue is instantiated with - lte | nr #}
{%- do assert(do_lte or do_nr) %} {%- set ue_type = slapparameter_dict.ue_type %}
{%- do assert(not (do_lte and do_nr)) %} {%- 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", 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: { ...@@ -17,7 +17,7 @@ rf_driver: {
tx_gain: {{ slapparameter_dict.get('tx_gain', 60) }}, tx_gain: {{ slapparameter_dict.get('tx_gain', 60) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', 40) }}, rx_gain: {{ slapparameter_dict.get('rx_gain', 40) }},
cell_groups: [ cell_groups: [
{%- if do_lte %} {%- if ue_type == 'lte' %}
{ {
// LTE cell // LTE cell
multi_ue: true, multi_ue: true,
...@@ -34,7 +34,7 @@ rf_driver: { ...@@ -34,7 +34,7 @@ rf_driver: {
pdcch_decode_opt_threshold: 0.1, pdcch_decode_opt_threshold: 0.1,
}, },
{%- endif %} {%- endif %}
{%- if do_nr %} {%- if ue_type == 'nr' %}
{ {
// NR cell // NR cell
group_type: "nr", group_type: "nr",
...@@ -63,10 +63,10 @@ rf_driver: { ...@@ -63,10 +63,10 @@ rf_driver: {
impi: "{{ slapparameter_dict.get('impi', '') }}", impi: "{{ slapparameter_dict.get('impi', '') }}",
imsi: "{{ slapparameter_dict.get('imsi', default_imsi) }}", imsi: "{{ slapparameter_dict.get('imsi', default_imsi) }}",
K: "{{ slapparameter_dict.get('k', default_k) }}", K: "{{ slapparameter_dict.get('k', default_k) }}",
{%- if do_lte %} {%- if ue_type == 'lte' %}
ue_category: 12, ue_category: 12,
{%- endif %} {%- endif %}
{%- if do_nr %} {%- if ue_type == 'nr' %}
as_release: 15, as_release: 15,
ue_category: "nr", ue_category: "nr",
{%- endif %} {%- endif %}
......
...@@ -3,13 +3,12 @@ ...@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"$ref": "sim/input-schema.json#/properties", "ue": {
"title": "UE",
"rue_addr": { "oneOf": [
"title": "[Required] Remote UE address", { "$ref": "ue/lte/input-schema.json" },
"description": "[Required] Address of remote UE server. Default port is 2152.", { "$ref": "ue/nr/input-schema.json" }
"type": "string", ]
"default": ""
}, },
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
...@@ -21,25 +20,6 @@ ...@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)", "description": "Rx gain (in dB)",
"type": "number" "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": { "n_antenna_dl": {
"title": "Number of DL antennas", "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.", "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 @@ ...@@ -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.", "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", "type": "number",
"default": 2 "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 @@ ...@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"$ref": "sim/input-schema.json#/properties", "ue": {
"title": "UE",
"rue_addr": { "oneOf": [
"title": "[Required] Remote UE address", { "$ref": "ue/lte/input-schema.json" },
"description": "[Required] Address of remote UE server. Default port is 2152.", { "$ref": "ue/nr/input-schema.json" }
"type": "string", ]
"default": ""
}, },
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
...@@ -21,25 +20,6 @@ ...@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)", "description": "Rx gain (in dB)",
"type": "number" "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": { "n_antenna_dl": {
"title": "Number of DL antennas", "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.", "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 @@ ...@@ -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.", "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", "type": "number",
"default": 2 "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 @@ ...@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"$ref": "sim/input-schema.json#/properties", "ue": {
"title": "UE",
"rue_addr": { "oneOf": [
"title": "[Required] Remote UE address", { "$ref": "ue/lte/input-schema.json" },
"description": "[Required] Address of remote UE server. Default port is 2152.", { "$ref": "ue/nr/input-schema.json" }
"type": "string", ]
"default": ""
}, },
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
...@@ -21,25 +20,6 @@ ...@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)", "description": "Rx gain (in dB)",
"type": "number" "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": { "n_antenna_dl": {
"title": "Number of DL antennas", "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.", "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 @@ ...@@ -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.", "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", "type": "number",
"default": 2 "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} ...@@ -10,8 +10,7 @@ enb-epc = $${:obsolete}
gnb-epc = $${:obsolete} gnb-epc = $${:obsolete}
epc = $${:obsolete} epc = $${:obsolete}
mme = $${:obsolete} mme = $${:obsolete}
ue-lte = ue =
ue-nr =
[dynamic-template-obsolete] [dynamic-template-obsolete]
< = jinja2-template-base < = jinja2-template-base
......
...@@ -3,13 +3,12 @@ ...@@ -3,13 +3,12 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"$ref": "sim/input-schema.json#/properties", "ue": {
"title": "UE",
"rue_addr": { "oneOf": [
"title": "[Required] Remote UE address", { "$ref": "ue/lte/input-schema.json" },
"description": "[Required] Address of remote UE server. Default port is 2152.", { "$ref": "ue/nr/input-schema.json" }
"type": "string", ]
"default": ""
}, },
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
...@@ -21,25 +20,6 @@ ...@@ -21,25 +20,6 @@
"description": "Rx gain (in dB)", "description": "Rx gain (in dB)",
"type": "number" "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": { "n_antenna_dl": {
"title": "Number of DL antennas", "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.", "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 @@ ...@@ -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.", "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", "type": "number",
"default": {{ default_n_antenna_ul }} "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] [buildout]
parts = parts =
directory directory
...@@ -108,8 +101,6 @@ context = ...@@ -108,8 +101,6 @@ context =
raw default_n_antenna_ul {{ default_n_antenna_ul }} raw default_n_antenna_ul {{ default_n_antenna_ul }}
raw default_imsi {{ default_imsi }} raw default_imsi {{ default_imsi }}
raw default_k {{default_k}} raw default_k {{default_k}}
json do_lte {{ do_lte | tojson }}
json do_nr {{ do_nr | tojson }}
[lte-ue-config] [lte-ue-config]
<= config-base <= config-base
......
...@@ -104,8 +104,7 @@ recipe = slapos.cookbook:switch-softwaretype ...@@ -104,8 +104,7 @@ recipe = slapos.cookbook:switch-softwaretype
enb = dynamic-template-enb:output enb = dynamic-template-enb:output
gnb = dynamic-template-enb:output gnb = dynamic-template-enb:output
core-network = dynamic-template-core-network:output core-network = dynamic-template-core-network:output
ue-lte = dynamic-template-ue:output ue = dynamic-template-ue:output
ue-nr = dynamic-template-ue:output
RootSoftwareInstance = $${:core-network} RootSoftwareInstance = $${:core-network}
[dynamic-template-enb] [dynamic-template-enb]
...@@ -177,7 +176,7 @@ extra-context = ...@@ -177,7 +176,7 @@ extra-context =
[dynamic-template-ue] [dynamic-template-ue]
< = jinja2-template-base < = jinja2-template-base
url = ${template-ue:target} url = ${template-ue:target}
filename = instance-ue-lte.cfg filename = instance-ue.cfg
extensions = jinja2.ext.do extensions = jinja2.ext.do
extra-context = extra-context =
section slap_configuration slap-configuration section slap_configuration slap-configuration
......
...@@ -36,8 +36,7 @@ software_list = [ ...@@ -36,8 +36,7 @@ software_list = [
} }
] ]
for i in range (len(software_list)): defaults = {
software_list[i].update({
'default_lte_bandwidth' : "20 MHz", 'default_lte_bandwidth' : "20 MHz",
'default_lte_inactivity_timer' : 10000, 'default_lte_inactivity_timer' : 10000,
'default_nr_bandwidth' : 40, 'default_nr_bandwidth' : 40,
...@@ -47,13 +46,15 @@ for i in range (len(software_list)): ...@@ -47,13 +46,15 @@ for i in range (len(software_list)):
'default_nr_inactivity_timer' : 10000, 'default_nr_inactivity_timer' : 10000,
'default_imsi' : "001010123456789", 'default_imsi' : "001010123456789",
'default_k' : "00112233445566778899aabbccddeeff", 'default_k' : "00112233445566778899aabbccddeeff",
}) }
for i in range (len(software_list)):
software_list[i].update(defaults)
with open('software.cfg.json.jinja2', 'r') as f: with open('software.cfg.json.jinja2', 'r') as f:
software_json_template = Template(f.read()) software_json_template = Template(f.read())
instance_json_template_map = {} 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: with open('instance-{}-input-schema.json.jinja2'.format(software_type), 'r') as f:
instance_json_template_map[software_type] = Template(f.read()) instance_json_template_map[software_type] = Template(f.read())
...@@ -78,11 +79,20 @@ for software in software_list: ...@@ -78,11 +79,20 @@ for software in software_list:
test_template.render(**software, **global_context)) test_template.render(**software, **global_context))
emit('software-{}.cfg'.format(software['software_name']), emit('software-{}.cfg'.format(software['software_name']),
software_template.render(**software, **global_context)) 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 # no ue for ors
if software['bbu'] == 'ors' and software_type.startswith('ue-'): if software['bbu'] == 'ors' and software_type == 'ue':
continue continue
emit('instance-{}-{}-input-schema.json'.format( emit('instance-{}-{}-input-schema.json'.format(
software['software_name'], software['software_name'],
software_type), software_type),
instance_json_template_map[software_type].render(**software, **global_context)) 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(): ...@@ -123,8 +123,8 @@ def do_enb():
def do_ue(): def do_ue():
do('ue.jinja2.cfg', 'ue-lte.cfg', 'lte', {'rue_addr': 'host1'}) do('ue.jinja2.cfg', 'ue-lte.cfg', 'lte', {'ue_type': 'lte', 'rue_addr': 'host1'})
do('ue.jinja2.cfg', 'ue-nr.cfg', 'nr', {'rue_addr': 'host2'}) do('ue.jinja2.cfg', 'ue-nr.cfg', 'nr', {'ue_type': 'nr', 'rue_addr': 'host2'})
def main(): def main():
......
...@@ -4,22 +4,14 @@ ...@@ -4,22 +4,14 @@
"serialisation": "json-in-xml", "serialisation": "json-in-xml",
"software-type": { "software-type": {
"ue-lte": { "ue": {
"title": "UE-LTE", "title": "UE",
"description": "UE LTE Configuration", "description": "UE Configuration",
"software-type": "ue-lte", "software-type": "ue",
"request": "instance-any-ue-lte-input-schema.json", "request": "instance-any-ue-input-schema.json",
"response": "instance-any-ue-lte-schema.json", "response": "instance-any-ue-schema.json",
"index": 4 "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": { "enb": {
"title": "eNB", "title": "eNB",
......
...@@ -4,22 +4,14 @@ ...@@ -4,22 +4,14 @@
"serialisation": "json-in-xml", "serialisation": "json-in-xml",
"software-type": { "software-type": {
"ue-lte": { "ue": {
"title": "UE-LTE", "title": "UE",
"description": "UE LTE Configuration", "description": "UE Configuration",
"software-type": "ue-lte", "software-type": "ue",
"request": "instance-lopcomm-ue-lte-input-schema.json", "request": "instance-lopcomm-ue-input-schema.json",
"response": "instance-lopcomm-ue-lte-schema.json", "response": "instance-lopcomm-ue-schema.json",
"index": 4 "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": { "enb": {
"title": "eNB", "title": "eNB",
......
...@@ -4,22 +4,14 @@ ...@@ -4,22 +4,14 @@
"serialisation": "json-in-xml", "serialisation": "json-in-xml",
"software-type": { "software-type": {
"ue-lte": { "ue": {
"title": "UE-LTE", "title": "UE",
"description": "UE LTE Configuration", "description": "UE Configuration",
"software-type": "ue-lte", "software-type": "ue",
"request": "instance-m2ru-ue-lte-input-schema.json", "request": "instance-m2ru-ue-input-schema.json",
"response": "instance-m2ru-ue-lte-schema.json", "response": "instance-m2ru-ue-schema.json",
"index": 4 "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": { "enb": {
"title": "eNB", "title": "eNB",
......
...@@ -4,22 +4,14 @@ ...@@ -4,22 +4,14 @@
"serialisation": "json-in-xml", "serialisation": "json-in-xml",
"software-type": { "software-type": {
{% if bbu != 'ors' %} {% if bbu != 'ors' %}
"ue-lte": { "ue": {
"title": "UE-LTE", "title": "UE",
"description": "UE LTE Configuration", "description": "UE Configuration",
"software-type": "ue-lte", "software-type": "ue",
"request": "instance-{{ software_name }}-ue-lte-input-schema.json", "request": "instance-{{ software_name }}-ue-input-schema.json",
"response": "instance-{{ software_name }}-ue-lte-schema.json", "response": "instance-{{ software_name }}-ue-schema.json",
"index": 4 "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 %} {% endif %}
"enb": { "enb": {
"title": "eNB", "title": "eNB",
......
...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase): ...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase): class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase): ...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase): class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase): ...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase): class TestUELTEParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_ue_lte_conf(self): def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase): ...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase): class TestUENRParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_ue_nr_conf(self): def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase): ...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase): class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase): ...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase): class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase): ...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase): class TestUELTEParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_ue_lte_conf(self): def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase): ...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase): class TestUENRParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_ue_nr_conf(self): def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase): ...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase): class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase): ...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase): class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase): ...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase): class TestUELTEParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_ue_lte_conf(self): def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase): ...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase): class TestUENRParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_ue_nr_conf(self): def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase): ...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase): class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase): ...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase): class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase): ...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase): class TestUELTEParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_ue_lte_conf(self): def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase): ...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase): class TestUENRParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_ue_nr_conf(self): def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase): ...@@ -355,11 +355,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase): class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase): ...@@ -367,11 +367,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase): class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})} return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_monitor_gadget_url(self): def test_monitor_gadget_url(self):
test_monitor_gadget_url(self) test_monitor_gadget_url(self)
...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase): ...@@ -398,10 +398,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase): class TestUELTEParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-lte" return "ue"
def test_ue_lte_conf(self): def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase): ...@@ -426,10 +426,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase): class TestUENRParameters(ORSTestCase):
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)} return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod @classmethod
def getInstanceSoftwareType(cls): def getInstanceSoftwareType(cls):
return "ue-nr" return "ue"
def test_ue_nr_conf(self): def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join( conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0] 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