Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
slapos
Commits
2353770d
Commit
2353770d
authored
Oct 03, 2024
by
Joanne Hugé
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
software/ors: clean-up test_ors.py
parent
bd5fa85f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
217 additions
and
194 deletions
+217
-194
software/ors-amarisoft/test/test_ors.py
software/ors-amarisoft/test/test_ors.py
+217
-194
No files found.
software/ors-amarisoft/test/test_ors.py
View file @
2353770d
...
...
@@ -43,34 +43,14 @@ param_dict = {
'testing'
:
True
,
'tx_gain'
:
17
,
'rx_gain'
:
17
,
'dl_earfcn'
:
36100
,
'bandwidth'
:
"10 MHz"
,
'enb_id'
:
'0x17'
,
'pci'
:
250
,
'tac'
:
'0x1717'
,
'root_sequence_index'
:
'1'
,
'mme_list'
:
{
'10.0.0.1'
:
{
'mme_addr'
:
'10.0.0.1'
},
'2001:db8::1'
:
{
'mme_addr'
:
'2001:db8::1'
},
},
'core_network_plmn'
:
'00102'
,
'dl_nr_arfcn'
:
403500
,
'nr_band'
:
34
,
'nr_bandwidth'
:
50
,
'ssb_nr_arfcn'
:
403520
,
'rue_addr'
:
'192.168.99.88'
,
'n_antenna_dl'
:
2
,
'n_antenna_ul'
:
2
,
'inactivity_timer'
:
17
,
'gnb_id'
:
'0x17'
,
'gnb_id_bits'
:
30
,
'ssb_pos_bitmap'
:
'10'
,
'amf_list'
:
{
'10.0.0.1'
:
{
'amf_addr'
:
'10.0.0.1'
},
'2001:db8::1'
:
{
'amf_addr'
:
'2001:db8::1'
},
},
'nr_handover_time_to_trigger'
:
40
,
'nr_handover_a3_offset'
:
10
,
'ncell_list'
:
{
'ORS1'
:
{
'dl_earfcn'
:
40000
,
...
...
@@ -95,6 +75,49 @@ param_dict = {
'tac'
:
2
},
},
}
enb_param_dict
=
{
'dl_earfcn'
:
36100
,
'enb_id'
:
'0x17'
,
'bandwidth'
:
"10 MHz"
,
'plmn_list'
:
{
'00101'
:
{
'attach_without_pdn'
:
True
,
'plmn'
:
'00101'
,
'reserved'
:
True
},
'00102'
:
{
'attach_without_pdn'
:
False
,
'plmn'
:
'00102'
,
'reserved'
:
False
},
},
'tdd_ul_dl_config'
:
'[Configuration 6] 5ms 5UL 3DL (maximum uplink)'
,
'mme_list'
:
{
'10.0.0.1'
:
{
'mme_addr'
:
'10.0.0.1'
},
'2001:db8::1'
:
{
'mme_addr'
:
'2001:db8::1'
},
},
'ncell_list'
:
{
'ORS1'
:
{
'dl_earfcn'
:
40000
,
'pci'
:
1
,
'cell_id'
:
'0x0000001'
,
'tac'
:
1
},
'ORS2'
:
{
'dl_earfcn'
:
50000
,
'pci'
:
2
,
'cell_id'
:
'0x0000001'
,
'tac'
:
2
},
},
}
gnb_param_dict
=
{
'dl_nr_arfcn'
:
403500
,
'nr_band'
:
34
,
'nr_bandwidth'
:
50
,
'ssb_nr_arfcn'
:
403520
,
'gnb_id'
:
'0x17'
,
'gnb_id_bits'
:
30
,
'ssb_pos_bitmap'
:
'10'
,
'amf_list'
:
{
'10.0.0.1'
:
{
'amf_addr'
:
'10.0.0.1'
},
'2001:db8::1'
:
{
'amf_addr'
:
'2001:db8::1'
},
},
'nr_handover_time_to_trigger'
:
40
,
'nr_handover_a3_offset'
:
10
,
'xn_peers'
:
{
'2001:db8::1'
:
{
'xn_addr'
:
'2001:db8::1'
,
...
...
@@ -103,13 +126,26 @@ param_dict = {
'xn_addr'
:
'2001:db8::2'
,
},
},
}
enb_param_dict
=
{
'plmn_list'
:
{
'00101'
:
{
'attach_without_pdn'
:
True
,
'plmn'
:
'00101'
,
'reserved'
:
True
},
'00102'
:
{
'attach_without_pdn'
:
False
,
'plmn'
:
'00102'
,
'reserved'
:
False
},
'ncell_list'
:
{
'ORS1'
:
{
'dl_nr_arfcn'
:
403500
,
'ssb_nr_arfcn'
:
403500
,
'pci'
:
1
,
'nr_cell_id'
:
'0x0000001'
,
'gnb_id_bits'
:
28
,
'nr_band'
:
34
,
'tac'
:
1
},
'ORS2'
:
{
'dl_nr_arfcn'
:
519000
,
'ssb_nr_arfcn'
:
519000
,
'pci'
:
2
,
'nr_cell_id'
:
'0x0000002'
,
'gnb_id_bits'
:
30
,
'nr_band'
:
38
,
'tac'
:
2
},
},
'tdd_ul_dl_config'
:
'[Configuration 6] 5ms 5UL 3DL (maximum uplink)'
,
}
gnb_param_dict1
=
{
'plmn_list'
:
{
...
...
@@ -126,15 +162,27 @@ gnb_param_dict2 = {
'tdd_ul_dl_config'
:
'5ms 6UL 3DL 10/2 (high uplink)'
,
}
enb_param_dict
.
update
(
param_dict
)
gnb_param_dict1
.
update
(
gnb_param_dict
)
gnb_param_dict1
.
update
(
param_dict
)
gnb_param_dict2
.
update
(
gnb_param_dict
)
gnb_param_dict2
.
update
(
param_dict
)
def
test_enb_conf
(
self
):
def
load_yaml_conf
(
slap
,
name
):
conf_file
=
glob
.
glob
(
os
.
path
.
join
(
self
.
slap
.
instance_directory
,
'*'
,
'etc'
,
'enb.cfg'
))[
0
]
slap
.
instance_directory
,
'*'
,
'etc'
,
name
+
'.cfg'
))[
0
]
return
yamlpp_load
(
conf_file
)
class
TestENBParameters
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
enb_param_dict
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"enb"
def
test_enb_conf
(
self
):
conf
=
load_yaml_conf
(
self
.
slap
,
'enb'
)
conf
=
yamlpp_load
(
conf_file
)
self
.
assertEqual
(
conf
[
'tx_gain'
],
[
enb_param_dict
[
'tx_gain'
]]
*
enb_param_dict
[
'n_antenna_dl'
])
self
.
assertEqual
(
conf
[
'rx_gain'
],
[
enb_param_dict
[
'rx_gain'
]]
*
enb_param_dict
[
'n_antenna_ul'
])
self
.
assertEqual
(
conf
[
'cell_list'
][
0
][
'inactivity_timer'
],
enb_param_dict
[
'inactivity_timer'
])
...
...
@@ -162,12 +210,18 @@ def test_enb_conf(self):
self
.
assertEqual
(
p
[
'cell_id'
],
int
(
conf_ncell
[
'cell_id'
],
16
))
self
.
assertEqual
(
p
[
'tac'
],
conf_ncell
[
'tac'
])
def
test_gnb_conf1
(
self
):
conf_file
=
glob
.
glob
(
os
.
path
.
join
(
self
.
slap
.
instance_directory
,
'*'
,
'etc'
,
'enb.cfg'
))[
0
]
class
TestGNBParameters1
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
gnb_param_dict1
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"gnb"
def
test_gnb_conf
(
self
):
conf
=
load_yaml_conf
(
self
.
slap
,
'enb'
)
conf
=
yamlpp_load
(
conf_file
)
self
.
assertEqual
(
conf
[
'tx_gain'
],
[
gnb_param_dict1
[
'tx_gain'
]]
*
gnb_param_dict1
[
'n_antenna_dl'
])
self
.
assertEqual
(
conf
[
'rx_gain'
],
[
gnb_param_dict1
[
'rx_gain'
]]
*
gnb_param_dict1
[
'n_antenna_ul'
])
self
.
assertEqual
(
conf
[
'nr_cell_list'
][
0
][
'inactivity_timer'
],
gnb_param_dict1
[
'inactivity_timer'
])
...
...
@@ -205,12 +259,17 @@ def test_gnb_conf1(self):
self
.
assertEqual
(
int
(
tdd_config
[
'ul_slots'
]),
1
)
self
.
assertEqual
(
int
(
tdd_config
[
'ul_symbols'
]),
2
)
def
test_gnb_conf2
(
self
):
conf_file
=
glob
.
glob
(
os
.
path
.
join
(
self
.
slap
.
instance_directory
,
'*'
,
'etc'
,
'enb.cfg'
))[
0
]
class
TestGNBParameters2
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
gnb_param_dict2
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"gnb"
def
test_gnb_conf
(
self
):
conf
=
yamlpp_load
(
conf_file
)
conf
=
load_yaml_conf
(
self
.
slap
,
'enb'
)
for
p
in
conf
[
'nr_cell_default'
][
'plmn_list'
][
0
][
'nssai'
]:
sd
=
hex
(
p
[
'sd'
])
...
...
@@ -224,55 +283,19 @@ def test_gnb_conf2(self):
self
.
assertEqual
(
int
(
tdd_config
[
'ul_slots'
]),
6
)
self
.
assertEqual
(
int
(
tdd_config
[
'ul_symbols'
]),
10
)
def
test_mme_conf
(
self
):
conf_file
=
glob
.
glob
(
os
.
path
.
join
(
self
.
slap
.
instance_directory
,
'*'
,
'etc'
,
'mme.cfg'
))[
0
]
conf
=
yamlpp_load
(
conf_file
)
self
.
assertEqual
(
conf
[
'plmn'
],
param_dict
[
'core_network_plmn'
])
def
getSimParam
(
id
=
0
):
return
{
'sim_algo'
:
'milenage'
,
'imsi'
:
'{0:015}'
.
format
(
1010000000000
+
id
),
'opc'
:
'000102030405060708090A0B0C0D0E0F'
,
'amf'
:
'0x9001'
,
'sqn'
:
'000000000000'
,
'k'
:
'00112233445566778899AABBCCDDEEFF'
,
'impu'
:
'impu%s'
%
'{0:03}'
.
format
(
id
),
'impi'
:
'impi%s@amarisoft.com'
%
'{0:03}'
.
format
(
id
)
}
def
test_sim_card
(
self
,
nb_sim_cards
,
fixed_ips
,
tun_network
):
conf_file
=
glob
.
glob
(
os
.
path
.
join
(
self
.
slap
.
instance_directory
,
'*'
,
'etc'
,
'ue_db.cfg'
))[
0
]
conf
=
yamlpp_load
(
conf_file
)
first_ip
=
netaddr
.
IPAddress
(
tun_network
.
first
)
for
i
in
range
(
nb_sim_cards
):
params
=
getSimParam
(
i
)
for
n
in
"sim_algo imsi opc sqn impu impi"
.
split
():
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
n
],
params
[
n
],
"%s doesn't match"
%
n
)
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'K'
],
params
[
'k'
])
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'amf'
],
int
(
params
[
'amf'
],
16
))
class
TestCoreNetworkParameters
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
param_dict
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"core-network"
def
test_mme_conf
(
self
):
p
=
self
.
requestSlaveInstanceWithId
(
i
).
getConnectionParameterDict
()
p
=
json
.
loads
(
p
[
'_'
])
self
.
assertIn
(
'info'
,
p
)
if
fixed_ips
:
self
.
assertIn
(
'ipv4'
,
p
)
if
nb_sim_cards
+
2
>
tun_network
.
size
:
self
.
assertEqual
(
p
[
'ipv4'
],
"Too many SIM for the IPv4 network"
)
else
:
ip
=
str
(
first_ip
+
2
+
i
)
self
.
assertEqual
(
p
[
'ipv4'
],
ip
)
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'pdn_list'
][
0
][
'access_point_name'
],
"internet"
)
self
.
assertTrue
(
conf
[
'ue_db'
][
i
][
'pdn_list'
][
0
][
'default'
])
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'pdn_list'
][
0
][
'ipv4_addr'
],
ip
)
conf
=
load_yaml_conf
(
self
.
slap
,
'mme'
)
self
.
assertEqual
(
conf
[
'plmn'
],
param_dict
[
'core_network_plmn'
])
def
test_monitor_gadget_url
(
self
):
parameters
=
json
.
loads
(
self
.
computer_partition
.
getConnectionParameterDict
()[
'_'
])
...
...
@@ -291,45 +314,6 @@ def test_monitor_gadget_url(self):
self
.
assertIn
(
'<script src="g-chart.line.js"></script>'
,
response
.
text
)
self
.
assertIn
(
'<script src="promise.gadget.js"></script>'
,
response
.
text
)
class
TestENBParameters
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
enb_param_dict
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"enb"
def
test_enb_conf
(
self
):
test_enb_conf
(
self
)
class
TestGNBParameters1
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
gnb_param_dict1
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"gnb"
def
test_gnb_conf
(
self
):
test_gnb_conf1
(
self
)
class
TestGNBParameters2
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
gnb_param_dict2
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"gnb"
def
test_gnb_conf
(
self
):
test_gnb_conf2
(
self
)
class
TestCoreNetworkParameters
(
ORSTestCase
):
@
classmethod
def
getInstanceParameterDict
(
cls
):
return
{
'_'
:
json
.
dumps
(
param_dict
)}
@
classmethod
def
getInstanceSoftwareType
(
cls
):
return
"core-network"
def
test_mme_conf
(
self
):
test_mme_conf
(
self
)
class
TestENBMonitorGadgetUrl
(
ORSTestCase
):
@
classmethod
...
...
@@ -371,6 +355,20 @@ class TestSimCard(ORSTestCase):
nb_sim_cards
=
1
fixed_ips
=
False
tun_network
=
netaddr
.
IPNetwork
(
'192.168.10.0/24'
)
@
classmethod
def
getSimParam
(
cls
,
id
=
0
):
return
{
'sim_algo'
:
'milenage'
,
'imsi'
:
'{0:015}'
.
format
(
1010000000000
+
id
),
'opc'
:
'000102030405060708090A0B0C0D0E0F'
,
'amf'
:
'0x9001'
,
'sqn'
:
'000000000000'
,
'k'
:
'00112233445566778899AABBCCDDEEFF'
,
'impu'
:
'impu%s'
%
'{0:03}'
.
format
(
id
),
'impi'
:
'impi%s@amarisoft.com'
%
'{0:03}'
.
format
(
id
)
}
@
classmethod
def
requestDefaultInstance
(
cls
,
state
=
'started'
):
...
...
@@ -396,7 +394,7 @@ class TestSimCard(ORSTestCase):
@
classmethod
def
requestSlaveInstanceWithId
(
cls
,
id
=
0
):
software_url
=
cls
.
getSoftwareURL
()
param_dict
=
getSimParam
(
id
)
param_dict
=
cls
.
getSimParam
(
id
)
return
cls
.
slap
.
request
(
software_release
=
software_url
,
partition_reference
=
"SIM-CARD-%s"
%
id
,
...
...
@@ -414,8 +412,33 @@ class TestSimCard(ORSTestCase):
f
.
seek
(
0
)
f
.
truncate
()
json
.
dump
(
resource
,
f
,
indent
=
2
)
def
test_sim_card
(
cls
):
test_sim_card
(
cls
,
cls
.
nb_sim_cards
,
cls
.
fixed_ips
,
cls
.
tun_network
)
def
test_sim_card
(
self
):
conf
=
load_yaml_conf
(
self
.
slap
,
'ue_db'
)
first_ip
=
netaddr
.
IPAddress
(
self
.
tun_network
.
first
)
for
i
in
range
(
self
.
nb_sim_cards
):
params
=
self
.
getSimParam
(
i
)
for
n
in
"sim_algo imsi opc sqn impu impi"
.
split
():
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
n
],
params
[
n
],
"%s doesn't match"
%
n
)
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'K'
],
params
[
'k'
])
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'amf'
],
int
(
params
[
'amf'
],
16
))
p
=
self
.
requestSlaveInstanceWithId
(
i
).
getConnectionParameterDict
()
p
=
json
.
loads
(
p
[
'_'
])
self
.
assertIn
(
'info'
,
p
)
if
self
.
fixed_ips
:
self
.
assertIn
(
'ipv4'
,
p
)
if
self
.
nb_sim_cards
+
2
>
self
.
tun_network
.
size
:
self
.
assertEqual
(
p
[
'ipv4'
],
"Too many SIM for the IPv4 network"
)
else
:
ip
=
str
(
first_ip
+
2
+
i
)
self
.
assertEqual
(
p
[
'ipv4'
],
ip
)
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'pdn_list'
][
0
][
'access_point_name'
],
"internet"
)
self
.
assertTrue
(
conf
[
'ue_db'
][
i
][
'pdn_list'
][
0
][
'default'
])
self
.
assertEqual
(
conf
[
'ue_db'
][
i
][
'pdn_list'
][
0
][
'ipv4_addr'
],
ip
)
class
TestSimCardManySim
(
TestSimCard
):
nb_sim_cards
=
10
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment