We're testing at 80% and 200% of PCH capacity, both for either IMSI-only
or TMSI-only paging requests. The way how we test ensures:
* the expected number of paged mobile identities end up on the Um interface
* we implicitly check the queuing limit of 200 paging records by
overflowing it in the 20-seconds-of-200%-load cases
* we implicitly check the batching of mobile identities into different
paging types
* we test the PCH load reporting over RSL
As a side note, in case you were ever wondering what's the expected
paging throughput / capacity, there are now helper functions to compute
it. For our combined CCCH/SDCCH4, it's about 16 IMSIs per second or
about 32 TMSIs per second.
Change-Id: I0b80b72bdab3d80d915296d70e1174623fbd8610
The BTS needs some of the SI3 parameters like BS_AG_BLKS_RES for
internal computations, so make sure we send it after the connection
has been established.
Change-Id: I5dc3724f79e669f52593cd776806d84b4dd4bf5c
So far we only dispatched received Common Channel messages from the
wire / IUT into the CCHAN_PT. Now the tester can also send Common
Channel messages back to the wire / IUT.
Change-Id: If3d5516c14ea3fbbd8c3de35eaa8ea5f18a00933
This is a template that goes beyond the 3GPP specs, as it expects
presence of certain optional IEs which we know are always present
in the OsmoBTS case.
Change-Id: Ibf37565ab4fe70515b598a2757953628aa780241
which allows us to send RR IMMEDIATE ASSIGNMENT (DL/AGCH) and
RR MEASUREMENT REPORT (UL/SACCH) messages from tests.
Change-Id: Ic75041e84c15c77805ecafb823bf7108920675ca
When emulating the BSC side of RSL, this can be used by a test case
to wait for the RSL connection to be established.
Change-Id: Iad2f6e4cb6a8f3b77e452f36a83ec11e7554e6c7
So far we assumed we emulate the BTS side and talk to a BSC.
Let's make this configurable and disable the BTS-side spcific code
paths by means of a 'bts_role' boolean type.
Change-Id: I0d0460cbb633b470f6117d07643f68aefb1530eb
Let's use the preprocessor to avoid IPA_Emulation pulling *all*
dependencies into each and any of our projects. The code readability
suffers a bit from the many #ifdefs, but compilation speed increases
if we don't have to pull in all those (recursive) dependencies.
After all, a BTS test case will never need SCCP, GSUP or MGCP.
Change-Id: Ic0231adbd2171214de133d26b3fbf36130ee8aa0
So far, the RSL templates have been used for BSC testing, i.e.
TTCN3 behaving like a BTS. Now we want to test the BTS, so we
have to "invert" the receive/send direction and hence also need
the inverse templates.
This doesn't add *all* of them, but a sufficiently large number for our
first testcases against OsmoBTS.
Change-Id: Ica9cfae5a691e4d967d046b04e5bb16a71a89adf
This adds two new tests: One for RSL, and a second one which performs
the same test on the OML port. Both tests open an IPA connection and
send a unit ID which is unknown to the BSC. The tests expect the BSC
to close the connection immediately.
We need to add handling for a socket error in IPA_Emulation because
otherwise these tests do not pass reliably as some closed connections
are not properly detected.
Change-Id: I6a947d7411a016e4d7650031396cae3575756453
If a client is sending a PDU_LLC on the BSSGP port, we will encode
it and wrap it in BSSGP before sending it down the stack towards the
IUT, just like we're doing with L3 PDUs already so far.
Change-Id: Ie3385dbb9aee793bdbd006376a69e0a551b23c3c
This seems to be a bug in TITAN 6.1.0: isbound() on a bound-value
still returns false. isvalue() however returns true if the variable
is bound, while still returning false if it is not.
Change-Id: If6e9ea970a90470a98a33e50ea5cff0fd1781719
While in TS 24.007 there is a separate L3 SAPI for GMM and SM,
this only applies to messages sent over LAPDm, and not LLC.
In LLC, both GMM and SM are sent via the same LLGMM LLC-SAPI.
Change-Id: I7814c952cd7f6032222b190d396aaa0570571bfc
It seems not all encoder paths properly set typeOfIdentity, so
let's make sure we set it correctly.
Change-Id: Ie35dcf7fec901b786eb2127c1a23f5c161c5778c
Those can be very handy to convert boolean values and templates
to the BIT1 type that is used a lot in Ericsson code.
Change-Id: I137595edabd2bbf5e6cf8bf9bdb73b3589c94c64
Based on the exsting NS/BSSGP emulation as well as the VTY, GSUP and
CTRL implementations, we are now building a test framework skeleton
for osmo-sgsn.
Change-Id: Icce90f9d8a680c7a523163e2c0bc03d12ff857e2
When we started out, Ericsson hadn't released yet their NS and BSSGP
modules. Let's port our logic over to their encoder/decoders, as they
are more complete (but less regular / more difficult to use).
Change-Id: Icbc4f5d24f3419f99c9a4805f836bddd2849f492
It's a quite frequent requirement in encoding IMSI/BCD numbers, so
let's move it to the more generic GSM_Types module.
Change-Id: I6fb8d9a6f37c990f6901fb48b15312a157954fda
We don't have a good way to make the BSSMAP code wait for the lower
SIGTRAN layers to be up and running. To avoid the RESET being
sent before the lower layers are up, introduce a sleep of 1s.
This is ugly, but appears to work for now. A more proper solution
is more than welcome.
Change-Id: I7a43b3e381405f3af30b3ffe04bc50e64ec66f57
We introduce a procedure by which any DchanHandler can globally
disable all receiving/processing of DChan related messages. This is
required in upcoming handover code, as we need to block handling
of messages such as RSL IPAC CRCX on the new Dchan before we have
processed the RR HANDOVER CMD and raised an associated expect here in
the RSL emulation code.
Change-Id: Ibef65f87d0d481accbc0e019874dd43b3f9a5dbc
Also, extend RSLEM_{register,unregister}() with an optional third
argiment, so the RSL_DchanHdlr can register 'expect' also for
that secondary BTS/port during hand-over
Change-Id: Ic22778f17dc4b93ef54837cf400ddd7d1732ae7e
The existing code generating L3 sequence numbers in MO direction
made the assumption that the L3 message inside ComplL3 would always
be MM/CM, and increment the sequence number.
However, in case of a paging response, it is actually RR, which
does *not* have L3 sequence counters. So we must make the sequence
counter increment dependant on the L3 protocol discriminator.
Change-Id: I25a5dd0c180c9acfa870984c6b122ac0c46383b3
The MNCC Unix Domain Socket encoding uses an int here, which is
a bit odd, given that it's an ASCII / IA5 char value on the actual
GSM L3. Let's convert from/to something useful.
Change-Id: Id17ac502ca33f4962214a3d5938d0dc29ca6ec1b
We now test all of the cell identification types specified in BSSMAP,
and also lists with a length != 1 entry.
Change-Id: I261f948d6054d0c90078c1dd0b2785a967b0a49b
MGCP permits for the CallAgent to send a wildcarded endpoint name,
at which point the MGW itself must allocate an endpoint name and
return it as SpecificEndpointId parameter in the CRCX response.
Change-Id: I704bbe4e11b27e83a6ae6a71aa6a715dc8301f34
A given MGCP_ConnHdlr is handling multiple connections on one Endpoint
anyway, and the variable is not set or used anywhere.
Change-Id: If9eea3f665289a52915f114f0a69234aad28f322
During assignment or hand-over, a given TTCN-3 component may be
interested in registering more than one channel number. Add an explicit
procedure port with associated registration procedure, similar to what
we already do in GSUP, MNCC and others.
Change-Id: Iba37bf9541c779b79e179f995cdfa677633fadeb
There are quite a number of non-transparent RLL messages, such as
RLL_RELEASE_REQ. Make sure we match those as intended.
Change-Id: I30260a57fc01613450e6ac66e0af97c29041b4fa
For some reason TITAN 6.1.0 requires the table to be explicitly
initialized, while 6.3.0 is happy without it.
Change-Id: I4f9ac98fb60ad16b98acd627efd617bfb4f6abcb
This seems not to be required on TITAN 6.3.0 on my laptop, but the
older 6.1.0 on Debian 9 seems to need it.
Change-Id: I574d8b79ac43e0fceddb3f9815666aef0ed66a3f
We start the call from the MNCC side, match on the paging and then
pick it up from there.
It currently fails as the MNCC_Emulation cannot yet handle "ConnHdlr
originated" MNCC calls yet.
Change-Id: I28c465187fd8b1dcfd687180b373a47bb9ac6734
OsmoMSC seems to have broken encoding of MSISDN which is not in-line
with the spec. Let's adapt to it.
Change-Id: I4892df63f1a135573dcac977f5eb0a79cbaffad3
Related: OS#2883
If we're emulating BSC/BTS/MS, then we must be able to dispatch
incoming paging requests based on their IMSI or TMSI to the right
ConnHdlr component. This introduces a new table to facilitate that
dispatch.
Change-Id: I85c1ea3bcf8fb4a100f20cffdc991826b58e290b
All relevant parameters are passed in in form of a CallParameters
record, and the bulk of the work has been moved to
BSC_ConnectionHandler.
Change-Id: I932c6c9f7a48b6a1f1ec399e8bba6a413c8bc69e
In the end, we will often see two connections that relate to one
endpoint, so let's dispatch based on the endpoint name and not based
on the connection identifier.
In the BSC case, we have
* two MGCP connections on one EP in case of RTP/IP based Abis
* one MGCP connectio on one EP in case of E1/T1 based Abis
In the MSC case, we have
* two MGCP connections on one EP: BSS and MSS/MNCC side
Change-Id: I8cd7395ee7b076a9a9ef513cc1b71f2db5009845
* re-introduce connection table
* introduce unitdata_cb for connectionless MGCP messages (like AUEP)
* rename MGCP_Emulation_CT members to avoid clashes with other similar
component names when using "multiple inheritance"
* Use HostName/PortNumber types on MGCP_conn_parameters
* allow "bind to local UDP port only, permit any UDP source port" behavior
* implement expect matching criteria + expect matching only on CRCX
* add helper function f_create_mgcp_expect() like in other Emulations
Change-Id: I953a91e663648715fa4fe98acacca393c8747001
We actually need to add the filler digit 'F' if the number of digits
is even. It is absent when the number of digits is odd.
Change-Id: Ic1353f4ea09bba3151636b94a99c8559e0289ffd
We want to use this code also for OsmoMSC testing, so let's make the
prefix configurable as module parameter.
Change-Id: Iec846227e88b3dc0d3be9474b8b926719161c9ee
MNCC has this weird encoding that the speech version array must
be terminated with one element '-1' at the end. Let's make sure
our default complies to this rule.
Change-Id: I2e06ed1b558c58a62a00ea8d3573bb31c0c3e750
Related: OS#2853
it seems the decoder is using '0' in positions where we have
not defined any enum value for '0'. Work around that.
Change-Id: I6bf0540f7ddd4dbe3b6c6ac06421a933126a7e17
If the ConnHdlr initiates an outbound connection, it needs to know
once that connection is established if it wants to send further
data. Transform the N-CONNECT.confirm into a MSC_CONN_PRIM_CONF_IND
and send it to the ConnHdlr.
Make use of it from the MSC_Tests when issuing a Complete L3 Info.
Change-Id: I7293a9f4993d13c90316224eb9f13e10130388ef
It's quite cumbersome if the user of the BSSMAP_Emulation (the ConnHdlr)
will have to manually decode the DTAP in every BSSAP/DTAP message he
receives (and encode on the transmit side). Let's introduce a new
optional mode in which the DTAP messages are already decoded for
more convenient matching inside the ConnHdlr.
Change-Id: I35cd4ea78aca0ce7c7d745e082d7289882c11e81
A send template with '?' is broken. Also, allow caller to specify DTAP
payload as well as optionally a DLCI.
Change-Id: I641ee8ce5e5ae70b514342cf68cdc79b1926c4d0
We create a new Osmocom_CTRL_Adapter module which can be used by
test suites using the 'extends' functionality.
Change-Id: I3ef6cfaa738900e008155013a05b8ccf3d4b7aeb
This adds templates for sending and receiving MNCC messages from
the external MNCC handler point of view, i.e. as required for MSC
testing. The inverse templates will be needed if we want to implement
emulation of the MSC side of MNCC.
Change-Id: I77665aaf589bdaa9dc0aa6a5daa431fafdc2b383
By default all the elements in the conn table seem to be considered
<unbound>.
f_cid_create() manages to set ra, ra_fn and comp_ref in the
ConnectionData element, but checking for
ispresent(ConnectionTable[i].ra) still returns false while
log(ConnectionTable[i].ra) returns 23. Setting every optional element to
omit as f_cid_clear() does before using the connection table seems to
solve this issue.
The assignment_fr_* tests now continue after receiving the Immediate
Assignment, but still fail after receiving the CM Service Request.
Change-Id: I24205425c5b6ae5b8a0f6288ba89ea5a1dc4669d
Let's verify the operation of the CIPHERING MODE COMMAND as issued
by MSC, performed by BSC and implemented by simulated BTS/MS.
Change-Id: Ibc06bd2177c63837a794a0ca1f54ebef17499e78
They all are related to a dedicated channel and carry a channel number
as first information element.
Change-Id: Ic3fdc029a96c34a9d2d9ec669b789526c8325637
The existing tests were implemented directly on top of the BSSMAP
and RSL CodecPorts. If we loop in the RSL_Emulation and
BSSMAP_Emulation components, we can properly multiplex/demultiplex
multiple MS (radio channels) on both the RSL and the MSC (SCCP
connection) side.
In order to have a single component that handles both the RSL and the
BSSAP side of a given channel/subscriber/call, we introduce the concept
of BSSMAP "Expects", where the test csse can register the L3 INFO that
it sends in the RLL ESTablish INDication on the RSL side, so the BSSMAP
handler cna route the BSC-originated SCCP connection with that L3 INFO
back to the same component. This is a bit inspired "in spirit" of the
"expect" mechanism of netfilter connection tracking.
Change-Id: I71f777cd4f290422fa68897952b6505875e35f0e
So far, BSSMAP_Emulation used the SCCPasp_SP_PORT directly, explicitly
calling BSSAP encode/decode functions while processing the primitives.
Let's clean this up and use the BSSAP_CodecPort which has meanwhile
been developed as a dual-faced port that can be stacked between SCCPasp
and the user to avoid any manual encode/decode function calls.
Change-Id: Icded789d18f3469f74e16f552df2c7ac44ac4294
This allows us to verify if the BSC pages *only* where it is supposed
to page based on the cell identity list in the 08.08 PAGING.
Change-Id: I53ffe44279a7b83e045b3fdb25da64529955d457
So far, only the IPA client was instructing the IPL4asp to use
the message-desegmentation function. The server didn't use it, leading
to inconsistent behaviour.