Two implementations are provided:
* Amarisoft Ctrl interface (websocket)
* Mini-Circuits Programmable Attenuator (HW, HTTP API) [1]
in Amarisoft ENBs, if no rfemu is configured explicitly, the Ctrl
interface one is used by default, while still being possible to use the
HW one.
[1] https://www.minicircuits.com/pdfs/RC4DAT-6G-60.pdf
Change-Id: Ie98a3fb9bcd2b87b96ecbb5b79e0f53981892a32
Recent commit changed the import line so it runs only when required, but
added a typo making tests uing it fail.
Change-Id: Id3e5c16adc763a9b79cc464937c541abd15f98de
Fixes: 2b959580b9
This way we don't need to manually add new imports here or drop unusued
ones. It also makes sure local imports in all our py files is correct.
For instance, running the script already caught an issue which is added
to this patch (osmo_ms_driver/__main__.py).
This new version of the script also allows specifying subsets of
features to skip when checking for dependencies. This way, for instance
somebody not willing to use a sispm powersupply can stil check all the
needed dependencies are fine.
This new tool will make it easier to slowly make some dependencies only
used by some object test classes optional (for instance, python-smpplib
if user doesn't want to run an ESME node).
It also allows to retrieve the required debian/manually installed
packages when run with "-p" option:
"""
Debian packages:
libpython3.5-minimal:amd64
python3-gi
python3-six
libpython3.5-stdlib:amd64
python3-pygments
python3-yaml
python3-mako
python3-numpy
python3-markupsafe
Modules without debian package (pip or setuptools?):
usb [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/usb/_interop.py]
pydbus [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/pydbus/proxy.py]
smpplib [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/smpplib/command_codes.py]
sispm [dpkg-query: no path found matching pattern /usr/local/lib/python3.5/dist-packages/sispm/__init__.py]
"""
Change-Id: I29ddf8971837754abd930d847bd1036e8e510de6
This way we avoid unconditionally importing all subclass dependencies,
and make them optional based on whether the setup has devices of that
type or not.
Change-Id: I0d2f8b26364b45f0d837cc51078784d1d0fa7ea1
this allows to optionally specify a the GTP bind_address for a enb object
in the resources.conf
this address is then used for binding the listening socket for gtp connections
which, in turn, allows to run the enb and epc on the same host.
when gtp_bind_addr is not specified, addr is used by default
this is especially useful if eNB and EPC run on the same host
and ZMQ is used for RF between eNB and UE. Two eNB addresses
are needed in this case, one bind address and one "remote-accessable"
address for the UEs ZMQ radio to connect to
Change-Id: I4fe38f31401428ed3e74e1d0b64960f0af122d37
Some older iperf3 versions don't support the --logfile arg. Let's
instead parse the json from stdout. Old --logfile behavior is left in
code but disabled since it's a nicer (less hacky) way to get results,
because parsing from stdout means we need to avoid reading some content.
Change-Id: Ia1b7fa4dae074089878963aeddf0006aea68e31f
For some reason these classes were still not inheriting from the base
class (probably because it was added after they existed) and they
started failing after recent changes which presumed they where already
inheriting.
Change-Id: I88217baf490ec45373d0743585377ed2639a8cfd
Use the ifup script to set up the netns + configure the tun device
created by lteue. Use it also as a hook to know when the UE is attached.
Since tun setup is done by arch-optimized lte-avx(2) binaries, we also
need to give capabilitites to them (instead of allowing inheritance of
caps in general in the setcap script).
Change-Id: I1e228b1296eac8e4cb183c2faa735b0468abe124
Commit 12ae6d79a5 switched the rf_dev_type
to be in lowercase but forgot to change these conditions.
Change-Id: I91d3877381b4e6343dc4aa0465e699341ed6648d
the Amarisoft UE seems to be only working with UHD when the bandwidth
param is provided. It seems the set_bandwidth() API is used.
Change-Id: I3f20a5a8ca80c63374f0ad500fd2794e2dc45479
this commit adds basic support for configuring measurements in the
eNB config. It currently support A1, A2, and A3 events.
By default UE measurements are turned off and need to be enabled by
configuring an event with:
+mod-enb-meas-event@{name},{report_type},{value},{hysterisis},{time to trigger}
For example one can update the a2 and a3 event with:
+mod-enb-meas-event@a2,rsrq,-40,2,480+mod-enb-meas-event@a3,rsrp,6,1,512
Change-Id: Ia7657be2396886840570bc41645450a268b4cfff
the num_carriers is parsed as a string in the conf dict and therefore
needs to converted to int before matching
also changed the num_carriers to be of type UINT
Change-Id: I1386812d32e1181ba666720bbb875bf9bbce0f51
the num_cells modifier allows to create multiple cells in a single enb
both cells are by default configured for CA
Change-Id: Ie9f16ce06ee56002c01097f2d338278f09ea4337
This allows selecting modem by supported network type. It will allow
using 4G modems with type different than srsue in 4g suite in the future.
Change-Id: I38bcf6abf789f52c3ed0bee7911567fa872e2491
comma character ',' is used in the command line to split between
parameters, which means a parameter value itself couldn't contain it.
This commit allows passing a comma inside a character value by escaping
it with '\,'.
Change-Id: Ic0bd9a029137a59e8c4a32b807eba7a64fcfa51f
Older versions of srsLTe.git required passing UHD in caps to the conf
file, but that's not the case anymore. Let's use lowcase then.
Change-Id: If8a289ba110229d31b62b0d3adc1ae97324e6d27
the time is passed as a string param and is then converted
into seconds when literals "h" or "m" are found.
So it would accept 2m and would convert it to 120s, for example.
Example:
+cfg-iperf3-time@15+
Change-Id: Iff28816f83670751e9e91de31ec59b1b0ad8fc0d
* Since license_server_addr logic is generic among all amarisoft
software, let's move it to its own config category "amarisoft", which
all amarisoft classes (amarisoft_{enb,epc}.py as of now) will import
during configure().
* The license server is disabled by default (value 0.0.0.0) since the
usual case is to have a license in the local system.
* the license server can be enabled using scenario
cfg-amarisoft-license@A.B.C.D where A.B.C.D is the address to use.
Change-Id: Id5456ad9497e91370857b80ff9a389111d3611ff
* A new abstract generic base class EPC is created
* srsEPC and AmarisoftEPC inherit from that class
* options are loaded from defaults.conf in cascade. First generic "epc",
afterwards the specific enb type.
* A new scenario is added to select the EPC type to use. srsEPC is the
default unless stated by an scenario.
* AmarisoftEPC delegates setup of the tun IP address to an "ifup"
script. As a result, since we run without root permissions (ony with
CAP_NET_ADMIN), the ifup script itself is unablet o set the IP
address. To solve this, we introduce a new osmo-gsm-tester helper
script which must be installed in the slave node which can be called
through sudo to increase privileges to do so.
With this commit, I can already get srsUE<->amarisoftENB<->amarisoftEPC
to pass ping and iperf3 4g tests.
Change-Id: Ia50ea6a74b63b2d688c8d683aea11416ad40a6d3
* object class expects the amarisoft software to be placed in directory
provided by env var AMARISOFT_PATH_ENB. On local runs, it will run the
software from there. On remote runs it will copy over that directory to
the slave.
* Configuration provided works with 6 PRBs, but probably won't work for
other values (yet).
* ZMQ support not yet available, only UHD.
One can select the Amarisoft ENB by declaring it in resources.conf:
"""
- label: AmarisoftENB-B200
type: amarisoftenb
rf_dev_type: uhd
rf_dev_args: "type=b200,serial=317B9FE,recv_frame_size=9232,send_frame_size=9232"
remote_user: jenkins
addr: 10.12.1.206
"""
And running:
"""
$ export AMARISOFT_PATH_ENB=/path/to/binaries
$ osmo-gsm-tester.py ... -s 4g:amarisoftenb-rftype@uhd+srsue-rftype@UHD+mod-enb-nprb@6 -t ping
"""
Change-Id: I1ddf4962ea6438ad977382ab201b724028ca46b3
In order for the console trace to work over SSH this commit
switches to use the default RemoteProcess class. Note that srsENB
now correctly handles the SIGHUP signal.
Change-Id: I26391eb8409e14b34987e0b338e10613fa157e06
this is needed to support the upcoming multi-cell feature in srsENB.
It's required for carrier aggregation (CA) but can also
be used for (currently) two independent 4G cells.
This commit adds baseline support for the parameter. Upcoming
commits will add hooks to configure the cell's EARFCN, etc.
Change-Id: I6d1658bf820163aee03b64b0f4ac68046c243f37
this allows to specify a fixed APN address for each subscriber in the
HLR. If the param is not provided in the resources config, the default
allocation type is used, which is to dynamically allocate an IP in the
supported range.
Change-Id: Ie6fcd7987dc7bc62a686bee3a10c67e3dd813419
running with RemoteProcessFixIgnoreSIGHUP was needed bc
srsUE used to ignore SIGHUP that is delivered to the process
when the SSH session is terminated causing the UE to not
quit properly. This isn't the case anymore so we can use
RemoteProcess for spawning the UE.
Furthermore, the wrapper script didn't pass along stdin
to it's child process, i.e., srsUE. Therefore the console
trace can't be seen if the run through the wrapper.
Change-Id: Iab4dafc58167620362a36ec9e904b8d49a7d5fc1
this enables the console trace which is printed to stdout
and provides human readable radio statistics
Change-Id: If1c998aff1c5c11d3fa636fb60cb4991e0def768
Take the change to fix several small things and support recording pcap
in srsENB.
pcap generation can be enabled with scenario cfg-srs-enable-pcap.
Change-Id: Ia096a9be7efb2123f95115c751e2402fb4fec935
Those two BTS backends never had their own MS Power Control Loop, so
they should be using the "osmo" common one. This wrong value "dsp" used
to be accepted for no good reason, but it's no longer the case. Let's
remove the line to let the backend take the default one (osmo).
Change-Id: I842fce2b8185c53d1684747afcfc3ae8fba1afee
This way we have all known config file names in one place, in the module
containing the implementation to retrieve them
(config.read_config_file()).
Change-Id: I8304dda70268b16dbc316af882fecdbf20ac25ec
WARNING: Invalid PRACH configuration - prach=(2, 8) does not fit into the eNB PRBs=(0, 6).
Consider changing the "prach_freq_offset" value to 0 in the sib.conf file when using 6 PRBs.
Change-Id: Ie4374faca62a4d0289f78674eadec7eb5d045dfd
New version of srsEPC improved the information logged during S1 setup
request, which we use to wait for the ENB to be connected.
Change-Id: Ia2338e3161c66ef7c1ab50b024a70de661edc780
Latest ENB config file grammar changed and needs to be updated to work
with next versions of srsENB.
Change-Id: I84db30dc57ea9e0b05208fa86d88d42d492b237f
Otherwise processes run eventually as root (due to being run on another
netns) may change its permissions and other processes later will fail to
write to it (Permission Denied).
Change-Id: Ide092db082937be7c2fb16d60e099c85dc1941b7
Otherwise junit parser in jenkins fails:
org.dom4j.DocumentException: Error on line 20231 of document : An invalid XML character (Unicode: 0x1b) was found in the element content of the document.
Fixes: 5bbdab8d95
Change-Id: Ia629e43bba01e50fd718c16404a7796d4f4e3713
The idea is to have something similar to systemd template unit files:
https://fedoramagazine.org/systemd-template-unit-files/
Specially for modifiers, one finds the situation where same scenario structure
has to be created with lots of different values.
For instance, let's say we want to test with different eNodeB num_prb values:
[6, 15, 25, 50, 75,100]
Right now we'd need to create one scenario file for each of them, for instance:
mod-enb-nprb6.conf
mod-enb-nprb15.conf
mod-enb-nprb25.conf
mod-enb-nprb50.conf
mod-enb-nprb75.conf
mod-enb-nprb100.conf
And each of them containing something like (changing the num_prb value):
"""
modifiers:
enb:
- num_prb: 75
"""
Instead, we can now have one unique file mod-enb-nprb@.conf:
"""
modifiers:
enb:
- num_prb: ${param1}
"""
The general syntax is: "scenario-name@param1,param2,param3".
So "@" splits between scenario name and parameter list, and "," splits
between parameters.
For instance, one can now run following suite with scenario:
"4g:srsenb-rftype-uhd+srsue-rftype-uhd+mod-enb-nprb@75"
Related: OS#4424
Change-Id: Icfcba15b937225aa4b1f322a8005fcd57db1d1ca
Already existing script osmo-gsm-tester_netns_setup.sh is modified to
support only creating the entns without moving an iface to it.
Change-Id: I1b7e186b0146f932fe37fbea68e4dfa3120b7a74
Before this patch, only virtual RF through ZeroMQ was supported.
This patch allows configuring srsUE and srsENB to use a real SDR with
UHD/SoapySDR backend connected through a physical RF network, while
still keeping compatibility to run on virtual RF ZeroMQ network, based
on the resources used (controlled by scenarios). For instance, one can
first run a suite through the phyisical RF (using 2 UHD-controlled SDRs)
and afterwards with ZeroMQ using the following default-suites.conf:
- 4g:srsenb-rftype-uhd+srsue-rftype-uhd
- 4g:srsenb-rftype-zmq+srsue-rftype-zmq
Change-Id: I7dbbe328f4c0225fe74e878bb2da13fe39ccf049