We are using the "autobind" feature of Linux to get a special
socket address. This allows us to have roughly 2^20 clients on
the system.
Change-Id: Ie9b9ac6267f40345baf7dbb3becaecf264a5df5f
Avoid being stuck in c7 state and use the c7-any-timeout with a low
value. Do not attempt to store SMS in the home directory (if they
are received).
Change-Id: I4bb59130a04852bc43af9ef3602b129f40e9e170
This way it can easily be spotted which port is being triggered in case
someone wants to manually test it.
Change-Id: Ibd2c70170d97a786e37b6838b1ed6d4eb637ad8b
Some tests may want to reproduce some scenarios in which it is expected
that a BTS process is stopped, for instance if the BSC link is dropped.
Provide a keepalive parameter to start() for bts and pcu objects to
inform suite that failures are expected and that it should keep them
alive in case that ocurrs by respawning the BTS process.
Change-Id: Ia2a7539f9fad457125ac9b60a52a52999e885ba8
As it's quite complex to build osmocom firmware nowadays (a specific old
release of gcc and binutils are required to build it), instead download
the already built binaries from OBS.
Change-Id: I2571268d91e2430a270e51438608e7dbd121e76d
Some tests may want to start/stop/manages processes themselves. By using
the process module from osmo-gsm-tester, we make that possible easily,
providing with useful features such as requesting a suite to stop it on
cleanup.
Change-Id: I8e018107cbec81299ec2228bfff933fb3b0bb6cd
This is a preparation for inclusion of osmocom-bb build job, which
installs binaries such as osmocon in sbin.
Change-Id: I562721af82e481e926ee65dbcd9dcc5b55057ae8
This way scripts making use only of have_repo (to have build specific
insturctions) can still benefit from that code.
Change-Id: I03149942ac1d279a15c71df3eb880c331c8fc155
Since sys.path is modified idynamically to load modules from "lib" subdir of each suite, from python env point of view all those modules share a namespace. As a result, there can be name collisions.
If a name collision appears (eg test1 loads "testlib.py" and test2
afterwards also loads its own "testlib.py"), then python interpreter
thinks the testlib.py module is already loaded, so test2 ends up using
"testlib.py" from test1.
The way to solve this is to make suite local
modules to live only through the scope of the suite, and unload the
modules once the suite is finished.
Change-Id: I4efe815f85bc4ec2ca91aa9c2d3a369048f21571
Two different test suites are created since we want to run them with
different HW, because some HW support one type of PDCH channels, and
other HW supports the other one.
Change-Id: Id5e61eaff39ac7a6585dc7de2aeb2469dd2ce726
The num_trx attribute for a given BTS states the number of TRX to be
used by that BTS. If more than num_trx are configured in trx_list in the
cfg file, then only up to num_trx are taken into account. If a num_trx
value higher than max_trx is specified throuygh config file or at
runtime by the test, an exception is raised explaining the issue.
The num/max_trx attributes are overlayed along the config levels
(generic -> bsc_bts -> specific bts-type -> specific resource object).
This way we can specify a long list of trx+timeslot config in the
generic config (bsc_bts), and tune for each model and specific BTS which
is the desired default number of TRX, as well as the maximum supported
per type.
Change-Id: I7f46eaf7a16f03268653299c93600c0443f691ac
nanobts inherits directly from bts.Bts, so we need to move
conf_for_bsc_prepare there to make nanobts work again.
Fixes: 530681fd86
Change-Id: I4305eefb4056ed7614118532e271efe780f4a87f
This can happen while in a test we use:
wait(ms_mo.call_is_active, mo_cid)
And then answer fails for whatever reason, after a timeout ofono will
remove the call object:
/sierra_2: DBG: 'org.ofono.VoiceCallManager'.CallRemoved() -> /sierra_2/voicecall01
As a result, during next call o call_is_active() will try to get the
call object, but it doesn't exist anymore and an exception will be
created in method call_state during call to systembus_get().
Change-Id: I02b7e76425754372756493761819f18f1e3106c1
Don't enable it for binaries built with sysmocom's cross-toolchain since
it doesn't contain required libasan.
Also, don't enable it on openbsc since we don't have an enable-sanitize
flag there.
Change-Id: Ibef6c2fc497bce0d799116a854a48872f9ca16d7
It was spotted that when an error ocurred during poll generating an
exception to finish the test (osmo-msc ended prematurely), then the
active wait() condition was kept being checked for later tests, making
all followup tests fail.
That's because in case of exception we were not making sure the timeout
is removed and it kept firing forever.
Change-Id: I5c93cd67b2b83c0ecee96fbc6c4200b419bdf73f
Add a main file to start everything. All parameters need to
be made configurable. Composition of testcase and IMSI ranges
need to be configurable as well. This is left for future
commits. Right now it can execute a single UL test.
Start with:
export PATH=../osmocom-bb/src/host/layer23/src/mobile:$PATH
export PATH=../osmocom-bb/src/host/virt_phy/src/:$PATH
export PYTHONPATH=$PWD/src
python3 -mosmo_ms_driver
Change-Id: I58c938500a067eebb213750e56d8bf4d8af43df2
This is an interim solution but is bringing all parts together.
We will need to:
* Abstract this into a base class
* Be able to mix different tests without interfering with each
other (e.g. 10k LU tests, 2k SMS sending)
* The event loop will need to handle multiple timers/timeouts
* Stats printing should print more information and test pass/fail
* The test should quit early if everything has already passed
Change-Id: Id3277ed0f0f9ee734569bedd4752564eb68c9cfd
In the long run we might not want to start the virtphy but
for now virtphy+mobile belong together. Start virtphy first
as mobile will not handle a missing socket gracefully.
Change-Id: I5c6d742842d7f3e0a1858436ef3f8634d8c0582d
Add a JSON encoder and a small module to sent registration and
other events per unix datagram socket.
json.lua fetched using:
$ wget -O src/osmo_ms_driver/lua/json.lua \
https://raw.githubusercontent.com/rxi/json.lua/master/json.lua
Change-Id: I43ae84a944c7f33e41d5de0880d4aaab3378809b
Create an EventServer that will create a unix domain socket and
dispatch incoming datagram messages. The lua remotes are not
passing credentials so this is a one way communication channel
for now. Tests can register to handle the message.
Change-Id: Ida97c570e8e741410f2dba4a231a8058ca96da25
Create a C-like single process event loop. It could be powered by
select/epoll or kqueue. It should scale to many open fds but we
will not have that many.
Change-Id: Iea06f33870cab9f21e9a1a1feb9758467343dd29
We are using the CDF to decide which percentage of the jobs should
be running at a given point. The x-axis is time and the y-axis the
percentage of how many jobs should be running.
There are three functions to do this. The first one is a constant
which would result in everything being started right now, one to
start them linearly and the last (formula from Qt/3rdparty) to first
accelerate and decelerate slowly.
Change-Id: I9e3064f4c3c4c7af5d3491f850090516e541f4d3
It seems there's a period of time in between the nanoBTS starts
announcing itself and it can actually be managed by the BSC
(ipaccess-config in this case). If ipaccess-config is called quickly
after nanoBTS it first announced, its TCP conn will be rejected with a
TCO RST, and ipaccess-config will fail. Let's see if waiting a few
seconds is enough to have this working more reliably.
Change-Id: Iec8adb2cd13d808a6ca1843dc95b81bd1a97d1c0