Commit Graph

4177 Commits

Author SHA1 Message Date
Pau Espin 05eaa1a531 asterisk: Implement and test SIP Digest Authorization
Related: SYS#6782
Change-Id: Ib469f1906927a3f246876040086ff115fbf4c032
2024-04-08 17:36:18 +02:00
Pau Espin 95058fd76c asterisk: Add missing 0-digit prefix in user
Change-Id: Ia12552cf70c4c0f2c71cd9d5b70c608c883fb170
2024-04-05 16:26:32 +02:00
Harald Welte f60044d44b hnbgw: Add TC_ue_register_tmsi_lai for UE Registration without IMSI
Change-Id: I1712a3db791c07767eba10fcea3ce15b898670df
2024-04-04 02:48:16 +02:00
Vadim Yanitskiy 3c88c35912 msc: fix race condition in TC_mm_id_resp_no_identity
This testcase is failing sporadically ever since it was introduced
back in 2019, during 36C3.  The problem is that osmo-msc does not
react to the malformed MM IDENTITY RESPONSE immediately, but only
after timeout of timer X1 (5 seconds, by default);  while the
testsuite expects the LU REJECT to be received within 5 seconds.

We should ideally fix osmo-msc to react immediately, but for now
let's enlarge the LU REJECT waiting timeout in the testcase.

Change-Id: I5d2b5d49df8f7ae1eb12fc137f4256fe6fab9117
Related: OS#6426, OS#4340
2024-04-03 07:53:27 +00:00
Harald Welte af3e21687a hnbgw: Introduce tests about UE registration
We didn't have any test coverage for HNBAP UE registration so far.

Let's start with two basic tests:
* normal / successful case
* abnormal case: UE Register without prior HNB Register

Change-Id: Ice2743d376ab8041646259fa25117d6fd0e8c2fd
2024-04-02 20:22:14 +00:00
Pau Espin 37ee0ed83c Introduce Asterisk_Tests testsuite
Add initial infrastructure to run tests against an Asterisk process.
An not-yet-finished draft test doing registration is submitted to
validate communication towards Asterisk works.

The testsuite will be improved in follow-up commits, but this way other
people can already start using it and we can set up the dockerized setup
+ jenkins jobs to run it nightly.

Related: SYS#6782
Change-Id: I66f776d5df6fb5dc488d9e589b84a6b2385406e8
2024-04-02 08:22:08 +00:00
Pau Espin fb34d863c3 SIP_Templates: Rework templates to make them more extensible
The existing template system in SIP_Templates made it difficult to craft
specific templates, since it was usually skipping several layers of
fields when passing parameters.

This commit reworks some of those templates, adds news templates, and
cleans formatting for others, as a preparation for further work which
will be done when adding Asterisk_Tests testsuite.

Change-Id: Ifd14213e9c2b8f5061f828a63ef47844828d94ea
2024-04-02 08:22:08 +00:00
Pau Espin 6052a342fe SIP: generate seq_nr within allowed range
Change-Id: Iea5f4568af1bd795db57d2b77e82d976edc9e337
2024-04-02 08:22:08 +00:00
Harald Welte 3f216c5cee hnbgw: Qualify RAC/LAI/SAI to RANAP_IEs module
This is in preparation of importing HNBAP_IEs which introduces types of
the same name.

Change-Id: I2fb7ca8dfc2011c727633e795a9d16856825379d
2024-03-29 11:16:18 +00:00
Harald Welte d71d5969ba hnbgw: Rename f_hnbap_register to f_hnbap_hnb_register
There's HNB and UE registration; let's make clear which it is.

Change-Id: I171f0385389c5f50dc7ad28525deef396fff5fbf
2024-03-29 11:16:18 +00:00
Neels Hofmeyr 649eba0456 fix MGCP_Test.TC_one_crcx_loopback_rtp_implicit expectations
osmo-mgw should not respond to unknown peers. The test expected the
wrong thing, because of an old hack for 3G voice. Fix that.

