335 lines
6.5 KiB
Plaintext
335 lines
6.5 KiB
Plaintext
|
|
* Data processing can be understood as operations on sets (link:https://duckduckgo.com/?q=Venn+diagram[Venn diagram])
|
|
|
|
----
|
|
$ src/osmo-gsm-tester.py "$TRIAL_JOB_DIR" -s 4g:srsenb-rftype@zmq+srsue-rftype@zmq+mod-enb-nprb@6 -t ping.py
|
|
----
|
|
|
|
|
|
|
|
* First Suite and scenarios dictionaries ('resources', 'modifiers', 'config') are combined (set union operation):
|
|
|
|
[cols="1,5a,5a,10a,10a"]
|
|
.Manual replica of 'suite.py resource_requirements()' and 'resource_modifiers()' methods
|
|
|===
|
|
|File|original|after 'times' replication|python syntax|combined
|
|
|
|
|4g
|
|
|
|
|
----
|
|
run_node:
|
|
- times: 1
|
|
enb:
|
|
- times: 1
|
|
type: srsenb
|
|
modem:
|
|
- times: 2
|
|
type: srsue
|
|
----
|
|
|
|
|
----
|
|
run_node:
|
|
- {}
|
|
enb:
|
|
- type: srsenb
|
|
modem:
|
|
- type: srsue
|
|
- type: srsue
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{}],
|
|
'enb': [{'type': 'srsenb'}],
|
|
'modem': [{'type: 'srsue'},
|
|
{'type: 'srsue'}]
|
|
}
|
|
'modifiers': {}
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{}],
|
|
'enb': [{'type': 'srsenb'}],
|
|
'modem': [{'type': 'srsue'},
|
|
{'type': 'srsue'}]
|
|
|
|
}
|
|
'modifiers': {}
|
|
----
|
|
|srsenb-rftype@zmq
|
|
|
|
|
----
|
|
resources:
|
|
enb:
|
|
- type: srsenb
|
|
rf_dev_type: zmq
|
|
----
|
|
|
|
|
----
|
|
resources:
|
|
enb:
|
|
- type: srsenb
|
|
rf_dev_type: zmq
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'enb': [{'type': 'srsenb',
|
|
'rf_dev_type': 'zmq'}]
|
|
}
|
|
'modifiers': {}
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{}],
|
|
'enb': [{'type': 'srsenb',
|
|
'rf_dev_type': 'zmq'}],
|
|
'modem': [{'type': 'srsue'},
|
|
{'type': 'srsue'}]
|
|
}
|
|
'modifiers': {}
|
|
----
|
|
|srsue-rftype@zmq
|
|
|
|
|
----
|
|
resources:
|
|
modem:
|
|
- type: srsue
|
|
rf_dev_type: zmq
|
|
times: 1
|
|
----
|
|
|
|
|
----
|
|
resources:
|
|
modem:
|
|
- type: srsue
|
|
rf_dev_type: zmq
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'modem': [{'type': 'srsue',
|
|
'rf_dev_type': 'zmq'}]
|
|
}
|
|
'modifiers': {}
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{}],
|
|
'enb': [{'type': 'srsenb',
|
|
'rf_dev_type': 'zmq'}],
|
|
'modem': [{'type': 'srsue',
|
|
'rf_dev_type': 'zmq'},
|
|
{'type': 'srsue'}]
|
|
}
|
|
'modifiers': {}
|
|
----
|
|
|mod-enb-nprb@6
|
|
|
|
|
----
|
|
modifiers:
|
|
enb:
|
|
- num_prb: 6
|
|
times: 1
|
|
----
|
|
|
|
|
----
|
|
modifiers:
|
|
enb:
|
|
- num_prb: 6
|
|
----
|
|
|
|
|
----
|
|
'resources': {}
|
|
'modifiers': {
|
|
'enb': [{'num_prb': 6}]
|
|
}
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{}],
|
|
'enb': [{'type': 'srsenb',
|
|
'rf_dev_type': 'zmq'}],
|
|
'modem': [{'type': 'srsue',
|
|
'rf_dev_type': 'zmq'},
|
|
{'type': 'srsue'}]
|
|
}
|
|
'modifiers': {
|
|
'enb': [{'num_prb': 6}]
|
|
}
|
|
----
|
|
|===
|
|
|
|
* Second, the resulting 'resources' set is used to match a set of resources from 'resources.list' in order to allocate them (intersection of sets):
|
|
|
|
[cols="5a,5a,10a"]
|
|
.Manual replica of 'resource.py reserve()' method
|
|
|===
|
|
|resources.conf|'resources' filters|matched
|
|
|
|
|
|
|
----
|
|
run_node:
|
|
- run_type: ssh
|
|
run_addr: 10.12.1.195
|
|
ssh_user: jenkins
|
|
ssh_addr: 10.12.1.195
|
|
|
|
enb:
|
|
- label: srsENB-zmq
|
|
type: srsenb
|
|
rf_dev_type: zmq
|
|
remote_user: jenkins
|
|
addr: 10.12.1.206
|
|
|
|
- label: srsENB-B200
|
|
type: srsenb
|
|
rf_dev_type: uhd
|
|
rf_dev_args: "type=b200,serial=317B9FE"
|
|
remote_user: jenkins
|
|
addr: 10.12.1.206
|
|
|
|
modem:
|
|
- label: srsUE-zmq_1
|
|
type: srsue
|
|
rf_dev_type: zmq
|
|
remote_user: jenkins
|
|
addr: 10.12.1.195
|
|
imsi: '001010123456789'
|
|
ki: '001123'
|
|
|
|
- label: srsUE-zq_2
|
|
type: srsue
|
|
rf_dev_type: zmq
|
|
remote_user: jenkins
|
|
addr: 10.12.1.180
|
|
imsi: '001010123456781'
|
|
ki: '001124'
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{}],
|
|
'enb': [{'type': 'srsenb',
|
|
'rf_dev_type': 'zmq'}],
|
|
'modem': [
|
|
{'type': 'srsue',
|
|
'rf_dev_type': 'zmq'},
|
|
{'type': 'srsue'}
|
|
]
|
|
}
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{'run_type': 'ssh',
|
|
'run_addr': '10.12.1.195',
|
|
'ssh_user': 'jenkins',
|
|
'ssh_addr': '10.12.1.195'}],
|
|
'enb': [{'label': 'srsENB-zmq',
|
|
'type': 'srsenb',
|
|
'rf_dev_type': 'zmq',
|
|
'remote_user': 'jenkins',
|
|
'addr': 10.12.1.206}],
|
|
'modem': [
|
|
{'label': 'srsUE-zmq_1',
|
|
'type': 'srsue',
|
|
'remote_user': jenkins,
|
|
'addr': '10.12.1.195',
|
|
'imsi': '001010123456789'
|
|
'ki': '001123',
|
|
'rf_dev_type': 'zmq'},
|
|
{'label': 'srsUE-zmq_2',
|
|
'type': 'srsue',
|
|
'remote_user': jenkins,
|
|
'addr': '10.12.1.180',
|
|
'imsi': '001010123456781'
|
|
'ki': '001124'}
|
|
]
|
|
}
|
|
----
|
|
|===
|
|
|
|
* Finally, modifiers are applied on top of the combined configuration before
|
|
being passed to the python class managing it:
|
|
|
|
[cols="5a,5a,10a"]
|
|
.Also done by 'resource.py reserve()' method after matching resources
|
|
|===
|
|
|Matched resources|modifiers|Result
|
|
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{'run_type': 'ssh',
|
|
'run_addr': '10.12.1.195',
|
|
'ssh_user': 'jenkins',
|
|
'ssh_addr': '10.12.1.195'}],
|
|
'enb': [{'label': 'srsENB-zmq',
|
|
'type': 'srsenb',
|
|
'rf_dev_type': 'zmq',
|
|
'remote_user': 'jenkins',
|
|
'addr': 10.12.1.206}],
|
|
'modem': [
|
|
{'label': 'srsUE-zmq_1',
|
|
'type': 'srsue',
|
|
'remote_user': jenkins,
|
|
'addr': '10.12.1.195',
|
|
'imsi': '001010123456789'
|
|
'ki': '001123',
|
|
'rf_dev_type': 'zmq'},
|
|
{'label': 'srsUE-zmq_2',
|
|
'type': 'srsue',
|
|
'remote_user': jenkins,
|
|
'addr': '10.12.1.180',
|
|
'imsi': '001010123456781'
|
|
'ki': '001124'}
|
|
]
|
|
}
|
|
----
|
|
|
|
|
----
|
|
'modifiers': {
|
|
'enb': [{'num_prb': 6}]
|
|
}
|
|
----
|
|
|
|
|
----
|
|
'resources': {
|
|
'run_node': [{'run_type': 'ssh',
|
|
'run_addr': '10.12.1.195',
|
|
'ssh_user': 'jenkins',
|
|
'ssh_addr': '10.12.1.195'}],
|
|
'enb': [{'label': 'srsENB-zmq',
|
|
'type': 'srsenb',
|
|
'rf_dev_type': 'zmq',
|
|
'remote_user': 'jenkins',
|
|
'addr': '10.12.1.206',
|
|
'num_prb': 6}],
|
|
'modem': [
|
|
{'label': 'srsUE-zmq_1',
|
|
'type': 'srsue',
|
|
'remote_user': jenkins,
|
|
'addr': 10.12.1.195,
|
|
'imsi': '001010123456789'
|
|
'ki': '001123',
|
|
'rf_dev_type': 'zmq'},
|
|
{'label': 'srsUE-zmq_2',
|
|
'type': 'srsue',
|
|
'remote_user': jenkins,
|
|
'addr': 10.12.1.180,
|
|
'imsi': '001010123456781'
|
|
'ki': '001124'}
|
|
]
|
|
}
|
|
----
|
|
|===
|
|
|
|
WARNING: Right now algorithms based on lists of scalar/simple types being
|
|
unordered vs complex types (dictionaries, list) being ordered. Other ways can be
|
|
supported by explicitly using 'set' type from yaml in lists of scalars.
|