Commit Graph

1742 Commits

Author SHA1 Message Date
Vadim Yanitskiy 1f4486cfe3 library/GSM_RR_Types.ttcn: fix: IA Rest Octets may have optional padding
According to 3GPP TS 04.08 (version 7.21.0), section 10.5.2.16 and
table 10.5.45, IA Rest Octets IE may contain spare bits. Let's add
an optional field 'pad' to record 'IaRestOctets'.

NOTE: somehow this change crashes my TITAN runtime:

  dec_GsmRrMessage(): Stream before decoding: '2D063F100FE3673A096B0000C800300B2B2B2B2B2B2B2B'O
  *** Error in `././PCU_Tests': malloc(): memory corruption: 0x000000000074a790 ***

while the recent version works just fine.

Change-Id: Ifdcdcf50709fcc03195cb8ef6092977e26f910ec
2019-09-05 17:25:46 +02:00
Vadim Yanitskiy f10bb45899 library/GSM_RR_Types.ttcn: fix: IA Rest Octets is mandatory IE
According to 3GPP TS 04.08 (version 7.21.0), table 9.18, IA Rest
Octets (see 10.5.2.16) is a mandatory IE, not optional.

Change-Id: I403d2141536303a966be7ff51b06c3de202412e6
2019-09-05 17:25:40 +02:00
Vadim Yanitskiy dd6d5d1baa library/PCUIF_Types.ttcn: inform RAW codec about PADDING in PCUIF_data
PADDING is one of the TITAN specific language extensions [1], which
tells the RAW codec that an encoded payload shall end at a boundary
fixed by a multiple of 'padding' unit bits counted from the
beginning of the message.

Let's use it for record 'PCUIF_data', where the fixed-size buffer
is located in between the other fields, so padding will be ignored
by the RAW coding after decoding:

  $HOST: dec_PCUIF_Message(): Decoded @PCUIF_Types.PCUIF_Message: {
    msg_type := PCU_IF_MSG_DATA_REQ (0),
    bts_nr := 0, spare := '0000'O,
    u := {
      data_req := {
        sapi := PCU_IF_SAPI_AGCH (2),
	len := 23,
	data := '2D063F100FE3673A096B0000C800300B2B2B2B2B2B2B2B',
	...
      }
    }
  }

As a result, we don't have to deal with padding manually and
can safely use 'decmatch' statement in the receive templates.

[1] usrguide/referenceguide/4-ttcn3_language_extensions.adoc

Change-Id: I5808954b5c67c3239e795e43ae77035152d359ef
2019-09-05 16:18:59 +02:00
Harald Welte 09538f8bfd bsc: Test suite for CBSP (Cell Broadcast Service Protocol)
In this testsuite, we simulate BTS and CBC by attaching to RSL and CBSP
protocol interfaces of the BSC.  We then issue a variety of CBSP
commands to the BSC and check for corresponding action on both the BTS-
facing RSL as well as responses on the CBSP side.

Change-Id: Ia6ffac181f50586d06d2f29bca1c57285179e861
2019-09-05 13:13:35 +02:00
Harald Welte b522323cbb CBSP: Hack to make receive templates work
For some reason, the 'ifpresent' annotation doesn't work in lists
of templates.  This means we have to re-think the CBSP template
structure at some point.  However, this would be a significant detour
and I'd rather have working tests right now, so we can verify the
actual functionality merged into the BSC right now.

Change-Id: I3fa174b4352c17feaea4d33f773877104d4913c4
2019-09-05 12:44:13 +02:00
Harald Welte 908ce54531 bts: Add test for ETWS Primary Notification via P1 Rest Octets
Change-Id: I247ea0f336e4ae9eecb1e8166f2326bdd2c299f4
Related: OS#4047
2019-09-05 12:44:13 +02:00
Harald Welte cd451ef083 Add CBSP_CodecPort + CBSP_Adapter
Change-Id: I36b39b320c21502395f9d51d769d76adf5f5d602
2019-09-04 10:45:41 +00:00
Harald Welte ea260349de Add CBSP (Cell Broadcast Service Protocol) types + templates
Change-Id: Ida2e0af7d282fd7d5318110c05efa5a10114242c
2019-09-04 10:44:59 +00:00
Pau Espin bb2bb061e5 ggsn: Delete previously activated pdp ctx in *_interact()
This change fixes some GGSN_Tests failing lately since osmo-ggsn
correctly sends DeleteCtxReq for dangling pdp ctx upon increased
Recovery counter received, and tests are not expecting that (because
they don't expectect dangling pdp ctx from previous tests).

Change-Id: I232298e2bfd8bfc99d82cbf5803d11db7eb1786a
2019-09-03 13:19:29 +02:00
Pau Espin ce0d615e12 sgsn: Proper shutdown of RAN_Adapter components
Otherwise TTCN3 errors sproadically during shutdown:
""""
SCCP_Emulation.ttcn:5661 Receive operation on port SCCP_SP_PORT succeeded, message from SGSN_Test_0-RAN(414)
...
SCCP_Emulation.ttcn:5293 Sent on MTP3_SCCP_PORT to SGSN_Test_0-M3UA(415) @SCCP_Types.ASP_MTP3_TRANSFERreq_sccp
SCCP_Emulation.ttcn:5293 Outgoing message was mapped to @MTP3asp_Types.ASP_MTP3_TRANSFERreq
SCCP_Emulation.ttcn:5293 Dynamic test case error: Sending data on the connection of port MTP3_SCCP_PORT to 415:MTP3_SP_PORT failed. (Broken pipe)
SCCP_Emulation.ttcn:5293 setverdict(error): none -> error
"""

Similar shutdown is already done in f_cleanup() of SCCP_Tests.ttcn.

Related: OS#4176
Change-Id: I471eb851e5d41de5d8d974ec81be27024d7d313a
2019-09-02 09:04:53 +00:00
Oliver Smith aac9b9ceca BSSGP_Emulation: add BssgpDecodeDepth
Make the decoding level (BSSGP, LLC, SNDCP, L3) configurable, so the
existing PCU tests, that expect messages only decoded to the BSSGP
level, can pass again. Move the SNDCP decoding in f_dec_bssgp above the
L3 decoding, so f_dec_bssgp goes through the layers in the reverse order
of f_send_bssgp_dec.

I have verified, that all testsuites using the BSSGP Emulation (SGSN,
PCU, PCU-SNS) are still working with this patch.

Related: OS#4180
Fixes: 955aa94504 ("BSSGP_Emulation: Abandon "BssgpDecoded" intermediate structure")
Change-Id: I8f76385528c1de98c557cee451c0e0dfd182b605
2019-09-02 09:15:33 +02:00
Oliver Smith 0167c2aecf sgsn: update configs for running without docker
Base on docker-playground.git's ttcn3-sgsn-test/*.cfg files, change IPs
to 127.0.0.* (keep last octet), log to stderr. The reasoning behind the
IP change is, that using almost the same IP as in the docker configs
makes it easier to compare the configs.

Change-Id: I15b5a943e9c665dfd4eb6b30bff84afc8adeb4a2
2019-08-30 13:23:34 +02:00
Oliver Smith aa6278dd8f pcu: add configs for running without docker
Base on docker-playground.git's ttcn3-pcu-test/*.cfg files, change IPs
to 127.0.0.1, log to stderr, adjust pcu-socket path.

Change-Id: Iff3e5e6cf0c608680c8c5f9f83e8bc1032274ea9
2019-08-30 13:21:54 +02:00
Oliver Smith 00d7bc4a93 pcu/GPRS_TBF.ttcn: less verbose logging
Reduce the formatted log size of TC_ul_tbf from ~140 MB to ~8 MB.

Related: OS#3925
Change-Id: Ibccfc399a6e8b50e4f01b5f167c47fbbde4533ed
2019-08-30 12:05:39 +02:00
Oliver Smith a2cf8bd0d1 BSSGP_Emulation: as_unblocked: fix SIG broadcast
I am not aware that this caused breakage anywhere. But from reading the
patch, this is a regression that needs to be fixed.

Fixes: 955aa94504 ("BSSGP_Emulation: Abandon "BssgpDecoded" intermediate structure")
Change-Id: I36a9a4d61be52a4d86ac1cbf6e6976cf01cff7c6
2019-08-30 12:05:31 +02:00
Oliver Smith 7bdf87bf9f bts: add configs for running without docker
Base on docker-playground.git's ttcn3-bts-test/*.cfg files, change IPs
from 172.18.9.* to 127.0.0.* (last octet unchanged).

Change-Id: I9eb2bb4599a4e874424f73483d9658a4467b8b8c
2019-08-29 19:46:49 +00:00
Oliver Smith f5239c7055 bts: add test TC_pcu_socket_verify_info_ind
Verify that the CellID of SI3 (TS 04.08 9.1.35) and other values are
passed properly to the PCU socket. A bug in OsmoBTS is currently causing
it to send a byte-swapped CellID, related fix is in [1].

[1] I68faf4558f0686fb2a3db24077dceaae05bf0262 (osmo-bts)
Related: OS#3854
Change-Id: I6516808f4b9e9a2301f9ccc1e55ded14e7334c33
2019-08-29 19:46:49 +00:00
Oliver Smith c089b415f5 bts: f_init_pcu: sleep before connect
Give the emulated BSC side some time to send the various SI via RSL.
This workaround makes OsmoBTS send the correct CellID and other
information instead of empty values to the PCU socket. The next commit
tests these values.

Related: OS#4179
Change-Id: I547f2b8e0796b6976506c28b1b493b1f5bce28f8
2019-08-29 19:46:49 +00:00
Pau Espin fcec914a8e sgsn: Introduce test TC_attach_echo_timeout
This test verifies sgsn drops all GGSN related pdp context when that
GGSN stops answering echo requests.

Change-Id: Ic31748924e7bf05ea2ccf2b1be0c460eefed5782
2019-08-28 19:16:50 +02:00
Pau Espin fa1ca02d34 ggsn: Introduce test TC_pdp_act2_recovery
Some code is moved out of f_pdp_ctx_act() into f_handle_create_req() in
order to re-use it in the test.

Related: OS#4165
Change-Id: I48c1bc9287ce8b820e5ea672dffbc5a8503f16d7
2019-08-23 19:13:34 +02:00
Pau Espin 6916ec4648 ggsn: Introduce test TC_pdp_act_restart_ctr_echo
VTY functionalities to enable and disable echo requests in osmo-ggsn are
added too as part of the test.

Depends: osmo-ggsn.git Id2c84165dc59dff495106758146a701ca488834f
Related: OS#4165
Change-Id: Ia37e48e7ff9ad063f9eabf447f8a6a0a3fc380d9
2019-08-23 18:32:49 +02:00
Pau Espin 2a3302a0cd sgsn: Add test to verify duplicate DeactPDPCtx crashing osmo-sgsn
osmo-sgsn sends 2 DeletePdpCtxReq on gtp, Confirmation received on first
one frees cbp associatd to pdp and the second one accesses the already
freed cbp.

Related: OS#3956
Change-Id: Ie1cc9fdf91b18b0b7fb3d5fb33b6dcf6f46a393f
2019-08-23 16:16:29 +02:00
Pau Espin 22d597ff94 ggsn: Introduce test TC_pdp46_act_deact_apn4
Related osmo-ggsn.git libgtp fix: I6c6215a4ce478afabc78ffaf5ffb0cf829e41226

Related: OS#4154
Change-Id: Ia1893e0c181307ac1ceb07ee5f496507f7a603c8
2019-08-21 16:31:35 +02:00
Pau Espin b7f01781d9 ggsn: Update test xfail->pass in expected-results.xml
Commit below fixed the test but forgot to update this file.

Fixes: 8e7a396656
Change-Id: Ia5006c9258de9b442b32ae92ae75ef08670de7cf
2019-08-21 16:31:17 +02:00
Pau Espin 2302341275 ggsn: Add missing v4v6 tests in expected-results.xml
Change-Id: I80598fad57b8e7172ac073ebe2b3445e5ab132f0
2019-08-21 16:13:30 +02:00
Oliver Smith 92c2bdb00f bsc: f_ipa_unknown_unit_id: use different id
Change the unit_id value, that is supposed to be unknown at BTS, from
0/0/0 to 99/0/0 to make TC_oml_unknown_unit_id pass again. The test was
failing, because a new bts that matches 0/0/0 was added to osmo-bsc.cfg
in [1], [2] and [3].

[1] Ia4ba0e75abd3d45a3422b2525e5f938cdc5a04cc
[2] I1c57a04747f5ec004ccf4657954dcb0b003c24fc (docker-playground)
[3] I00547dccf8908d46df4730cb513fe577956d7683 (docker-playground)

Related: OS#4156
Change-Id: I585ff825c7b6bca17e5c6fb6d670a649965a1653
2019-08-20 15:30:41 +02:00
Oliver Smith 75aa020da5 BSC_Tests: update number-of-bts to 4
Fix failing TC_ctrl test for ttcn3-bsc-test and -latest.

Depends: I00547dccf8908d46df4730cb513fe577956d7683 (docker-playground)
Related: OS#4156
Change-Id: Ie2c664ba0f845da644e20e2c919c12d8fc2af6ba
2019-08-19 14:30:50 +02:00
Oliver Smith 0d7b7abb00 Revert "RAN_Adapter: invert check for RAN_ops == omit"
This reverts commit 5932cd3463. It caused
a lot of tests in the ttcn3-bsc-test, ttcn3-bsc-test-latest,
ttcn3-bsc-test-sccplite and ttcn3-bsc-test-sccplite-latest testsuites to
fail with:

RAN_Adapter.ttcnpp:179 Dynamic test case error: Text encoder: Encoding an unbound optional value.

Related: OS#4156
Change-Id: I441c701553eef8e9e018d11923359eb3f3b26826
2019-08-19 13:46:35 +02:00
Harald Welte c4148dac35 NAS_EPS: fix 'make deps' (no commit specified)
Change-Id: I790c54568e745ea07afeed35b4d09a45b785711f
2019-08-18 19:42:23 +02:00
Harald Welte 0e0380804a DIAMETER_Emulation: Remove unused dependency to MobileL3 and DNS
This is an artefact of copy+paste programming

Change-Id: I10d56ef9971149350812b1504844217195623bd8
2019-08-18 19:40:42 +02:00
Harald Welte 3286eb37c5 IPA_Emulation: Fix building without CTRL support
Back in JUne, Change-Id I4d1eca6b0008a395b7f7449e6ea3f9b6d41133c7
attempted to introduce compilation of IPA_Emulation without CTRL but
it failed to cover all references to CTRL with the correspondign
ifdef/endif blocks.  Let's fix this.

Change-Id: I68349b32f613aacced84011601121f2265243600
2019-08-18 19:40:42 +02:00
Harald Welte 56071b7d7d mme: Add missing link to DIAMETER_EncDec.cc from TITAN
Change-Id: I9214ba6778ed6fc8c576e9d97217ecbb9996fb12
2019-08-18 19:31:26 +02:00
Harald Welte 6ec643950e mme: Integrate DIAMETER support into MME testsuite
The test suite can now send/receive DIAMETER messages via related test
ports.

Change-Id: I1691f87e19cced79ab0f9c3bb87608fc63e21eab
2019-08-18 17:14:20 +00:00
Harald Welte d27ab24dcb library: Add DIAMETER Templates, Emulation, CodecPort
Contrary to the DIAMETER_Types.ttcn, these files are not generated
but written by hand.

Change-Id: Iafbf55ab25bbaa40960eb1744cff36dcd7970c17
2019-08-18 17:14:20 +00:00
Harald Welte 5aadb0ef18 library: Add [generated] DIAMETER_Types.ttcn
The way how the TITAN support for DIAMETER works, is that there's
an awk-based shell script and lots of DIAMETER dictionaries in the
https://github.com/eclipse/titan.ProtocolModules.DIAMETER_ProtocolModule_Generator
repository.

I've used 'AVP.sh Base_IETF_RFC3588.ddf BaseTypes_IETF_RFC3588.ddf
AAAInterface_3GPP_TS29272_f10.ddf GxInterface_PCC_3GPP_TS29212_f10.ddf
S6Interfaces_3GPP_TS29336_f00.ddf MobileIPv6_HA_IETF_RFC5778.ddf
RxInterface_PCC_3GPP_TS29214_f20.ddf' to generate the DIAMETER_Types
file we use here.

DIAMETER is used as signaling protocol between the HSS and other core
element nodes in the EPC, such as the MME and S-GW.

Change-Id: I85834e98e238b7ff6058264a0f365d05c15cd669
2019-08-18 17:14:20 +00:00
Harald Welte 0f7d03a787 mme: Add GTPv2 support
this includes a GTPv2_CodecPort (for the usual transcoding)
as wella as an empty GTPv2_PrivateExtensions.ttcn without which
the TITAN GTPv2 ProtocolModule won't compile.

Change-Id: I1c1b8409077103dd4e64e467d21d33d8c9c4ac95
2019-08-18 17:14:20 +00:00
Harald Welte 95333a16eb mme: Extend MME tests to also include S1AP interface testing
The tests so far only tested SGsAP alone, which doesn't get us very
far.  Let's add interfacing with the S1, too.

Change-Id: Id54071b901db720a0f88b91cdc5a8e09bea0fb58
2019-08-18 17:14:20 +00:00
Harald Welte c918e4e373 TTCN-3 native function wrapper for SNOW-3G
Change-Id: I7fca69ea8b4aed48d5a64885b762ab85be71ef03
2019-08-18 17:14:20 +00:00
Harald Welte 4a2bfcb77f remove ogslib dependency from snow
* don't use ogslib specific header files
* don't use ogs_{malloc,free} but simply use the stack

Change-Id: I5604c594934b03d2fd83e1e465fc150fc542a475
2019-08-18 17:14:20 +00:00
Harald Welte 135af53c48 snow-3g.c: Mark all internal primitive functions as static
We don't need to pollute the public namespace

Change-Id: I55347320383b173d1aca622997e7cfb98cd9caff
2019-08-18 17:14:20 +00:00
Harald Welte 051fd8611c snow-3g: const-ify S-boxes
Change-Id: I3a85120aad95011954f25bb42900133cb30cddb7
2019-08-18 17:14:20 +00:00
Harald Welte 867ca29ad9 Import snow-3g.[ch] from nextepc source code
Change-Id: I938de2ad17210aa1561240c0a96d0df216243be1
2019-08-18 17:14:20 +00:00
Harald Welte fc5f637505 library: Add initial set of LTE/EPC NAS templates
Change-Id: I53a598011041d642f03dcd9cca128f4e9da4adfd
2019-08-18 17:14:20 +00:00
Harald Welte 3549811565 library: Add S1AP CodecPort/Emulation
Change-Id: I9bfba3ab2a3830e590b203c44c03b9c9383fff99
2019-08-18 17:14:20 +00:00
Philipp Maier d01fc8fefb MSC_Tests: do not send an SGsAP-MO-CSFB-INDICATION when testing MT-Call
The TTCN3 tests MSC_Tests.TC_bssap_lu_sgsap_lu_and_mt_call and
MSC_Tests.TC_sgsap_lu_and_mt_call initate an MT-CSFB call for testing
purposes, but they also send an SGsAP-MO-CSFB-INDICATION to make the MS
come back to LTE. This is wrong. SGsAP-MO-CSFB-INDICATION just informs
the VLR that the UE has initiated a MO CSFB call on the LTE side. On MT
CSFB calls this message should not appear. Lets remove it.

Related: SYS#4624
Change-Id: I2e9fda4fe97866c4cbc77224ba1930ca81411fd6
2019-08-18 17:13:20 +00:00
Philipp Maier f45824ad0e BSC_Tests: Change test-expectation of TC_paging_resp_unsol
The testcase TC_paging_resp_unsol expects the BSC to close the channel
when an unsolicit paging response is received. This expectation is due
to the fact that osmo-bsc supports multiple MSC, which is not specified
in 3gpp specs. Therefore the BSC needs to know which MSC is in charge.

However, with MT-CSFB calls it is a normal situation that the BSC
receives a paging response on abis without sending a paging first since
the MSC has paged the UE via the SGs interface. In those cases we expect
the BSC to forward the paging response to the first configured MSC.

Related: SYS#4624
Change-Id: I5562cbf61a2aa42e6950860bc0f9c6c20c61a9fe
2019-08-18 17:13:20 +00:00
Harald Welte 26fbb6e017 sgsn: Integrate RANAP
Integrate RANAP support to SGSN_Tests.ttcn.

Related: OS#2857
Change-Id: Ib62fc4c6007f6f4c47db7ca096a8d629bc72bb22
2019-08-18 17:12:46 +00:00
Alexander Couzens 5932cd3463 RAN_Adapter: invert check for RAN_ops == omit
The SGSN_Tests.ttcn run into bugs when doing the isvalue() check on a const object.
Check explicit for "omit" to skip creation of the vc_RAN object

Change-Id: I639ab6d0586174c0f20b93a53169f0aa254970fa
2019-08-18 17:12:46 +00:00
Alexander Couzens d7b2950ac1 RAN_Adapter: protect RAN_EMULATION_CTRL with ifdef
Change-Id: I1ff98c933b00a90f54ceedf290121d61d35c6063
2019-08-18 17:12:46 +00:00
Harald Welte 717c730731 RAN_Emulation: Support for PS domain
So far, the RAN_Emulation only supported the CS domain, and not PS. Let's
change that so we can start having IuPS related tests.

Change-Id: I7ba4662e5a7ba31a2582b0c133b3140c8057678f
2019-08-18 17:12:46 +00:00