Related: OS#6424
Change-Id: Ibe2ee59d1ed2c25ffef7e8534c172ac190b4983d
2024-03-27 21:16:55 +00:00
Vadim Yanitskiy 4a011fa0db msc: use as_expect_clear() in f_tc_mt_t310()
This testcase is not Iu-compatible yet, but let's make life a bit
easier for those trying to make it such in the future.

Change-Id: I8185153502d31163fcb4c718690ee0f1cc912f5b
2024-03-27 16:55:40 +07:00
Vadim Yanitskiy b3e42cfcdc msc: fix f_tc_mt_crcx_ran_reject(): properly handle Iu-ReleaseCommand
Previous commit [1] uncovers a problem in f_tc_mt_crcx_ran_reject():
this function uses as_clear_cmd_compl_disc(), which is expecting
A-interface (GERAN) specific BSSMAP Clear Command.  The Iu-interface
(UTRAN) specific RANAP Iu-ReleaseCommand is not handled at all.

The testcase was passing so far due to a bug in as_optional_cc_rel(),
which would unblock the alt-statemtnt on receipt of CC RELEASE, so
that we would never respond to RANAP Iu-ReleaseCommand.

Let's derive a new altstep from f_expect_clear() and use it.

Change-Id: Idd679bbf720a56a76cf37ab414b1e6d90e53278b
Related: [1] I0143b4d33b1ebe4cce99c09018540524c4626eec
2024-03-27 16:55:40 +07:00
Vadim Yanitskiy 7093a5d9a2 msc: as_{iu_release,clear_cmd}_compl_disc: remove no-op timer arguments
Change-Id: I1d3dcf4399dccd353702e4d6c53fe8e26e16ea9b
2024-03-27 16:55:40 +07:00
Vadim Yanitskiy d1a32e09ac msc: fix missing 'repeat' in as_optional_cc_rel()
We do activate() this altstep in several testcases, so that it's
kinda "running in background".  In reality, the defaults in TTCN-3
are just a syntax suggar, and the following code:

```
var default foo := activate(as_foo_bar());
alt {
[] PORT1.receive(tr_Msg1) { repeat; }
[] PORT1.receive(tr_Msg2) { setverdict(pass); }
}
PORT2.receive(tr_Msg3);
```

actually evaluates to:

```
alt {
[] PORT1.receive(tr_Msg1) { repeat; }
[] PORT1.receive(tr_Msg2) { setverdict(pass); }
[] as_foo_bar();
}

alt {
[] PORT2.receive(tr_Msg3);
[] as_foo_bar();
}
```

If as_foo_bar() contains no 'repeat' statement, then whenever it
triggers it would efficiently cancel (unblock) the current alt
statement, resulting in weird behavior due to messages not being
dequeued from ports as expected.  And this is exactly what we
saw happening in OS#6414.

Change-Id: I0143b4d33b1ebe4cce99c09018540524c4626eec
Related: OS#6414
2024-03-27 16:55:40 +07:00
Vadim Yanitskiy 42fae8aed4 msc: cosmetic: fix formatting in altsteps
Change-Id: I14afa9aa076396d48043000e350885384bde4c81
2024-03-27 16:55:40 +07:00
Vadim Yanitskiy 5f1018f954 msc: fix f_tc_ho_inter_bsc0(): properly patch n_sd
Assuming n_sd should be 3 is only valid for non-A5 testcases, in which
we are *not* doing ciphering and authentication.  For the A5 testcases
(TC_ho_inter_bsc_a5_*), this assumption is incorrect and osmo-msc is
definitely not happy about that:

  Duplicate DTAP: bin=0, expected n_sd == 0, got 3 (ran_msg.c:159)
  Dropping duplicate message ... (msc_a.c:1363)

Why and how the A5 testcases passed so far?  It was a pure luck, which
sailed away when we started executing ttcn3-msc-test with io_uring.

The A5 testcases were passing thanks to the as_optional_cc_rel() that
gets activate()d in background before calling f_call_hangup().  This
altstep does not have the 'repeat' statement, and as a side effect it
may cancel any normal alt-statements and even standalone receive()
statements.

In the successful scenario, it would cancel (unblock) the following
receive operation in f_call_hangup():

  MNCC.receive(tr_MNCC_REL_ind(cpars.mncc_callref));
  log("f_call_hangup 2: rx MNCC REL ind");
  BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_REL_COMPL(cpars.transaction_id)));
  // ^^^^^^^^^^ as_optional_cc_rel() triggers here and cancels this one

which is a pure luck because our CC RELEASE was sent with incorrect
sequence number and got dropped, so osmo-msc would never send us
CC RELEASE COMPLETE.  It would instead send us CC RELEASE due to
expire of T306, and the as_optional_cc_rel() would kick in handling
this message and responding with CC RELEASE COMPLETE.

In the failing scenario though (when running with io_uring), that
same altstep running in backround may trigger *earlier* and unblock
another standalone receive() statement:

  MNCC.receive(tr_MNCC_REL_ind(cpars.mncc_callref));
  // ^^^^^^^^^ as_optional_cc_rel() triggers here and cancels this one
  log("f_call_hangup 2: rx MNCC REL ind");
  BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_REL_COMPL(cpars.transaction_id)));

so that we will be stuck waiting for CC RELEASE COMPLETE until the
Tguard expires.

This patch fixes n_sd patching, so that our CC RELEASE message is
handled properly and the call gets released as expected, without
requiring as_optional_cc_rel() to kick in.  The missing 'repeat'
is to be added to as_optional_cc_rel() in a follow-up patch.

Change-Id: Iddde391eade716ca5c6c48cb631450ddb543e0d4
Related: OS#6414
2024-03-27 16:55:40 +07:00
Harald Welte 9e8db33f2d [cosmetic] mgw: fix spelling in comments
Change-Id: I2fb69463b070cdc183fff63ee7dc422169f8928a
2024-03-26 15:10:31 +01:00
Harald Welte 5dc20d7417 ggsn: Avoid dynamic test case error
During TC_addr_pool_exhaustion, if all of the pdp context activations
were unsuccessful, teic_list is an empty list. We therefore cannot
unconditionally obtain its first element.

This patch avoids the related "Index overflow in a value of type
@PreGenRecordOf.PREGEN_RECORD_OF_OCTETSTRING: The index is 0, but the
value has only 0 elements."

Related: OS#6423
Change-Id: I7c7a84ed8343fb48e841248f86d37972f4674ed0
2024-03-26 14:35:25 +01:00
Vadim Yanitskiy 33f9eea8af msc: osmo-msc.cfg: move MGW params to 'mgw' node
This fixes deprecation warnings printed by recent osmo-msc.

Change-Id: I724ec44ea37bb61b457361befee3e6e92c886c0d
Related: osmo-mgw.git I95f717a0fcd3c4ca622e3989baa28fac1f7ec1ca
2024-03-25 17:35:32 +00:00
Pau Espin 97f9547c94 Diameter Gy CCR: Expect RATType AVP in PS-Information instead of MSCC
open5gs-smfd was recently modified to send RAT-Type inside
PS-Information instead of MSCC, since having it in the former is
supported since older spec releases and having it in the later creates
problems in some real world OCS implementation like PortaOne OCS.

Related: SYS#6837
Related: open5gs.git d0b31177cca360865ebc6ab0b89eee7ee4fc8d1a,
Related: open5gs.git 3b5e851f5d1328536052031e66a7b9b03c3057f6
Change-Id: I7ce77d08847a0876291f76e901e5c89c339db27d
2024-03-25 12:17:45 +01:00
Harald Welte c1aa231d3a Add funding link to github mirror
see https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository

Change-Id: I2ceef868ae52c52329413a7caeaa3ca00a40b983
2024-03-23 16:58:46 +01:00
Harald Welte 0fc90c622b Add README.md file (to show up in gitea / github / etc.)
Change-Id: Ic176636930e9a36cc428360147140a7339aa58b5
2024-03-23 16:58:41 +01:00
Oliver Smith b856108071 ggsn: add m_ggsn_conf modulepar
Prepare to run the GGSN tests in different configurations:
* v4_only: one APN with v4
* v6_only: one APN with v6
* v4v6_only: one APN with v4v6
* all: multiple APNs with all of the above

Related: OS#6096
Related: docker-playground Ia2fe0c3ed4ccf06e72fd258d085e4a79cecd5f26
Change-Id: I6d94a8b18200fbb2119406827b74b83e912e3ecc
2024-03-22 19:23:28 +00:00
Pau Espin f371375798 sip: Get Rid of private copy of f_mgcp_addr2addrtype()
The function was copied from MGCP_Templates.ttcn since the logic is the
same for SDP, but copied in order to avoid depending on whole MGCP file.
Since now SDP logic has been moved to its own SDP_Templates and a new
f_sdp_addr2addrtype() was added, use that one.

Change-Id: I27ce46b6d23ba0f2704dd0cee290ed519dec278e
2024-03-22 11:28:54 +01:00
Pau Espin 1158cc629c Move SDP templates to its own SDP_Templates.ttcn file
SDP is used in other protocols than MGCP, eg. SIP.

Change-Id: I0610b4cf5533e46a3401c65e60c7cce975c85412
2024-03-22 11:28:51 +01:00
Pau Espin a16a6b667b Move f_addrstr2addr() to library/Misc_Helpers.ttcn
This function can easily be reused in other testsuites supporting both
IPv4 and IPv6 addresses.

Change-Id: I4243ec5551f128629b6504ccc59efeb456a6855d
2024-03-22 11:27:19 +01:00
Pau Espin a907b9f1c9 MGCP_Templates: Avoid extra indenation for most of the whole file
Change-Id: I9338c73db94a1ed3e2945bc40a46573c4a674ba3
2024-03-22 11:27:16 +01:00
Pau Espin 0a228eae76 pgw: Introduce test TC_gy_ccr_update_rejected
This test currently fails because open5gs-smfd is not triggering the
tear down in smf_gy_handle_cca_update_request().

Related: SYS#6845
Change-Id: Ie58ae2a5e870b183fa1c56c90c94f5eee56386e0
2024-03-19 15:56:02 +01:00
Pau Espin 06fba9c8a7 pgw: Set Gy CCA Result-Code based on settings
This allows the test to change the Result-Code being transmitted during
Gy CCA at any time.

Related: SYS#6845
Change-Id: I2c3b1057908c1c76a55c41a7f45728a0fdee3cf0
2024-03-19 13:11:34 +01:00
Pau Espin 9b3d06297d DIAMETER_ts32_299_Templates.ttcn: Define Result codes specified in TS
Change-Id: I6c102e6a10469d0d054cb55f7d2100c8887ab6e0
2024-03-18 21:04:15 +01:00
Pau Espin 819a3b87b7 pgw: Fix typo in comment
Change-Id: Ie768044d9f80cc3837685167d98a1e270d0abde4
2024-03-18 20:35:56 +01:00
Pau Espin aca4c29e72 epdg: TC_hss_initiated_update_user_profile: test SWx PPR -> S6b RAR propagation
Related: OS#6400
Change-Id: I064ee9e18809a507d0185f640b4a972ee5a2ce3f
2024-03-18 17:29:15 +00:00
Pau Espin 93cbc99011 epdg: Introduce test TC_hss_initiated_update_user_profile(_unknown)
This test so far only validates the SWx interface during the procedure.
It can be extended at a later time when implementing propagation of the
procedure to other interfaces in osmo-epdg.

Related: OS#6042
Change-Id: Ic7c19a3fe7b2b1411414fb6b78ab9a665a1aa42b
2024-03-18 17:29:15 +00:00
Vadim Yanitskiy 8f5b61ba52 bts: also test TCH/A[FH]S in TC_speech_no_rtp_tch[fh]
Change-Id: I3c7f91034079169c40c4f20966d9f5fb7c855b27
Related: OS#4823, OS#6049
2024-03-18 16:41:17 +00:00
Vadim Yanitskiy 3d4b001513 bts: dequeue L1CTL {DATA,TRAFFIC}.cnf in as_l1_{sacch,dcch,tcp}_loop()
This fixes sporadic failures in testcases using those altsteps.

Change-Id: I3538d40ff1a585ccbe37f3a90f3c374c5f0b5767
Related: osmocom-bb.git I0046f9c103bcb9207f0c2643c6a806bd56553d77
2024-03-18 16:41:17 +00:00
Vadim Yanitskiy 7e6b832b85 bts: rename as_l1_sacch() -> as_l1_sacch_loop()
For the sake of consistency with as_l1_{dcch,tch}_loop().

Change-Id: I076efac80ae08551c1098a6baa15a2ca99213ee2
2024-03-18 16:41:17 +00:00
Vadim Yanitskiy 3f5b693401 library: add templates for L1CTL_{DATA,TRAFFIC}_CONF
Change-Id: I914555ac8bf2784c14e1b5564b116221ecc7b539
2024-03-18 16:41:17 +00:00
Pau Espin 660cfe5169 epdg: Several fixes to TC_hss_initiated_deregister_permanent_termination
I forgot to submit some fixes before merging.

Fixes: a7823b96cb
Change-Id: Ic4d0d649221d669dee32edeb94b89e95ec1b1c08
2024-03-14 16:53:59 +01:00
Pau Espin a7823b96cb epdg: Introduce test TC_hss_initiated_deregister_permanent_termination
Change-Id: I50daa7a04e0f19dbf987a8baba7a979a353089a3
2024-03-14 11:44:22 +01:00
Pau Espin d9ff19ee73 epdg: Introduce test TC_hss_initiated_deregister_new_server_assigned
Related: OS#6042
Change-Id: Ia5bf7708d11421710f3a88669d94c4f01060cdd6
2024-03-14 11:43:58 +01:00
Pau Espin 36fc368dad hnodeb: Make HNBGW_ConnHdlr component alive
The several components started by HNBGW_ConnHdlr are already marked as
"alive", but not HNBGW_ConnHdlr. As a result, during test tear down, if
eg. Iuh socket receives a message, it may try to send it to the
HNBGW_ConnHdlr component and will error because it was already killed.

Change-Id: Ibc2587db4563d016841d11de628057bffe36b581
2024-03-12 11:23:28 +01:00
Philipp Maier 964533e20d library: add HTTP_Server_Emulation
We already have an HTTP_Adapter, which plays the client role. Now let's
add an HTTP_Server_Emulation, that will allow us to play the server role
as well.

Related: SYS#6563
Change-Id: Ie9a3b31a047b617ae69b7a65e1d69b8d3da863e5
2024-03-11 15:24:31 +01:00
Philipp Maier 08902cf05d library: add SGP.32 and SGP.22 ASN.1 specification, encoder and templates
This patch adds the eUICC related SGP.32 and SGP.22 ASN.1 specification
along with templates and related encoder/decoders (_EncDec.cc).

The collection of templates is not comprehensive, which means that there
are only templates available for a subset needed to implement testcases
for an IPAd.

Related: SYS#6563
Change-Id: I9df8caa98aeb6953a738660a758c92249832d780
2024-03-11 15:03:00 +01:00
Philipp Maier fca4e4f5d5 GTP_Emulation: fix typo
Change-Id: I66685e0e4da97eda2bd5f4573c0994444824993f
2024-03-11 15:03:00 +01:00
Philipp Maier 522905986a PFCP_Emulation: fix typo
Change-Id: I0114aeafb0c4fe821f6b5ea7b264c2a5c055033e
2024-03-11 15:03:00 +01:00
Pau Espin 7ac383b99d epdg: Add expected-results.xml
Change-Id: I73b988220d58c36de99baf43e88ac70f646bbe3a
2024-03-08 19:58:25 +01:00
Pau Espin b8cc610d8b epdg: Introduce test TC_authinfo_fail_resync
Related: OS#6396
Change-Id: I2769d331740324200b4512a154e1321bd5825b04
2024-03-08 19:55:53 +01:00
Pau Espin b81c5da337 GSUP_Templates: tr_GSUP_SAI_ERR: Allow passing extra params like MSG_CLASS
Change-Id: I817b079ed380514e067bda1e7f3f7c6177ef314b
2024-03-07 12:18:28 +00:00
Vadim Yanitskiy 7b541af164 stp: fix -latest: add missing f_osmo_repo_is() checks
Change-Id: I9b00d3a72c5a2ad669dbaef65eec792a4c91785d
Related: SYS#5424
2024-03-07 12:09:22 +00:00